haskell-src-exts 1.11.1 → 1.24.0
raw patch · 1234 files changed
Files
- CHANGELOG +736/−286
- README.md +48/−0
- RELEASENOTES-1.17.0 +35/−0
- Setup.hs +1/−7
- Test/Runner.hs +0/−74
- Test/examples/ArrowLayout.hs +0/−7
- Test/examples/Attributes.hs +0/−2181
- Test/examples/BangPatterns.hs +0/−8
- Test/examples/Bug.hs +0/−2
- Test/examples/ByteStringUtils.hs +0/−541
- Test/examples/CParser.hs +0/−6323
- Test/examples/ClassInstType.hs +0/−17
- Test/examples/DataHeadParen.hs +0/−4
- Test/examples/Directory.hs +0/−913
- Test/examples/EmptyAnn.hs +0/−1
- Test/examples/EmptyContext.hs +0/−1
- Test/examples/EmptyInstance.hs +0/−4
- Test/examples/EmptyList.hs +0/−3
- Test/examples/Ex1.hs +0/−1
- Test/examples/FamilyKindSig.hs +0/−4
- Test/examples/FixityTests.hs +0/−3
- Test/examples/ForeignImport.hs +0/−2
- Test/examples/GadtDeriving.hs +0/−5
- Test/examples/GenericTree.hs +0/−7
- Test/examples/GhcDeriving.hs +0/−4
- Test/examples/GroupKeyword.hs +0/−4
- Test/examples/HappyDoAction.hs +0/−30
- Test/examples/HaskellParser.hs +0/−16
- Test/examples/HexPrec.hs +0/−6
- Test/examples/Hyphen.hs +0/−2
- Test/examples/ImportSymbol.hs +0/−1
- Test/examples/IndentedWhere.hs +0/−4
- Test/examples/InfixParser.hs +0/−6
- Test/examples/LanguagePragma.hs +0/−1
- Test/examples/LineOptionsPragma.hs +0/−3
- Test/examples/LinePragma.hs +0/−5
- Test/examples/ListComp1.hs +0/−1
- Test/examples/MagicHash.hs +0/−12
- Test/examples/MultiCtxt.hs +0/−6
- Test/examples/NPlusK.hs +0/−2
- Test/examples/NestedAsPat.hs +0/−3
- Test/examples/PackageImport.hs +0/−5
- Test/examples/ParenFunBind.hs +0/−3
- Test/examples/Pragma.hs +0/−7
- Test/examples/QualifiedDot.hs +0/−3
- Test/examples/QuasiQuoteLines.hs +0/−12
- Test/examples/Rank2Types.hs +0/−4
- Test/examples/ReadP.hs +0/−2
- Test/examples/RealGHC.lhs +0/−913
- Test/examples/RealHSE.hs +0/−898
- Test/examples/RealHoogle.hs +0/−254
- Test/examples/RealTagSoup.hs +0/−395
- Test/examples/RecordInfixSelector.hs +0/−3
- Test/examples/RecordWildcards.hs +0/−5
- Test/examples/RelaxedDo.hs +0/−13
- Test/examples/SCCPragmas.hs +0/−3
- Test/examples/ScopedTypeVariables.hs +0/−12
- Test/examples/SimpleDeriving.hs +0/−1
- Test/examples/SingleClassAsst.hs +0/−4
- Test/examples/SpecializeInstance.hs +0/−4
- Test/examples/Testing.hs +0/−2
- Test/examples/TupleSections.hs +0/−3
- Test/examples/TypeFunctions.hs +0/−7
- Test/examples/TypeOperatorsTest.hs +0/−4
- Test/examples/Unicode.hs +0/−118
- Test/examples/UnicodeSyntax.hs +0/−12
- Test/examples/UnindentedPragmaClose.hs +0/−4
- Test/examples/WhereBlock.hs +0/−3
- Test/examples/WithKeyword.hs +0/−1
- Test/failing.txt +0/−3
- Test/printFail.txt +0/−3
- dist/build/Language/Haskell/Exts/InternalParser.hs +0/−8095
- haskell-src-exts.cabal +71/−112
- src/Language/Haskell/Exts.hs +101/−35
- src/Language/Haskell/Exts/Annotated.hs +0/−124
- src/Language/Haskell/Exts/Annotated/Build.hs +0/−290
- src/Language/Haskell/Exts/Annotated/ExactPrint.hs +0/−1731
- src/Language/Haskell/Exts/Annotated/Fixity.hs +0/−341
- src/Language/Haskell/Exts/Annotated/Simplify.hs +0/−520
- src/Language/Haskell/Exts/Annotated/Syntax.hs +0/−2225
- src/Language/Haskell/Exts/Build.hs +143/−139
- src/Language/Haskell/Exts/Comments.hs +189/−20
- src/Language/Haskell/Exts/ExactPrint.hs +2219/−0
- src/Language/Haskell/Exts/ExtScheme.hs +39/−37
- src/Language/Haskell/Exts/Extension.hs +750/−246
- src/Language/Haskell/Exts/Fixity.hs +450/−398
- src/Language/Haskell/Exts/InternalLexer.hs +1497/−0
- src/Language/Haskell/Exts/InternalParser.ly +2272/−1826
- src/Language/Haskell/Exts/Lexer.hs +47/−1283
- src/Language/Haskell/Exts/ParseMonad.hs +232/−96
- src/Language/Haskell/Exts/ParseSyntax.hs +385/−440
- src/Language/Haskell/Exts/ParseUtils.hs +609/−242
- src/Language/Haskell/Exts/Parser.hs +259/−174
- src/Language/Haskell/Exts/Pretty.hs +1717/−1649
- src/Language/Haskell/Exts/SrcLoc.hs +194/−173
- src/Language/Haskell/Exts/Syntax.hs +1952/−1000
- src/Language/Preprocessor/Unlit.hs +72/−0
- tests/Extensions.hs +53/−0
- tests/Runner.hs +189/−0
- tests/examples/AmbiguousFixities.hs +1/−0
- tests/examples/AmbiguousFixities.hs.exactprinter.golden +1/−0
- tests/examples/AmbiguousFixities.hs.parser.golden +1/−0
- tests/examples/AmbiguousFixities.hs.prettyparser.golden +1/−0
- tests/examples/AmbiguousFixities.hs.prettyprinter.golden +1/−0
- tests/examples/ArityMismatch.hs +7/−0
- tests/examples/ArityMismatch.hs.exactprinter.golden +1/−0
- tests/examples/ArityMismatch.hs.parser.golden +3/−0
- tests/examples/ArityMismatch.hs.prettyparser.golden +1/−0
- tests/examples/ArityMismatch.hs.prettyprinter.golden +1/−0
- tests/examples/ArrowBrackets.hs +8/−0
- tests/examples/ArrowBrackets.hs.exactprinter.golden +1/−0
- tests/examples/ArrowBrackets.hs.parser.golden +541/−0
- tests/examples/ArrowBrackets.hs.prettyparser.golden +1/−0
- tests/examples/ArrowBrackets.hs.prettyprinter.golden +7/−0
- tests/examples/ArrowLayout.hs +7/−0
- tests/examples/ArrowLayout.hs.exactprinter.golden +1/−0
- tests/examples/ArrowLayout.hs.parser.golden +338/−0
- tests/examples/ArrowLayout.hs.prettyparser.golden +1/−0
- tests/examples/ArrowLayout.hs.prettyprinter.golden +7/−0
- tests/examples/AtOperator.hs +8/−0
- tests/examples/AtOperator.hs.exactprinter.golden +1/−0
- tests/examples/AtOperator.hs.parser.golden +291/−0
- tests/examples/AtOperator.hs.prettyparser.golden +1/−0
- tests/examples/AtOperator.hs.prettyprinter.golden +6/−0
- tests/examples/AtSign.hs +17/−0
- tests/examples/AtSign.hs.exactprinter.golden +1/−0
- tests/examples/AtSign.hs.parser.golden +591/−0
- tests/examples/AtSign.hs.prettyparser.golden +1/−0
- tests/examples/AtSign.hs.prettyprinter.golden +9/−0
- tests/examples/Attributes.hs +2181/−0
- tests/examples/Attributes.hs.exactprinter.golden +1/−0
- tests/examples/Attributes.hs.parser.golden too large to diff
- tests/examples/Attributes.hs.prettyparser.golden +1/−0
- tests/examples/Attributes.hs.prettyprinter.golden +1718/−0
- tests/examples/BadStringLineBreak.hs +5/−0
- tests/examples/BadStringLineBreak.hs.exactprinter.golden +1/−0
- tests/examples/BadStringLineBreak.hs.parser.golden +3/−0
- tests/examples/BadStringLineBreak.hs.prettyparser.golden +1/−0
- tests/examples/BadStringLineBreak.hs.prettyprinter.golden +1/−0
- tests/examples/BangPatterns.hs +8/−0
- tests/examples/BangPatterns.hs.exactprinter.golden +1/−0
- tests/examples/BangPatterns.hs.parser.golden +768/−0
- tests/examples/BangPatterns.hs.prettyparser.golden +1/−0
- tests/examples/BangPatterns.hs.prettyprinter.golden +9/−0
- tests/examples/BangViewPat.hs +2/−0
- tests/examples/BangViewPat.hs.exactprinter.golden +1/−0
- tests/examples/BangViewPat.hs.parser.golden +129/−0
- tests/examples/BangViewPat.hs.prettyparser.golden +1/−0
- tests/examples/BangViewPat.hs.prettyprinter.golden +2/−0
- tests/examples/BinaryLiteralsBad.hs +4/−0
- tests/examples/BinaryLiteralsBad.hs.exactprinter.golden +1/−0
- tests/examples/BinaryLiteralsBad.hs.parser.golden +3/−0
- tests/examples/BinaryLiteralsBad.hs.prettyparser.golden +1/−0
- tests/examples/BinaryLiteralsBad.hs.prettyprinter.golden +1/−0
- tests/examples/BinaryLiteralsGood.hs +23/−0
- tests/examples/BinaryLiteralsGood.hs.exactprinter.golden +1/−0
- tests/examples/BinaryLiteralsGood.hs.parser.golden +1539/−0
- tests/examples/BinaryLiteralsGood.hs.prettyparser.golden +10/−0
- tests/examples/BinaryLiteralsGood.hs.prettyprinter.golden +13/−0
- tests/examples/BlockArguments.hs +16/−0
- tests/examples/BlockArguments.hs.exactprinter.golden +1/−0
- tests/examples/BlockArguments.hs.parser.golden +1099/−0
- tests/examples/BlockArguments.hs.prettyparser.golden +10/−0
- tests/examples/BlockArguments.hs.prettyprinter.golden +15/−0
- tests/examples/BracketInstanceHead.hs +1/−0
- tests/examples/BracketInstanceHead.hs.exactprinter.golden +1/−0
- tests/examples/BracketInstanceHead.hs.parser.golden +151/−0
- tests/examples/BracketInstanceHead.hs.prettyparser.golden +1/−0
- tests/examples/BracketInstanceHead.hs.prettyprinter.golden +1/−0
- tests/examples/Bug.hs +2/−0
- tests/examples/Bug.hs.exactprinter.golden +1/−0
- tests/examples/Bug.hs.parser.golden +42/−0
- tests/examples/Bug.hs.prettyparser.golden +1/−0
- tests/examples/Bug.hs.prettyprinter.golden +1/−0
- tests/examples/Bundles.hs +4/−0
- tests/examples/Bundles.hs.exactprinter.golden +1/−0
- tests/examples/Bundles.hs.parser.golden +252/−0
- tests/examples/Bundles.hs.prettyparser.golden +1/−0
- tests/examples/Bundles.hs.prettyprinter.golden +4/−0
- tests/examples/ByteStringUtils.hs +541/−0
- tests/examples/ByteStringUtils.hs.exactprinter.golden +1/−0
- tests/examples/ByteStringUtils.hs.parser.golden too large to diff
- tests/examples/ByteStringUtils.hs.prettyparser.golden +10/−0
- tests/examples/ByteStringUtils.hs.prettyprinter.golden +384/−0
- tests/examples/CApiFFI.hs +3/−0
- tests/examples/CApiFFI.hs.exactprinter.golden +1/−0
- tests/examples/CApiFFI.hs.parser.golden +72/−0
- tests/examples/CApiFFI.hs.prettyparser.golden +1/−0
- tests/examples/CApiFFI.hs.prettyprinter.golden +2/−0
- tests/examples/CStyleLinePragmas.hs +2/−0
- tests/examples/CStyleLinePragmas.hs.exactprinter.golden +1/−0
- tests/examples/CStyleLinePragmas.hs.parser.golden +2/−0
- tests/examples/CStyleLinePragmas.hs.prettyparser.golden +1/−0
- tests/examples/CStyleLinePragmas.hs.prettyprinter.golden +1/−0
- tests/examples/ClassContext.hs +2/−0
- tests/examples/ClassContext.hs.exactprinter.golden +1/−0
- tests/examples/ClassContext.hs.parser.golden +228/−0
- tests/examples/ClassContext.hs.prettyparser.golden +1/−0
- tests/examples/ClassContext.hs.prettyprinter.golden +2/−0
- tests/examples/ClassDeclSrcSpan.hs +6/−0
- tests/examples/ClassDeclSrcSpan.hs.exactprinter.golden +1/−0
- tests/examples/ClassDeclSrcSpan.hs.parser.golden +204/−0
- tests/examples/ClassDeclSrcSpan.hs.prettyparser.golden +1/−0
- tests/examples/ClassDeclSrcSpan.hs.prettyprinter.golden +5/−0
- tests/examples/ClassInstType.hs +17/−0
- tests/examples/ClassInstType.hs.exactprinter.golden +1/−0
- tests/examples/ClassInstType.hs.parser.golden +1420/−0
- tests/examples/ClassInstType.hs.prettyparser.golden +1/−0
- tests/examples/ClassInstType.hs.prettyprinter.golden +19/−0
- tests/examples/ClosedTypeFamily.hs +8/−0
- tests/examples/ClosedTypeFamily.hs.exactprinter.golden +1/−0
- tests/examples/ClosedTypeFamily.hs.parser.golden +293/−0
- tests/examples/ClosedTypeFamily.hs.prettyparser.golden +1/−0
- tests/examples/ClosedTypeFamily.hs.prettyprinter.golden +6/−0
- tests/examples/Completesig03A.hs +6/−0
- tests/examples/Completesig03A.hs.exactprinter.golden +1/−0
- tests/examples/Completesig03A.hs.parser.golden +123/−0
- tests/examples/Completesig03A.hs.prettyparser.golden +1/−0
- tests/examples/Completesig03A.hs.prettyprinter.golden +6/−0
- tests/examples/ConstraintKinds.hs +10/−0
- tests/examples/ConstraintKinds.hs.exactprinter.golden +1/−0
- tests/examples/ConstraintKinds.hs.parser.golden +493/−0
- tests/examples/ConstraintKinds.hs.prettyparser.golden +1/−0
- tests/examples/ConstraintKinds.hs.prettyprinter.golden +12/−0
- tests/examples/ConstraintKinds2.hs +6/−0
- tests/examples/ConstraintKinds2.hs.exactprinter.golden +1/−0
- tests/examples/ConstraintKinds2.hs.parser.golden +216/−0
- tests/examples/ConstraintKinds2.hs.prettyparser.golden +1/−0
- tests/examples/ConstraintKinds2.hs.prettyprinter.golden +6/−0
- tests/examples/ConstraintKinds3.hs +7/−0
- tests/examples/ConstraintKinds3.hs.exactprinter.golden +1/−0
- tests/examples/ConstraintKinds3.hs.parser.golden +246/−0
- tests/examples/ConstraintKinds3.hs.prettyparser.golden +1/−0
- tests/examples/ConstraintKinds3.hs.prettyprinter.golden +5/−0
- tests/examples/ConstructorAndClassOperators.hs +5/−0
- tests/examples/ConstructorAndClassOperators.hs.exactprinter.golden +6/−0
- tests/examples/ConstructorAndClassOperators.hs.parser.golden +354/−0
- tests/examples/ConstructorAndClassOperators.hs.prettyparser.golden +1/−0
- tests/examples/ConstructorAndClassOperators.hs.prettyprinter.golden +5/−0
- tests/examples/ContextOrdering.hs +5/−0
- tests/examples/ContextOrdering.hs.exactprinter.golden +1/−0
- tests/examples/ContextOrdering.hs.parser.golden +208/−0
- tests/examples/ContextOrdering.hs.prettyparser.golden +1/−0
- tests/examples/ContextOrdering.hs.prettyprinter.golden +5/−0
- tests/examples/CxtWhitespace.hs +6/−0
- tests/examples/CxtWhitespace.hs.exactprinter.golden +1/−0
- tests/examples/CxtWhitespace.hs.parser.golden +268/−0
- tests/examples/CxtWhitespace.hs.prettyparser.golden +1/−0
- tests/examples/CxtWhitespace.hs.prettyprinter.golden +3/−0
- tests/examples/DataHeadParen.hs +4/−0
- tests/examples/DataHeadParen.hs.exactprinter.golden +1/−0
- tests/examples/DataHeadParen.hs.parser.golden +129/−0
- tests/examples/DataHeadParen.hs.prettyparser.golden +1/−0
- tests/examples/DataHeadParen.hs.prettyprinter.golden +4/−0
- tests/examples/DataKinds.hs +34/−0
- tests/examples/DataKinds.hs.exactprinter.golden +1/−0
- tests/examples/DataKinds.hs.parser.golden +1523/−0
- tests/examples/DataKinds.hs.prettyparser.golden +1/−0
- tests/examples/DataKinds.hs.prettyprinter.golden +30/−0
- tests/examples/DataKinds2.hs +9/−0
- tests/examples/DataKinds2.hs.exactprinter.golden +1/−0
- tests/examples/DataKinds2.hs.parser.golden +283/−0
- tests/examples/DataKinds2.hs.prettyparser.golden +1/−0
- tests/examples/DataKinds2.hs.prettyprinter.golden +9/−0
- tests/examples/DefaultSignatures.hs +5/−0
- tests/examples/DefaultSignatures.hs.exactprinter.golden +1/−0
- tests/examples/DefaultSignatures.hs.parser.golden +441/−0
- tests/examples/DefaultSignatures.hs.prettyparser.golden +1/−0
- tests/examples/DefaultSignatures.hs.prettyprinter.golden +7/−0
- tests/examples/DeriveGeneric.hs +4/−0
- tests/examples/DeriveGeneric.hs.exactprinter.golden +1/−0
- tests/examples/DeriveGeneric.hs.parser.golden +239/−0
- tests/examples/DeriveGeneric.hs.prettyparser.golden +1/−0
- tests/examples/DeriveGeneric.hs.prettyprinter.golden +5/−0
- tests/examples/DerivingParen.hs +2/−0
- tests/examples/DerivingParen.hs.exactprinter.golden +1/−0
- tests/examples/DerivingParen.hs.parser.golden +177/−0
- tests/examples/DerivingParen.hs.prettyparser.golden +1/−0
- tests/examples/DerivingParen.hs.prettyprinter.golden +3/−0
- tests/examples/DerivingStrategies.hs +18/−0
- tests/examples/DerivingStrategies.hs.exactprinter.golden +1/−0
- tests/examples/DerivingStrategies.hs.parser.golden +849/−0
- tests/examples/DerivingStrategies.hs.prettyparser.golden +1/−0
- tests/examples/DerivingStrategies.hs.prettyprinter.golden +21/−0
- tests/examples/DerivingVia.hs +459/−0
- tests/examples/DerivingVia.hs.exactprinter.golden +460/−0
- tests/examples/DerivingVia.hs.parser.golden +32882/−0
- tests/examples/DerivingVia.hs.prettyparser.golden +1/−0
- tests/examples/DerivingVia.hs.prettyprinter.golden +418/−0
- tests/examples/DerivingVia2.hs +41/−0
- tests/examples/DerivingVia2.hs.exactprinter.golden +42/−0
- tests/examples/DerivingVia2.hs.parser.golden +2346/−0
- tests/examples/DerivingVia2.hs.prettyparser.golden +1/−0
- tests/examples/DerivingVia2.hs.prettyprinter.golden +47/−0
- tests/examples/DerivingViaStealing.hs +5/−0
- tests/examples/DerivingViaStealing.hs.exactprinter.golden +1/−0
- tests/examples/DerivingViaStealing.hs.parser.golden +201/−0
- tests/examples/DerivingViaStealing.hs.prettyparser.golden +1/−0
- tests/examples/DerivingViaStealing.hs.prettyprinter.golden +4/−0
- tests/examples/Directory.hs +913/−0
- tests/examples/Directory.hs.exactprinter.golden +1/−0
- tests/examples/Directory.hs.parser.golden +29264/−0
- tests/examples/Directory.hs.prettyparser.golden +1/−0
- tests/examples/Directory.hs.prettyprinter.golden +324/−0
- tests/examples/DoRec.hs +4/−0
- tests/examples/DoRec.hs.exactprinter.golden +1/−0
- tests/examples/DoRec.hs.parser.golden +177/−0
- tests/examples/DoRec.hs.prettyparser.golden +1/−0
- tests/examples/DoRec.hs.prettyprinter.golden +4/−0
- tests/examples/DoubleHashOp.hs +12/−0
- tests/examples/DoubleHashOp.hs.exactprinter.golden +1/−0
- tests/examples/DoubleHashOp.hs.parser.golden +317/−0
- tests/examples/DoubleHashOp.hs.prettyparser.golden +1/−0
- tests/examples/DoubleHashOp.hs.prettyprinter.golden +8/−0
- tests/examples/DsStrictData.hs +48/−0
- tests/examples/DsStrictData.hs.exactprinter.golden +1/−0
- tests/examples/DsStrictData.hs.parser.golden +3591/−0
- tests/examples/DsStrictData.hs.prettyparser.golden +1/−0
- tests/examples/DsStrictData.hs.prettyprinter.golden +45/−0
- tests/examples/EmptyAnn.hs +1/−0
- tests/examples/EmptyAnn.hs.exactprinter.golden +1/−0
- tests/examples/EmptyAnn.hs.parser.golden +49/−0
- tests/examples/EmptyAnn.hs.prettyparser.golden +1/−0
- tests/examples/EmptyAnn.hs.prettyprinter.golden +1/−0
- tests/examples/EmptyCase.hs +6/−0
- tests/examples/EmptyCase.hs.exactprinter.golden +1/−0
- tests/examples/EmptyCase.hs.parser.golden +159/−0
- tests/examples/EmptyCase.hs.prettyparser.golden +1/−0
- tests/examples/EmptyCase.hs.prettyprinter.golden +4/−0
- tests/examples/EmptyContext.hs +1/−0
- tests/examples/EmptyContext.hs.exactprinter.golden +1/−0
- tests/examples/EmptyContext.hs.parser.golden +79/−0
- tests/examples/EmptyContext.hs.prettyparser.golden +1/−0
- tests/examples/EmptyContext.hs.prettyprinter.golden +1/−0
- tests/examples/EmptyFunDepPremise.hs +4/−0
- tests/examples/EmptyFunDepPremise.hs.exactprinter.golden +1/−0
- tests/examples/EmptyFunDepPremise.hs.parser.golden +115/−0
- tests/examples/EmptyFunDepPremise.hs.prettyparser.golden +1/−0
- tests/examples/EmptyFunDepPremise.hs.prettyprinter.golden +4/−0
- tests/examples/EmptyInstance.hs +4/−0
- tests/examples/EmptyInstance.hs.exactprinter.golden +1/−0
- tests/examples/EmptyInstance.hs.parser.golden +141/−0
- tests/examples/EmptyInstance.hs.prettyparser.golden +1/−0
- tests/examples/EmptyInstance.hs.prettyprinter.golden +4/−0
- tests/examples/EmptyList.hs +3/−0
- tests/examples/EmptyList.hs.exactprinter.golden +1/−0
- tests/examples/EmptyList.hs.parser.golden +65/−0
- tests/examples/EmptyList.hs.prettyparser.golden +1/−0
- tests/examples/EmptyList.hs.prettyprinter.golden +2/−0
- tests/examples/EmptyWhere.hs +1/−0
- tests/examples/EmptyWhere.hs.exactprinter.golden +1/−0
- tests/examples/EmptyWhere.hs.parser.golden +64/−0
- tests/examples/EmptyWhere.hs.prettyparser.golden +1/−0
- tests/examples/EmptyWhere.hs.prettyprinter.golden +2/−0
- tests/examples/EqualityConstraints1.hs +5/−0
- tests/examples/EqualityConstraints1.hs.exactprinter.golden +1/−0
- tests/examples/EqualityConstraints1.hs.parser.golden +178/−0
- tests/examples/EqualityConstraints1.hs.prettyparser.golden +1/−0
- tests/examples/EqualityConstraints1.hs.prettyprinter.golden +4/−0
- tests/examples/EqualityConstraints2.hs +2/−0
- tests/examples/EqualityConstraints2.hs.exactprinter.golden +1/−0
- tests/examples/EqualityConstraints2.hs.parser.golden +3/−0
- tests/examples/EqualityConstraints2.hs.prettyparser.golden +1/−0
- tests/examples/EqualityConstraints2.hs.prettyprinter.golden +1/−0
- tests/examples/ExplicitNamespaces1.hs +4/−0
- tests/examples/ExplicitNamespaces1.hs.exactprinter.golden +1/−0
- tests/examples/ExplicitNamespaces1.hs.parser.golden +237/−0
- tests/examples/ExplicitNamespaces1.hs.prettyparser.golden +1/−0
- tests/examples/ExplicitNamespaces1.hs.prettyprinter.golden +4/−0
- tests/examples/ExplicitNamespaces2.hs +4/−0
- tests/examples/ExplicitNamespaces2.hs.exactprinter.golden +1/−0
- tests/examples/ExplicitNamespaces2.hs.parser.golden +164/−0
- tests/examples/ExplicitNamespaces2.hs.prettyparser.golden +1/−0
- tests/examples/ExplicitNamespaces2.hs.prettyprinter.golden +3/−0
- tests/examples/ExplicitNamespaces3.hs +5/−0
- tests/examples/ExplicitNamespaces3.hs.exactprinter.golden +1/−0
- tests/examples/ExplicitNamespaces3.hs.parser.golden +145/−0
- tests/examples/ExplicitNamespaces3.hs.prettyparser.golden +1/−0
- tests/examples/ExplicitNamespaces3.hs.prettyprinter.golden +4/−0
- tests/examples/ExplicitNamespaces4.hs +5/−0
- tests/examples/ExplicitNamespaces4.hs.exactprinter.golden +6/−0
- tests/examples/ExplicitNamespaces4.hs.parser.golden +171/−0
- tests/examples/ExplicitNamespaces4.hs.prettyparser.golden +1/−0
- tests/examples/ExplicitNamespaces4.hs.prettyprinter.golden +5/−0
- tests/examples/ExprHole.hs +10/−0
- tests/examples/ExprHole.hs.exactprinter.golden +1/−0
- tests/examples/ExprHole.hs.parser.golden +260/−0
- tests/examples/ExprHole.hs.prettyparser.golden +1/−0
- tests/examples/ExprHole.hs.prettyprinter.golden +5/−0
- tests/examples/ExtraEndBrace.hs +3/−0
- tests/examples/ExtraEndBrace.hs.exactprinter.golden +1/−0
- tests/examples/ExtraEndBrace.hs.parser.golden +2/−0
- tests/examples/ExtraEndBrace.hs.prettyparser.golden +1/−0
- tests/examples/ExtraEndBrace.hs.prettyprinter.golden +1/−0
- tests/examples/ExtraPrettyParentheses.hs +9/−0
- tests/examples/ExtraPrettyParentheses.hs.exactprinter.golden +1/−0
- tests/examples/ExtraPrettyParentheses.hs.parser.golden +480/−0
- tests/examples/ExtraPrettyParentheses.hs.prettyparser.golden +10/−0
- tests/examples/ExtraPrettyParentheses.hs.prettyprinter.golden +4/−0
- tests/examples/FFIExtensions.hs +7/−0
- tests/examples/FFIExtensions.hs.exactprinter.golden +1/−0
- tests/examples/FFIExtensions.hs.parser.golden +234/−0
- tests/examples/FFIExtensions.hs.prettyparser.golden +1/−0
- tests/examples/FFIExtensions.hs.prettyprinter.golden +8/−0
- tests/examples/FFIInterruptible.hs +3/−0
- tests/examples/FFIInterruptible.hs.exactprinter.golden +1/−0
- tests/examples/FFIInterruptible.hs.parser.golden +83/−0
- tests/examples/FFIInterruptible.hs.prettyparser.golden +1/−0
- tests/examples/FFIInterruptible.hs.prettyprinter.golden +2/−0
- tests/examples/FamilyKindSig.hs +4/−0
- tests/examples/FamilyKindSig.hs.exactprinter.golden +1/−0
- tests/examples/FamilyKindSig.hs.parser.golden +107/−0
- tests/examples/FamilyKindSig.hs.prettyparser.golden +1/−0
- tests/examples/FamilyKindSig.hs.prettyprinter.golden +4/−0
- tests/examples/FamilyVarid.hs +4/−0
- tests/examples/FamilyVarid.hs.exactprinter.golden +1/−0
- tests/examples/FamilyVarid.hs.parser.golden +113/−0
- tests/examples/FamilyVarid.hs.prettyparser.golden +1/−0
- tests/examples/FamilyVarid.hs.prettyprinter.golden +3/−0
- tests/examples/Fixity2.hs +3/−0
- tests/examples/Fixity2.hs.exactprinter.golden +1/−0
- tests/examples/Fixity2.hs.parser.golden +297/−0
- tests/examples/Fixity2.hs.prettyparser.golden +1/−0
- tests/examples/Fixity2.hs.prettyprinter.golden +4/−0
- tests/examples/Fixity3.hs +5/−0
- tests/examples/Fixity3.hs.exactprinter.golden +1/−0
- tests/examples/Fixity3.hs.parser.golden +466/−0
- tests/examples/Fixity3.hs.prettyparser.golden +1/−0
- tests/examples/Fixity3.hs.prettyprinter.golden +5/−0
- tests/examples/FixityTests.hs +3/−0
- tests/examples/FixityTests.hs.exactprinter.golden +1/−0
- tests/examples/FixityTests.hs.parser.golden +343/−0
- tests/examples/FixityTests.hs.prettyparser.golden +1/−0
- tests/examples/FixityTests.hs.prettyprinter.golden +5/−0
- tests/examples/FlexibleContextsWithoutVars.hs +3/−0
- tests/examples/FlexibleContextsWithoutVars.hs.exactprinter.golden +1/−0
- tests/examples/FlexibleContextsWithoutVars.hs.parser.golden +187/−0
- tests/examples/FlexibleContextsWithoutVars.hs.prettyparser.golden +1/−0
- tests/examples/FlexibleContextsWithoutVars.hs.prettyprinter.golden +4/−0
- tests/examples/ForallInInstance.hs +4/−0
- tests/examples/ForallInInstance.hs.exactprinter.golden +1/−0
- tests/examples/ForallInInstance.hs.parser.golden +195/−0
- tests/examples/ForallInInstance.hs.prettyparser.golden +1/−0
- tests/examples/ForallInInstance.hs.prettyprinter.golden +4/−0
- tests/examples/ForeignImport.hs +4/−0
- tests/examples/ForeignImport.hs.exactprinter.golden +1/−0
- tests/examples/ForeignImport.hs.parser.golden +212/−0
- tests/examples/ForeignImport.hs.prettyparser.golden +1/−0
- tests/examples/ForeignImport.hs.prettyprinter.golden +2/−0
- tests/examples/ForeignImportJavascript.hs +4/−0
- tests/examples/ForeignImportJavascript.hs.exactprinter.golden +1/−0
- tests/examples/ForeignImportJavascript.hs.parser.golden +166/−0
- tests/examples/ForeignImportJavascript.hs.prettyparser.golden +1/−0
- tests/examples/ForeignImportJavascript.hs.prettyprinter.golden +4/−0
- tests/examples/GADTRecord.hs +4/−0
- tests/examples/GADTRecord.hs.exactprinter.golden +1/−0
- tests/examples/GADTRecord.hs.parser.golden +128/−0
- tests/examples/GADTRecord.hs.prettyparser.golden +1/−0
- tests/examples/GADTRecord.hs.prettyprinter.golden +4/−0
- tests/examples/GADTRecord2.hs +4/−0
- tests/examples/GADTRecord2.hs.exactprinter.golden +1/−0
- tests/examples/GADTRecord2.hs.parser.golden +137/−0
- tests/examples/GADTRecord2.hs.prettyparser.golden +1/−0
- tests/examples/GADTRecord2.hs.prettyprinter.golden +4/−0
- tests/examples/GadtDeriving.hs +5/−0
- tests/examples/GadtDeriving.hs.exactprinter.golden +1/−0
- tests/examples/GadtDeriving.hs.parser.golden +199/−0
- tests/examples/GadtDeriving.hs.prettyparser.golden +1/−0
- tests/examples/GadtDeriving.hs.prettyprinter.golden +5/−0
- tests/examples/GadtRecordFields.hs +5/−0
- tests/examples/GadtRecordFields.hs.exactprinter.golden +1/−0
- tests/examples/GadtRecordFields.hs.parser.golden +217/−0
- tests/examples/GadtRecordFields.hs.prettyparser.golden +1/−0
- tests/examples/GadtRecordFields.hs.prettyprinter.golden +5/−0
- tests/examples/GadtStrictness.hs +4/−0
- tests/examples/GadtStrictness.hs.exactprinter.golden +1/−0
- tests/examples/GadtStrictness.hs.parser.golden +135/−0
- tests/examples/GadtStrictness.hs.prettyparser.golden +1/−0
- tests/examples/GadtStrictness.hs.prettyprinter.golden +4/−0
- tests/examples/GenericTree.hs +7/−0
- tests/examples/GenericTree.hs.exactprinter.golden +1/−0
- tests/examples/GenericTree.hs.parser.golden +479/−0
- tests/examples/GenericTree.hs.prettyparser.golden +1/−0
- tests/examples/GenericTree.hs.prettyprinter.golden +8/−0
- tests/examples/GhcDeriving.hs +4/−0
- tests/examples/GhcDeriving.hs.exactprinter.golden +1/−0
- tests/examples/GhcDeriving.hs.parser.golden +271/−0
- tests/examples/GhcDeriving.hs.prettyparser.golden +1/−0
- tests/examples/GhcDeriving.hs.prettyprinter.golden +2/−0
- tests/examples/GroupKeyword.hs +4/−0
- tests/examples/GroupKeyword.hs.exactprinter.golden +1/−0
- tests/examples/GroupKeyword.hs.parser.golden +210/−0
- tests/examples/GroupKeyword.hs.prettyparser.golden +1/−0
- tests/examples/GroupKeyword.hs.prettyprinter.golden +2/−0
- tests/examples/HaddockComments.hs +56/−0
- tests/examples/HaddockComments.hs.exactprinter.golden +1/−0
- tests/examples/HaddockComments.hs.parser.golden +983/−0
- tests/examples/HaddockComments.hs.prettyparser.golden +1/−0
- tests/examples/HaddockComments.hs.prettyprinter.golden +20/−0
- tests/examples/HappyDoAction.hs +30/−0
- tests/examples/HappyDoAction.hs.exactprinter.golden +1/−0
- tests/examples/HappyDoAction.hs.parser.golden +2443/−0
- tests/examples/HappyDoAction.hs.prettyparser.golden +1/−0
- tests/examples/HappyDoAction.hs.prettyprinter.golden +20/−0
- tests/examples/HashOperator.hs +6/−0
- tests/examples/HashOperator.hs.exactprinter.golden +1/−0
- tests/examples/HashOperator.hs.parser.golden +237/−0
- tests/examples/HashOperator.hs.prettyparser.golden +1/−0
- tests/examples/HashOperator.hs.prettyprinter.golden +6/−0
- tests/examples/HaskellParser.hs +16/−0
- tests/examples/HaskellParser.hs.exactprinter.golden +1/−0
- tests/examples/HaskellParser.hs.parser.golden +809/−0
- tests/examples/HaskellParser.hs.prettyparser.golden +1/−0
- tests/examples/HaskellParser.hs.prettyprinter.golden +13/−0
- tests/examples/HexPrec.hs +6/−0
- tests/examples/HexPrec.hs.exactprinter.golden +7/−0
- tests/examples/HexPrec.hs.parser.golden +191/−0
- tests/examples/HexPrec.hs.prettyparser.golden +1/−0
- tests/examples/HexPrec.hs.prettyprinter.golden +6/−0
- tests/examples/IfThenElseLayout.hs +12/−0
- tests/examples/IfThenElseLayout.hs.exactprinter.golden +1/−0
- tests/examples/IfThenElseLayout.hs.parser.golden +866/−0
- tests/examples/IfThenElseLayout.hs.prettyparser.golden +1/−0
- tests/examples/IfThenElseLayout.hs.prettyprinter.golden +9/−0
- tests/examples/IllDataTypeDecl.hs +4/−0
- tests/examples/IllDataTypeDecl.hs.exactprinter.golden +1/−0
- tests/examples/IllDataTypeDecl.hs.parser.golden +162/−0
- tests/examples/IllDataTypeDecl.hs.prettyparser.golden +1/−0
- tests/examples/IllDataTypeDecl.hs.prettyprinter.golden +4/−0
- tests/examples/ImplicitWhereBlocks.hs +6/−0
- tests/examples/ImplicitWhereBlocks.hs.exactprinter.golden +1/−0
- tests/examples/ImplicitWhereBlocks.hs.parser.golden +201/−0
- tests/examples/ImplicitWhereBlocks.hs.prettyparser.golden +1/−0
- tests/examples/ImplicitWhereBlocks.hs.prettyprinter.golden +4/−0
- tests/examples/ImportQualifiedPost.hs +4/−0
- tests/examples/ImportQualifiedPost.hs.exactprinter.golden +1/−0
- tests/examples/ImportQualifiedPost.hs.parser.golden +89/−0
- tests/examples/ImportQualifiedPost.hs.prettyparser.golden +1/−0
- tests/examples/ImportQualifiedPost.hs.prettyprinter.golden +3/−0
- tests/examples/IndentedModule1.hs +3/−0
- tests/examples/IndentedModule1.hs.exactprinter.golden +1/−0
- tests/examples/IndentedModule1.hs.parser.golden +117/−0
- tests/examples/IndentedModule1.hs.prettyparser.golden +1/−0
- tests/examples/IndentedModule1.hs.prettyprinter.golden +3/−0
- tests/examples/IndentedModule2.hs +3/−0
- tests/examples/IndentedModule2.hs.exactprinter.golden +1/−0
- tests/examples/IndentedModule2.hs.parser.golden +119/−0
- tests/examples/IndentedModule2.hs.prettyparser.golden +1/−0
- tests/examples/IndentedModule2.hs.prettyprinter.golden +3/−0
- tests/examples/IndentedTopLevelWhere.hs +7/−0
- tests/examples/IndentedTopLevelWhere.hs.exactprinter.golden +1/−0
- tests/examples/IndentedTopLevelWhere.hs.parser.golden +3/−0
- tests/examples/IndentedTopLevelWhere.hs.prettyparser.golden +1/−0
- tests/examples/IndentedTopLevelWhere.hs.prettyprinter.golden +1/−0
- tests/examples/IndentedWhere.hs +4/−0
- tests/examples/IndentedWhere.hs.exactprinter.golden +1/−0
- tests/examples/IndentedWhere.hs.parser.golden +148/−0
- tests/examples/IndentedWhere.hs.prettyparser.golden +1/−0
- tests/examples/IndentedWhere.hs.prettyprinter.golden +3/−0
- tests/examples/IndentedWhereBlock.hs +7/−0
- tests/examples/IndentedWhereBlock.hs.exactprinter.golden +1/−0
- tests/examples/IndentedWhereBlock.hs.parser.golden +3/−0
- tests/examples/IndentedWhereBlock.hs.prettyparser.golden +1/−0
- tests/examples/IndentedWhereBlock.hs.prettyprinter.golden +1/−0
- tests/examples/InfixApp.hs +2/−0
- tests/examples/InfixApp.hs.exactprinter.golden +1/−0
- tests/examples/InfixApp.hs.parser.golden +94/−0
- tests/examples/InfixApp.hs.prettyparser.golden +1/−0
- tests/examples/InfixApp.hs.prettyprinter.golden +1/−0
- tests/examples/InfixBang.hs +3/−0
- tests/examples/InfixBang.hs.exactprinter.golden +1/−0
- tests/examples/InfixBang.hs.parser.golden +122/−0
- tests/examples/InfixBang.hs.prettyparser.golden +1/−0
- tests/examples/InfixBang.hs.prettyprinter.golden +2/−0
- tests/examples/InfixFunBind.hs +1/−0
- tests/examples/InfixFunBind.hs.exactprinter.golden +1/−0
- tests/examples/InfixFunBind.hs.parser.golden +79/−0
- tests/examples/InfixFunBind.hs.prettyparser.golden +1/−0
- tests/examples/InfixFunBind.hs.prettyprinter.golden +1/−0
- tests/examples/InfixParser.hs +6/−0
- tests/examples/InfixParser.hs.exactprinter.golden +1/−0
- tests/examples/InfixParser.hs.parser.golden +490/−0
- tests/examples/InfixParser.hs.prettyparser.golden +1/−0
- tests/examples/InfixParser.hs.prettyprinter.golden +6/−0
- tests/examples/InfixTypeMinus.hs +8/−0
- tests/examples/InfixTypeMinus.hs.exactprinter.golden +1/−0
- tests/examples/InfixTypeMinus.hs.parser.golden +1346/−0
- tests/examples/InfixTypeMinus.hs.prettyparser.golden +1/−0
- tests/examples/InfixTypeMinus.hs.prettyprinter.golden +14/−0
- tests/examples/InjectiveTypeFamilies.hs +255/−0
- tests/examples/InjectiveTypeFamilies.hs.exactprinter.golden +1/−0
- tests/examples/InjectiveTypeFamilies.hs.parser.golden +15848/−0
- tests/examples/InjectiveTypeFamilies.hs.prettyparser.golden +1/−0
- tests/examples/InjectiveTypeFamilies.hs.prettyprinter.golden +253/−0
- tests/examples/InlineConlike.hs +3/−0
- tests/examples/InlineConlike.hs.exactprinter.golden +1/−0
- tests/examples/InlineConlike.hs.parser.golden +104/−0
- tests/examples/InlineConlike.hs.prettyparser.golden +1/−0
- tests/examples/InlineConlike.hs.prettyprinter.golden +4/−0
- tests/examples/InstanceSigs.hs +9/−0
- tests/examples/InstanceSigs.hs.exactprinter.golden +1/−0
- tests/examples/InstanceSigs.hs.parser.golden +571/−0
- tests/examples/InstanceSigs.hs.prettyparser.golden +1/−0
- tests/examples/InstanceSigs.hs.prettyprinter.golden +9/−0
- tests/examples/LambdaCase.hs +8/−0
- tests/examples/LambdaCase.hs.exactprinter.golden +1/−0
- tests/examples/LambdaCase.hs.parser.golden +254/−0
- tests/examples/LambdaCase.hs.prettyparser.golden +1/−0
- tests/examples/LambdaCase.hs.prettyprinter.golden +9/−0
- tests/examples/LanguagePragma.hs +4/−0
- tests/examples/LanguagePragma.hs.exactprinter.golden +1/−0
- tests/examples/LanguagePragma.hs.parser.golden +92/−0
- tests/examples/LanguagePragma.hs.prettyparser.golden +1/−0
- tests/examples/LanguagePragma.hs.prettyprinter.golden +2/−0
- tests/examples/Lib.hs +17/−0
- tests/examples/Lib.hs.exactprinter.golden +1/−0
- tests/examples/Lib.hs.parser.golden +672/−0
- tests/examples/Lib.hs.prettyparser.golden +1/−0
- tests/examples/Lib.hs.prettyprinter.golden +16/−0
- tests/examples/LineOptionsPragma.hs +3/−0
- tests/examples/LineOptionsPragma.hs.exactprinter.golden +1/−0
- tests/examples/LineOptionsPragma.hs.parser.golden +52/−0
- tests/examples/LineOptionsPragma.hs.prettyparser.golden +1/−0
- tests/examples/LineOptionsPragma.hs.prettyprinter.golden +2/−0
- tests/examples/List2.hs +35/−0
- tests/examples/List2.hs.exactprinter.golden +36/−0
- tests/examples/List2.hs.parser.golden +427/−0
- tests/examples/List2.hs.prettyparser.golden +1/−0
- tests/examples/List2.hs.prettyprinter.golden +22/−0
- tests/examples/MagicHashN.hs +7/−0
- tests/examples/MagicHashN.hs.exactprinter.golden +1/−0
- tests/examples/MagicHashN.hs.parser.golden +262/−0
- tests/examples/MagicHashN.hs.prettyparser.golden +1/−0
- tests/examples/MagicHashN.hs.prettyprinter.golden +6/−0
- tests/examples/MagicHashUnboxedTuples.hs +6/−0
- tests/examples/MagicHashUnboxedTuples.hs.exactprinter.golden +1/−0
- tests/examples/MagicHashUnboxedTuples.hs.parser.golden +286/−0
- tests/examples/MagicHashUnboxedTuples.hs.prettyparser.golden +1/−0
- tests/examples/MagicHashUnboxedTuples.hs.prettyprinter.golden +5/−0
- tests/examples/MinimalPragma.hs +7/−0
- tests/examples/MinimalPragma.hs.exactprinter.golden +1/−0
- tests/examples/MinimalPragma.hs.parser.golden +581/−0
- tests/examples/MinimalPragma.hs.prettyparser.golden +1/−0
- tests/examples/MinimalPragma.hs.prettyprinter.golden +8/−0
- tests/examples/MultiCtxt.hs +6/−0
- tests/examples/MultiCtxt.hs.exactprinter.golden +1/−0
- tests/examples/MultiCtxt.hs.parser.golden +231/−0
- tests/examples/MultiCtxt.hs.prettyparser.golden +1/−0
- tests/examples/MultiCtxt.hs.prettyprinter.golden +5/−0
- tests/examples/MultiLinePragma.hs +14/−0
- tests/examples/MultiLinePragma.hs.exactprinter.golden +1/−0
- tests/examples/MultiLinePragma.hs.parser.golden +145/−0
- tests/examples/MultiLinePragma.hs.prettyparser.golden +1/−0
- tests/examples/MultiLinePragma.hs.prettyprinter.golden +15/−0
- tests/examples/MultiParam.hs +4/−0
- tests/examples/MultiParam.hs.exactprinter.golden +1/−0
- tests/examples/MultiParam.hs.parser.golden +215/−0
- tests/examples/MultiParam.hs.prettyparser.golden +1/−0
- tests/examples/MultiParam.hs.prettyprinter.golden +4/−0
- tests/examples/MultiWayIf.hs +30/−0
- tests/examples/MultiWayIf.hs.exactprinter.golden +1/−0
- tests/examples/MultiWayIf.hs.parser.golden +1685/−0
- tests/examples/MultiWayIf.hs.prettyparser.golden +1/−0
- tests/examples/MultiWayIf.hs.prettyprinter.golden +33/−0
- tests/examples/NPlusK.hs +3/−0
- tests/examples/NPlusK.hs.exactprinter.golden +1/−0
- tests/examples/NPlusK.hs.parser.golden +97/−0
- tests/examples/NPlusK.hs.prettyparser.golden +1/−0
- tests/examples/NPlusK.hs.prettyprinter.golden +2/−0
- tests/examples/NegPrimWordLiteral.hs +2/−0
- tests/examples/NegPrimWordLiteral.hs.exactprinter.golden +1/−0
- tests/examples/NegPrimWordLiteral.hs.parser.golden +3/−0
- tests/examples/NegPrimWordLiteral.hs.prettyparser.golden +1/−0
- tests/examples/NegPrimWordLiteral.hs.prettyprinter.golden +1/−0
- tests/examples/NegativePatterns.hs +15/−0
- tests/examples/NegativePatterns.hs.exactprinter.golden +1/−0
- tests/examples/NegativePatterns.hs.parser.golden +1052/−0
- tests/examples/NegativePatterns.hs.prettyparser.golden +1/−0
- tests/examples/NegativePatterns.hs.prettyprinter.golden +19/−0
- tests/examples/NestedAsPat.hs +3/−0
- tests/examples/NestedAsPat.hs.exactprinter.golden +1/−0
- tests/examples/NestedAsPat.hs.parser.golden +127/−0
- tests/examples/NestedAsPat.hs.prettyparser.golden +1/−0
- tests/examples/NestedAsPat.hs.prettyprinter.golden +2/−0
- tests/examples/NoStartNumIdents.hs +1/−0
- tests/examples/NoStartNumIdents.hs.exactprinter.golden +1/−0
- tests/examples/NoStartNumIdents.hs.parser.golden +3/−0
- tests/examples/NoStartNumIdents.hs.prettyparser.golden +1/−0
- tests/examples/NoStartNumIdents.hs.prettyprinter.golden +1/−0
- tests/examples/NonDecreasing.hs +9/−0
- tests/examples/NonDecreasing.hs.exactprinter.golden +1/−0
- tests/examples/NonDecreasing.hs.parser.golden +3/−0
- tests/examples/NonDecreasing.hs.prettyparser.golden +1/−0
- tests/examples/NonDecreasing.hs.prettyprinter.golden +1/−0
- tests/examples/Nounpack2.hs +3/−0
- tests/examples/Nounpack2.hs.exactprinter.golden +1/−0
- tests/examples/Nounpack2.hs.parser.golden +96/−0
- tests/examples/Nounpack2.hs.prettyparser.golden +1/−0
- tests/examples/Nounpack2.hs.prettyprinter.golden +1/−0
- tests/examples/OptionsPragma.hs +2/−0
- tests/examples/OptionsPragma.hs.exactprinter.golden +1/−0
- tests/examples/OptionsPragma.hs.parser.golden +28/−0
- tests/examples/OptionsPragma.hs.prettyparser.golden +1/−0
- tests/examples/OptionsPragma.hs.prettyprinter.golden +1/−0
- tests/examples/Overlapable.hs +6/−0
- tests/examples/Overlapable.hs.exactprinter.golden +1/−0
- tests/examples/Overlapable.hs.parser.golden +176/−0
- tests/examples/Overlapable.hs.prettyparser.golden +1/−0
- tests/examples/Overlapable.hs.prettyprinter.golden +5/−0
- tests/examples/Overlapping.hs +25/−0
- tests/examples/Overlapping.hs.exactprinter.golden +1/−0
- tests/examples/Overlapping.hs.parser.golden +730/−0
- tests/examples/Overlapping.hs.prettyparser.golden +1/−0
- tests/examples/Overlapping.hs.prettyprinter.golden +18/−0
- tests/examples/OverloadedLabels.hs +29/−0
- tests/examples/OverloadedLabels.hs.exactprinter.golden +1/−0
- tests/examples/OverloadedLabels.hs.parser.golden +911/−0
- tests/examples/OverloadedLabels.hs.prettyparser.golden +1/−0
- tests/examples/OverloadedLabels.hs.prettyprinter.golden +21/−0
- tests/examples/PackageImports.hs +5/−0
- tests/examples/PackageImports.hs.exactprinter.golden +1/−0
- tests/examples/PackageImports.hs.parser.golden +100/−0
- tests/examples/PackageImports.hs.prettyparser.golden +1/−0
- tests/examples/PackageImports.hs.prettyprinter.golden +4/−0
- tests/examples/PackageImportsMissing.hs +4/−0
- tests/examples/PackageImportsMissing.hs.exactprinter.golden +1/−0
- tests/examples/PackageImportsMissing.hs.parser.golden +3/−0
- tests/examples/PackageImportsMissing.hs.prettyparser.golden +1/−0
- tests/examples/PackageImportsMissing.hs.prettyprinter.golden +1/−0
- tests/examples/ParallelArrays.hs +6/−0
- tests/examples/ParallelArrays.hs.exactprinter.golden +1/−0
- tests/examples/ParallelArrays.hs.parser.golden +384/−0
- tests/examples/ParallelArrays.hs.prettyparser.golden +1/−0
- tests/examples/ParallelArrays.hs.prettyprinter.golden +4/−0
- tests/examples/ParallelArrays2.hs +4/−0
- tests/examples/ParallelArrays2.hs.exactprinter.golden +1/−0
- tests/examples/ParallelArrays2.hs.parser.golden +2/−0
- tests/examples/ParallelArrays2.hs.prettyparser.golden +1/−0
- tests/examples/ParallelArrays2.hs.prettyprinter.golden +1/−0
- tests/examples/ParallelListComp.hs +3/−0
- tests/examples/ParallelListComp.hs.exactprinter.golden +1/−0
- tests/examples/ParallelListComp.hs.parser.golden +402/−0
- tests/examples/ParallelListComp.hs.prettyparser.golden +1/−0
- tests/examples/ParallelListComp.hs.prettyprinter.golden +2/−0
- tests/examples/ParenFunBind.hs +3/−0
- tests/examples/ParenFunBind.hs.exactprinter.golden +1/−0
- tests/examples/ParenFunBind.hs.parser.golden +137/−0
- tests/examples/ParenFunBind.hs.prettyparser.golden +1/−0
- tests/examples/ParenFunBind.hs.prettyprinter.golden +2/−0
- tests/examples/PartialSignatures.hs +293/−0
- tests/examples/PartialSignatures.hs.exactprinter.golden +1/−0
- tests/examples/PartialSignatures.hs.parser.golden +16739/−0
- tests/examples/PartialSignatures.hs.prettyparser.golden +1/−0
- tests/examples/PartialSignatures.hs.prettyprinter.golden +236/−0
- tests/examples/PatSynFix.hs +3/−0
- tests/examples/PatSynFix.hs.exactprinter.golden +1/−0
- tests/examples/PatSynFix.hs.parser.golden +381/−0
- tests/examples/PatSynFix.hs.prettyparser.golden +1/−0
- tests/examples/PatSynFix.hs.prettyprinter.golden +5/−0
- tests/examples/PatternSplice.hs +6/−0
- tests/examples/PatternSplice.hs.exactprinter.golden +1/−0
- tests/examples/PatternSplice.hs.parser.golden +235/−0
- tests/examples/PatternSplice.hs.prettyparser.golden +1/−0
- tests/examples/PatternSplice.hs.prettyprinter.golden +6/−0
- tests/examples/PatternSynonymImport.hs +5/−0
- tests/examples/PatternSynonymImport.hs.exactprinter.golden +1/−0
- tests/examples/PatternSynonymImport.hs.parser.golden +208/−0
- tests/examples/PatternSynonymImport.hs.prettyparser.golden +1/−0
- tests/examples/PatternSynonymImport.hs.prettyprinter.golden +3/−0
- tests/examples/PatternSynonymSignatures.hs +15/−0
- tests/examples/PatternSynonymSignatures.hs.exactprinter.golden +1/−0
- tests/examples/PatternSynonymSignatures.hs.parser.golden +607/−0
- tests/examples/PatternSynonymSignatures.hs.prettyparser.golden +1/−0
- tests/examples/PatternSynonymSignatures.hs.prettyprinter.golden +13/−0
- tests/examples/PatternSynonyms.hs +16/−0
- tests/examples/PatternSynonyms.hs.exactprinter.golden +1/−0
- tests/examples/PatternSynonyms.hs.parser.golden +575/−0
- tests/examples/PatternSynonyms.hs.prettyparser.golden +1/−0
- tests/examples/PatternSynonyms.hs.prettyprinter.golden +15/−0
- tests/examples/PatternSynonyms2.hs +18/−0
- tests/examples/PatternSynonyms2.hs.exactprinter.golden +1/−0
- tests/examples/PatternSynonyms2.hs.parser.golden +664/−0
- tests/examples/PatternSynonyms2.hs.prettyparser.golden +1/−0
- tests/examples/PatternSynonyms2.hs.prettyprinter.golden +13/−0
- tests/examples/PatternSynonyms3.hs +76/−0
- tests/examples/PatternSynonyms3.hs.exactprinter.golden +1/−0
- tests/examples/PatternSynonyms3.hs.parser.golden +3805/−0
- tests/examples/PatternSynonyms3.hs.prettyparser.golden +1/−0
- tests/examples/PatternSynonyms3.hs.prettyprinter.golden +74/−0
- tests/examples/PolyKindSigs.hs +8/−0
- tests/examples/PolyKindSigs.hs.exactprinter.golden +1/−0
- tests/examples/PolyKindSigs.hs.parser.golden +163/−0
- tests/examples/PolyKindSigs.hs.prettyparser.golden +1/−0
- tests/examples/PolyKindSigs.hs.prettyprinter.golden +6/−0
- tests/examples/PolyKinds.hs +8/−0
- tests/examples/PolyKinds.hs.exactprinter.golden +1/−0
- tests/examples/PolyKinds.hs.parser.golden +437/−0
- tests/examples/PolyKinds.hs.prettyparser.golden +1/−0
- tests/examples/PolyKinds.hs.prettyprinter.golden +12/−0
- tests/examples/Ppr048.hs +10/−0
- tests/examples/Ppr048.hs.exactprinter.golden +1/−0
- tests/examples/Ppr048.hs.parser.golden +2/−0
- tests/examples/Ppr048.hs.prettyparser.golden +1/−0
- tests/examples/Ppr048.hs.prettyprinter.golden +1/−0
- tests/examples/PrimitiveIntHexLiteral.hs +2/−0
- tests/examples/PrimitiveIntHexLiteral.hs.exactprinter.golden +1/−0
- tests/examples/PrimitiveIntHexLiteral.hs.parser.golden +112/−0
- tests/examples/PrimitiveIntHexLiteral.hs.prettyparser.golden +10/−0
- tests/examples/PrimitiveIntHexLiteral.hs.prettyprinter.golden +2/−0
- tests/examples/PromotedSpace.hs +20/−0
- tests/examples/PromotedSpace.hs.exactprinter.golden +1/−0
- tests/examples/PromotedSpace.hs.parser.golden +617/−0
- tests/examples/PromotedSpace.hs.prettyparser.golden +1/−0
- tests/examples/PromotedSpace.hs.prettyprinter.golden +14/−0
- tests/examples/QQType.hs +7/−0
- tests/examples/QQType.hs.exactprinter.golden +1/−0
- tests/examples/QQType.hs.parser.golden +278/−0
- tests/examples/QQType.hs.prettyparser.golden +1/−0
- tests/examples/QQType.hs.prettyprinter.golden +9/−0
- tests/examples/QualifiedDot.hs +3/−0
- tests/examples/QualifiedDot.hs.exactprinter.golden +1/−0
- tests/examples/QualifiedDot.hs.parser.golden +87/−0
- tests/examples/QualifiedDot.hs.prettyparser.golden +1/−0
- tests/examples/QualifiedDot.hs.prettyprinter.golden +2/−0
- tests/examples/QualifiedQQuote.hs +6/−0
- tests/examples/QualifiedQQuote.hs.exactprinter.golden +1/−0
- tests/examples/QualifiedQQuote.hs.parser.golden +145/−0
- tests/examples/QualifiedQQuote.hs.prettyparser.golden +1/−0
- tests/examples/QualifiedQQuote.hs.prettyprinter.golden +5/−0
- tests/examples/QualifiedRecordfieldPuns.hs +3/−0
- tests/examples/QualifiedRecordfieldPuns.hs.exactprinter.golden +1/−0
- tests/examples/QualifiedRecordfieldPuns.hs.parser.golden +143/−0
- tests/examples/QualifiedRecordfieldPuns.hs.prettyparser.golden +1/−0
- tests/examples/QualifiedRecordfieldPuns.hs.prettyprinter.golden +2/−0
- tests/examples/QuantifiedConstraints.hs +4/−0
- tests/examples/QuantifiedConstraints.hs.exactprinter.golden +1/−0
- tests/examples/QuantifiedConstraints.hs.parser.golden +222/−0
- tests/examples/QuantifiedConstraints.hs.prettyparser.golden +1/−0
- tests/examples/QuantifiedConstraints.hs.prettyprinter.golden +4/−0
- tests/examples/QuasiQuoteLines.hs +12/−0
- tests/examples/QuasiQuoteLines.hs.exactprinter.golden +1/−0
- tests/examples/QuasiQuoteLines.hs.parser.golden +285/−0
- tests/examples/QuasiQuoteLines.hs.prettyparser.golden +1/−0
- tests/examples/QuasiQuoteLines.hs.prettyprinter.golden +10/−0
- tests/examples/QuasiQuoteOld.hs +12/−0
- tests/examples/QuasiQuoteOld.hs.exactprinter.golden +13/−0
- tests/examples/QuasiQuoteOld.hs.parser.golden +270/−0
- tests/examples/QuasiQuoteOld.hs.prettyparser.golden +1/−0
- tests/examples/QuasiQuoteOld.hs.prettyprinter.golden +10/−0
- tests/examples/QuasiQuoteQual2.hs +4/−0
- tests/examples/QuasiQuoteQual2.hs.exactprinter.golden +1/−0
- tests/examples/QuasiQuoteQual2.hs.parser.golden +140/−0
- tests/examples/QuasiQuoteQual2.hs.prettyparser.golden +1/−0
- tests/examples/QuasiQuoteQual2.hs.prettyprinter.golden +3/−0
- tests/examples/QuasiQuoteSplice.hs +9/−0
- tests/examples/QuasiQuoteSplice.hs.exactprinter.golden +1/−0
- tests/examples/QuasiQuoteSplice.hs.parser.golden +589/−0
- tests/examples/QuasiQuoteSplice.hs.prettyparser.golden +1/−0
- tests/examples/QuasiQuoteSplice.hs.prettyprinter.golden +9/−0
- tests/examples/QuasiQuoteToplevel.hs +8/−0
- tests/examples/QuasiQuoteToplevel.hs.exactprinter.golden +9/−0
- tests/examples/QuasiQuoteToplevel.hs.parser.golden +51/−0
- tests/examples/QuasiQuoteToplevel.hs.prettyparser.golden +1/−0
- tests/examples/QuasiQuoteToplevel.hs.prettyprinter.golden +8/−0
- tests/examples/QuasiQuoteUnit.hs +5/−0
- tests/examples/QuasiQuoteUnit.hs.exactprinter.golden +1/−0
- tests/examples/QuasiQuoteUnit.hs.parser.golden +139/−0
- tests/examples/QuasiQuoteUnit.hs.prettyparser.golden +1/−0
- tests/examples/QuasiQuoteUnit.hs.prettyprinter.golden +3/−0
- tests/examples/RCategory.hs +45/−0
- tests/examples/RCategory.hs.exactprinter.golden +1/−0
- tests/examples/RCategory.hs.parser.golden +2479/−0
- tests/examples/RCategory.hs.prettyparser.golden +1/−0
- tests/examples/RCategory.hs.prettyprinter.golden +41/−0
- tests/examples/RCategory2.hs +6/−0
- tests/examples/RCategory2.hs.exactprinter.golden +1/−0
- tests/examples/RCategory2.hs.parser.golden +193/−0
- tests/examples/RCategory2.hs.prettyparser.golden +1/−0
- tests/examples/RCategory2.hs.prettyprinter.golden +5/−0
- tests/examples/RCategory3.hs +5/−0
- tests/examples/RCategory3.hs.exactprinter.golden +1/−0
- tests/examples/RCategory3.hs.parser.golden +222/−0
- tests/examples/RCategory3.hs.prettyparser.golden +1/−0
- tests/examples/RCategory3.hs.prettyprinter.golden +4/−0
- tests/examples/ReadP.hs +2/−0
- tests/examples/ReadP.hs.exactprinter.golden +1/−0
- tests/examples/ReadP.hs.parser.golden +245/−0
- tests/examples/ReadP.hs.prettyparser.golden +1/−0
- tests/examples/ReadP.hs.prettyprinter.golden +3/−0
- tests/examples/RealGHC.lhs +913/−0
- tests/examples/RealGHC.lhs.exactprinter.golden +915/−0
- tests/examples/RealGHC.lhs.parser.golden too large to diff
- tests/examples/RealGHC.lhs.prettyparser.golden +1/−0
- tests/examples/RealGHC.lhs.prettyprinter.golden +422/−0
- tests/examples/RecordInfixSelector.hs +3/−0
- tests/examples/RecordInfixSelector.hs.exactprinter.golden +1/−0
- tests/examples/RecordInfixSelector.hs.parser.golden +234/−0
- tests/examples/RecordInfixSelector.hs.prettyparser.golden +1/−0
- tests/examples/RecordInfixSelector.hs.prettyprinter.golden +2/−0
- tests/examples/RecordPatternSynonyms.hs +16/−0
- tests/examples/RecordPatternSynonyms.hs.exactprinter.golden +1/−0
- tests/examples/RecordPatternSynonyms.hs.parser.golden +688/−0
- tests/examples/RecordPatternSynonyms.hs.prettyparser.golden +1/−0
- tests/examples/RecordPatternSynonyms.hs.prettyprinter.golden +15/−0
- tests/examples/RecordPuns.hs +4/−0
- tests/examples/RecordPuns.hs.exactprinter.golden +1/−0
- tests/examples/RecordPuns.hs.parser.golden +120/−0
- tests/examples/RecordPuns.hs.prettyparser.golden +1/−0
- tests/examples/RecordPuns.hs.prettyprinter.golden +3/−0
- tests/examples/RecordWildcard.hs +4/−0
- tests/examples/RecordWildcard.hs.exactprinter.golden +1/−0
- tests/examples/RecordWildcard.hs.parser.golden +2/−0
- tests/examples/RecordWildcard.hs.prettyparser.golden +1/−0
- tests/examples/RecordWildcard.hs.prettyprinter.golden +1/−0
- tests/examples/RecordWildcardError.hs +1/−0
- tests/examples/RecordWildcardError.hs.exactprinter.golden +1/−0
- tests/examples/RecordWildcardError.hs.parser.golden +3/−0
- tests/examples/RecordWildcardError.hs.prettyparser.golden +1/−0
- tests/examples/RecordWildcardError.hs.prettyprinter.golden +1/−0
- tests/examples/RecursiveDo.hs +5/−0
- tests/examples/RecursiveDo.hs.exactprinter.golden +1/−0
- tests/examples/RecursiveDo.hs.parser.golden +281/−0
- tests/examples/RecursiveDo.hs.prettyparser.golden +1/−0
- tests/examples/RecursiveDo.hs.prettyprinter.golden +4/−0
- tests/examples/RegularPatterns.hs +9/−0
- tests/examples/RegularPatterns.hs.exactprinter.golden +1/−0
- tests/examples/RegularPatterns.hs.parser.golden +851/−0
- tests/examples/RegularPatterns.hs.prettyparser.golden +1/−0
- tests/examples/RegularPatterns.hs.prettyprinter.golden +9/−0
- tests/examples/RelaxedDo.hs +14/−0
- tests/examples/RelaxedDo.hs.exactprinter.golden +1/−0
- tests/examples/RelaxedDo.hs.parser.golden +878/−0
- tests/examples/RelaxedDo.hs.prettyparser.golden +1/−0
- tests/examples/RelaxedDo.hs.prettyprinter.golden +14/−0
- tests/examples/RoleAnnotations.hs +16/−0
- tests/examples/RoleAnnotations.hs.exactprinter.golden +1/−0
- tests/examples/RoleAnnotations.hs.parser.golden +640/−0
- tests/examples/RoleAnnotations.hs.prettyparser.golden +1/−0
- tests/examples/RoleAnnotations.hs.prettyprinter.golden +22/−0
- tests/examples/RoleAnnotations2.hs +9/−0
- tests/examples/RoleAnnotations2.hs.exactprinter.golden +1/−0
- tests/examples/RoleAnnotations2.hs.parser.golden +379/−0
- tests/examples/RoleAnnotations2.hs.prettyparser.golden +1/−0
- tests/examples/RoleAnnotations2.hs.prettyprinter.golden +9/−0
- tests/examples/Rules.hs +1/−0
- tests/examples/Rules.hs.exactprinter.golden +1/−0
- tests/examples/Rules.hs.parser.golden +321/−0
- tests/examples/Rules.hs.prettyparser.golden +1/−0
- tests/examples/Rules.hs.prettyprinter.golden +4/−0
- tests/examples/SCCPragmas.hs +3/−0
- tests/examples/SCCPragmas.hs.exactprinter.golden +1/−0
- tests/examples/SCCPragmas.hs.parser.golden +78/−0
- tests/examples/SCCPragmas.hs.prettyparser.golden +1/−0
- tests/examples/SCCPragmas.hs.prettyprinter.golden +2/−0
- tests/examples/SafeImports1.hs +2/−0
- tests/examples/SafeImports1.hs.exactprinter.golden +1/−0
- tests/examples/SafeImports1.hs.parser.golden +65/−0
- tests/examples/SafeImports1.hs.prettyparser.golden +1/−0
- tests/examples/SafeImports1.hs.prettyprinter.golden +2/−0
- tests/examples/SafeImports2.hs +2/−0
- tests/examples/SafeImports2.hs.exactprinter.golden +1/−0
- tests/examples/SafeImports2.hs.parser.golden +65/−0
- tests/examples/SafeImports2.hs.prettyparser.golden +1/−0
- tests/examples/SafeImports2.hs.prettyprinter.golden +2/−0
- tests/examples/SafeImports3.hs +2/−0
- tests/examples/SafeImports3.hs.exactprinter.golden +1/−0
- tests/examples/SafeImports3.hs.parser.golden +65/−0
- tests/examples/SafeImports3.hs.prettyparser.golden +1/−0
- tests/examples/SafeImports3.hs.prettyprinter.golden +2/−0
- tests/examples/ScopedTypeVariables.hs +12/−0
- tests/examples/ScopedTypeVariables.hs.exactprinter.golden +1/−0
- tests/examples/ScopedTypeVariables.hs.parser.golden +630/−0
- tests/examples/ScopedTypeVariables.hs.prettyparser.golden +1/−0
- tests/examples/ScopedTypeVariables.hs.prettyprinter.golden +10/−0
- tests/examples/SimpleDeriving.hs +1/−0
- tests/examples/SimpleDeriving.hs.exactprinter.golden +1/−0
- tests/examples/SimpleDeriving.hs.parser.golden +101/−0
- tests/examples/SimpleDeriving.hs.prettyparser.golden +1/−0
- tests/examples/SimpleDeriving.hs.prettyprinter.golden +1/−0
- tests/examples/SingleClassAsst.hs +4/−0
- tests/examples/SingleClassAsst.hs.exactprinter.golden +1/−0
- tests/examples/SingleClassAsst.hs.parser.golden +214/−0
- tests/examples/SingleClassAsst.hs.prettyparser.golden +1/−0
- tests/examples/SingleClassAsst.hs.prettyprinter.golden +4/−0
- tests/examples/SpecializeInstance.hs +4/−0
- tests/examples/SpecializeInstance.hs.exactprinter.golden +5/−0
- tests/examples/SpecializeInstance.hs.parser.golden +813/−0
- tests/examples/SpecializeInstance.hs.prettyparser.golden +1/−0
- tests/examples/SpecializeInstance.hs.prettyprinter.golden +5/−0
- tests/examples/SpecializePhaseControl.hs +15/−0
- tests/examples/SpecializePhaseControl.hs.exactprinter.golden +1/−0
- tests/examples/SpecializePhaseControl.hs.parser.golden +1036/−0
- tests/examples/SpecializePhaseControl.hs.prettyparser.golden +1/−0
- tests/examples/SpecializePhaseControl.hs.prettyprinter.golden +11/−0
- tests/examples/StarInType.hs +5/−0
- tests/examples/StarInType.hs.exactprinter.golden +6/−0
- tests/examples/StarInType.hs.parser.golden +287/−0
- tests/examples/StarInType.hs.prettyparser.golden +1/−0
- tests/examples/StarInType.hs.prettyprinter.golden +8/−0
- tests/examples/T11727.hs +8/−0
- tests/examples/T11727.hs.exactprinter.golden +1/−0
- tests/examples/T11727.hs.parser.golden +180/−0
- tests/examples/T11727.hs.prettyparser.golden +1/−0
- tests/examples/T11727.hs.prettyprinter.golden +8/−0
- tests/examples/T13050.hs +7/−0
- tests/examples/T13050.hs.exactprinter.golden +1/−0
- tests/examples/T13050.hs.parser.golden +439/−0
- tests/examples/T13050.hs.prettyparser.golden +1/−0
- tests/examples/T13050.hs.prettyprinter.golden +6/−0
- tests/examples/T326.hs +4/−0
- tests/examples/T326.hs.exactprinter.golden +1/−0
- tests/examples/T326.hs.parser.golden +116/−0
- tests/examples/T326.hs.prettyparser.golden +1/−0
- tests/examples/T326.hs.prettyprinter.golden +3/−0
- tests/examples/THTSplices.hs +3/−0
- tests/examples/THTSplices.hs.exactprinter.golden +1/−0
- tests/examples/THTSplices.hs.parser.golden +133/−0
- tests/examples/THTSplices.hs.prettyparser.golden +1/−0
- tests/examples/THTSplices.hs.prettyprinter.golden +3/−0
- tests/examples/THTypedSplices.hs +6/−0
- tests/examples/THTypedSplices.hs.exactprinter.golden +7/−0
- tests/examples/THTypedSplices.hs.parser.golden +177/−0
- tests/examples/THTypedSplices.hs.prettyparser.golden +1/−0
- tests/examples/THTypedSplices.hs.prettyprinter.golden +4/−0
- tests/examples/THTypes.hs +11/−0
- tests/examples/THTypes.hs.exactprinter.golden +1/−0
- tests/examples/THTypes.hs.parser.golden +363/−0
- tests/examples/THTypes.hs.prettyparser.golden +1/−0
- tests/examples/THTypes.hs.prettyprinter.golden +12/−0
- tests/examples/TabWhitespace.hs +1/−0
- tests/examples/TabWhitespace.hs.exactprinter.golden +2/−0
- tests/examples/TabWhitespace.hs.parser.golden +19/−0
- tests/examples/TabWhitespace.hs.prettyparser.golden +1/−0
- tests/examples/TabWhitespace.hs.prettyprinter.golden +1/−0
- tests/examples/TemplateHaskellQuotedNames.hs +3/−0
- tests/examples/TemplateHaskellQuotedNames.hs.exactprinter.golden +1/−0
- tests/examples/TemplateHaskellQuotedNames.hs.parser.golden +246/−0
- tests/examples/TemplateHaskellQuotedNames.hs.prettyparser.golden +1/−0
- tests/examples/TemplateHaskellQuotedNames.hs.prettyprinter.golden +3/−0
- tests/examples/TensorTests.hs +20/−0
- tests/examples/TensorTests.hs.exactprinter.golden +1/−0
- tests/examples/TensorTests.hs.parser.golden +965/−0
- tests/examples/TensorTests.hs.prettyparser.golden +1/−0
- tests/examples/TensorTests.hs.prettyprinter.golden +18/−0
- tests/examples/Testing.hs +2/−0
- tests/examples/Testing.hs.exactprinter.golden +1/−0
- tests/examples/Testing.hs.parser.golden +89/−0
- tests/examples/Testing.hs.prettyparser.golden +1/−0
- tests/examples/Testing.hs.prettyprinter.golden +1/−0
- tests/examples/TrailingWhere.hs +5/−0
- tests/examples/TrailingWhere.hs.exactprinter.golden +1/−0
- tests/examples/TrailingWhere.hs.parser.golden +148/−0
- tests/examples/TrailingWhere.hs.prettyparser.golden +1/−0
- tests/examples/TrailingWhere.hs.prettyprinter.golden +4/−0
- tests/examples/TrailingWhere2.hs +6/−0
- tests/examples/TrailingWhere2.hs.exactprinter.golden +1/−0
- tests/examples/TrailingWhere2.hs.parser.golden +231/−0
- tests/examples/TrailingWhere2.hs.prettyparser.golden +1/−0
- tests/examples/TrailingWhere2.hs.prettyprinter.golden +6/−0
- tests/examples/TrailingWhere3.hs +3/−0
- tests/examples/TrailingWhere3.hs.exactprinter.golden +1/−0
- tests/examples/TrailingWhere3.hs.parser.golden +178/−0
- tests/examples/TrailingWhere3.hs.prettyparser.golden +1/−0
- tests/examples/TrailingWhere3.hs.prettyprinter.golden +4/−0
- tests/examples/TupleSections.hs +3/−0
- tests/examples/TupleSections.hs.exactprinter.golden +1/−0
- tests/examples/TupleSections.hs.parser.golden +138/−0
- tests/examples/TupleSections.hs.prettyparser.golden +1/−0
- tests/examples/TupleSections.hs.prettyprinter.golden +2/−0
- tests/examples/TyQuasiQuote.hs +3/−0
- tests/examples/TyQuasiQuote.hs.exactprinter.golden +1/−0
- tests/examples/TyQuasiQuote.hs.parser.golden +109/−0
- tests/examples/TyQuasiQuote.hs.prettyparser.golden +1/−0
- tests/examples/TyQuasiQuote.hs.prettyprinter.golden +4/−0
- tests/examples/TySplice.hs +4/−0
- tests/examples/TySplice.hs.exactprinter.golden +1/−0
- tests/examples/TySplice.hs.parser.golden +191/−0
- tests/examples/TySplice.hs.prettyparser.golden +1/−0
- tests/examples/TySplice.hs.prettyprinter.golden +5/−0
- tests/examples/TySplice2.hs +4/−0
- tests/examples/TySplice2.hs.exactprinter.golden +1/−0
- tests/examples/TySplice2.hs.parser.golden +129/−0
- tests/examples/TySplice2.hs.prettyparser.golden +1/−0
- tests/examples/TySplice2.hs.prettyprinter.golden +4/−0
- tests/examples/TySplice3.hs +2/−0
- tests/examples/TySplice3.hs.exactprinter.golden +1/−0
- tests/examples/TySplice3.hs.parser.golden +46/−0
- tests/examples/TySplice3.hs.prettyparser.golden +1/−0
- tests/examples/TySplice3.hs.prettyprinter.golden +3/−0
- tests/examples/TySplice4.hs +5/−0
- tests/examples/TySplice4.hs.exactprinter.golden +1/−0
- tests/examples/TySplice4.hs.parser.golden +309/−0
- tests/examples/TySplice4.hs.prettyparser.golden +1/−0
- tests/examples/TySplice4.hs.prettyprinter.golden +9/−0
- tests/examples/TypeEqualityParen.hs +3/−0
- tests/examples/TypeEqualityParen.hs.exactprinter.golden +1/−0
- tests/examples/TypeEqualityParen.hs.parser.golden +260/−0
- tests/examples/TypeEqualityParen.hs.prettyparser.golden +1/−0
- tests/examples/TypeEqualityParen.hs.prettyprinter.golden +4/−0
- tests/examples/TypeErrorMessage.hs +1/−0
- tests/examples/TypeErrorMessage.hs.exactprinter.golden +1/−0
- tests/examples/TypeErrorMessage.hs.parser.golden +3/−0
- tests/examples/TypeErrorMessage.hs.prettyparser.golden +1/−0
- tests/examples/TypeErrorMessage.hs.prettyprinter.golden +1/−0
- tests/examples/TypeFunctions.hs +7/−0
- tests/examples/TypeFunctions.hs.exactprinter.golden +1/−0
- tests/examples/TypeFunctions.hs.parser.golden +244/−0
- tests/examples/TypeFunctions.hs.prettyparser.golden +1/−0
- tests/examples/TypeFunctions.hs.prettyprinter.golden +7/−0
- tests/examples/TypeInstances.hs +7/−0
- tests/examples/TypeInstances.hs.exactprinter.golden +1/−0
- tests/examples/TypeInstances.hs.parser.golden +249/−0
- tests/examples/TypeInstances.hs.prettyparser.golden +1/−0
- tests/examples/TypeInstances.hs.prettyprinter.golden +6/−0
- tests/examples/TypeListCons.hs +7/−0
- tests/examples/TypeListCons.hs.exactprinter.golden +1/−0
- tests/examples/TypeListCons.hs.parser.golden +426/−0
- tests/examples/TypeListCons.hs.prettyparser.golden +1/−0
- tests/examples/TypeListCons.hs.prettyprinter.golden +8/−0
- tests/examples/TypeOperatorAsVariable.hs +5/−0
- tests/examples/TypeOperatorAsVariable.hs.exactprinter.golden +1/−0
- tests/examples/TypeOperatorAsVariable.hs.parser.golden +159/−0
- tests/examples/TypeOperatorAsVariable.hs.prettyparser.golden +1/−0
- tests/examples/TypeOperatorAsVariable.hs.prettyprinter.golden +5/−0
- tests/examples/TypeOperatorsTest.hs +4/−0
- tests/examples/TypeOperatorsTest.hs.exactprinter.golden +1/−0
- tests/examples/TypeOperatorsTest.hs.parser.golden +242/−0
- tests/examples/TypeOperatorsTest.hs.prettyparser.golden +1/−0
- tests/examples/TypeOperatorsTest.hs.prettyprinter.golden +4/−0
- tests/examples/UnboxedSingleton.hs +3/−0
- tests/examples/UnboxedSingleton.hs.exactprinter.golden +1/−0
- tests/examples/UnboxedSingleton.hs.parser.golden +113/−0
- tests/examples/UnboxedSingleton.hs.prettyparser.golden +1/−0
- tests/examples/UnboxedSingleton.hs.prettyprinter.golden +2/−0
- tests/examples/UnboxedTuples.hs +6/−0
- tests/examples/UnboxedTuples.hs.exactprinter.golden +1/−0
- tests/examples/UnboxedTuples.hs.parser.golden +365/−0
- tests/examples/UnboxedTuples.hs.prettyparser.golden +1/−0
- tests/examples/UnboxedTuples.hs.prettyprinter.golden +6/−0
- tests/examples/Unicode.hs +118/−0
- tests/examples/Unicode.hs.exactprinter.golden +119/−0
- tests/examples/Unicode.hs.parser.golden +7749/−0
- tests/examples/Unicode.hs.prettyparser.golden +1/−0
- tests/examples/Unicode.hs.prettyprinter.golden +98/−0
- tests/examples/Unicode2.hs +3/−0
- tests/examples/Unicode2.hs.exactprinter.golden +1/−0
- tests/examples/Unicode2.hs.parser.golden +134/−0
- tests/examples/Unicode2.hs.prettyparser.golden +1/−0
- tests/examples/Unicode2.hs.prettyprinter.golden +2/−0
- tests/examples/UnicodeArrow.hs +8/−0
- tests/examples/UnicodeArrow.hs.exactprinter.golden +9/−0
- tests/examples/UnicodeArrow.hs.parser.golden +271/−0
- tests/examples/UnicodeArrow.hs.prettyparser.golden +1/−0
- tests/examples/UnicodeArrow.hs.prettyprinter.golden +8/−0
- tests/examples/UnicodeIdents.hs +2/−0
- tests/examples/UnicodeIdents.hs.exactprinter.golden +1/−0
- tests/examples/UnicodeIdents.hs.parser.golden +155/−0
- tests/examples/UnicodeIdents.hs.prettyparser.golden +1/−0
- tests/examples/UnicodeIdents.hs.prettyprinter.golden +2/−0
- tests/examples/UnicodeRelation.hs +19/−0
- tests/examples/UnicodeRelation.hs.exactprinter.golden +20/−0
- tests/examples/UnicodeRelation.hs.parser.golden +1637/−0
- tests/examples/UnicodeRelation.hs.prettyparser.golden +1/−0
- tests/examples/UnicodeRelation.hs.prettyprinter.golden +18/−0
- tests/examples/UnicodeSubscript.hs +13/−0
- tests/examples/UnicodeSubscript.hs.exactprinter.golden +14/−0
- tests/examples/UnicodeSubscript.hs.parser.golden +1036/−0
- tests/examples/UnicodeSubscript.hs.prettyparser.golden +1/−0
- tests/examples/UnicodeSubscript.hs.prettyprinter.golden +11/−0
- tests/examples/UnicodeSuperscript.hs +7/−0
- tests/examples/UnicodeSuperscript.hs.exactprinter.golden +8/−0
- tests/examples/UnicodeSuperscript.hs.parser.golden +498/−0
- tests/examples/UnicodeSuperscript.hs.prettyparser.golden +1/−0
- tests/examples/UnicodeSuperscript.hs.prettyprinter.golden +7/−0
- tests/examples/UnicodeSyntax.hs +15/−0
- tests/examples/UnicodeSyntax.hs.exactprinter.golden +16/−0
- tests/examples/UnicodeSyntax.hs.parser.golden +678/−0
- tests/examples/UnicodeSyntax.hs.prettyparser.golden +1/−0
- tests/examples/UnicodeSyntax.hs.prettyprinter.golden +14/−0
- tests/examples/UnindentedPragmaClose.hs +4/−0
- tests/examples/UnindentedPragmaClose.hs.exactprinter.golden +1/−0
- tests/examples/UnindentedPragmaClose.hs.parser.golden +114/−0
- tests/examples/UnindentedPragmaClose.hs.prettyparser.golden +1/−0
- tests/examples/UnindentedPragmaClose.hs.prettyprinter.golden +4/−0
- tests/examples/Unpack.hs +6/−0
- tests/examples/Unpack.hs.exactprinter.golden +1/−0
- tests/examples/Unpack.hs.parser.golden +274/−0
- tests/examples/Unpack.hs.prettyparser.golden +1/−0
- tests/examples/Unpack.hs.prettyprinter.golden +6/−0
- tests/examples/ViewPatterns.hs +5/−0
- tests/examples/ViewPatterns.hs.exactprinter.golden +1/−0
- tests/examples/ViewPatterns.hs.parser.golden +229/−0
- tests/examples/ViewPatterns.hs.prettyparser.golden +1/−0
- tests/examples/ViewPatterns.hs.prettyprinter.golden +3/−0
- tests/examples/Vta1.hs +95/−0
- tests/examples/Vta1.hs.exactprinter.golden +1/−0
- tests/examples/Vta1.hs.parser.golden +5436/−0
- tests/examples/Vta1.hs.prettyparser.golden +1/−0
- tests/examples/Vta1.hs.prettyprinter.golden +79/−0
- tests/examples/Vta2.hs +14/−0
- tests/examples/Vta2.hs.exactprinter.golden +1/−0
- tests/examples/Vta2.hs.parser.golden +992/−0
- tests/examples/Vta2.hs.prettyparser.golden +1/−0
- tests/examples/Vta2.hs.prettyprinter.golden +12/−0
- tests/examples/WhereBlock.hs +3/−0
- tests/examples/WhereBlock.hs.exactprinter.golden +1/−0
- tests/examples/WhereBlock.hs.parser.golden +299/−0
- tests/examples/WhereBlock.hs.prettyparser.golden +1/−0
- tests/examples/WhereBlock.hs.prettyprinter.golden +3/−0
- tests/examples/WildcardTyFam.hs +4/−0
- tests/examples/WildcardTyFam.hs.exactprinter.golden +1/−0
- tests/examples/WildcardTyFam.hs.parser.golden +122/−0
- tests/examples/WildcardTyFam.hs.prettyparser.golden +1/−0
- tests/examples/WildcardTyFam.hs.prettyprinter.golden +4/−0
- tests/examples/brackets.hs +44/−0
- tests/examples/brackets.hs.exactprinter.golden +1/−0
- tests/examples/brackets.hs.parser.golden +2/−0
- tests/examples/brackets.hs.prettyparser.golden +1/−0
- tests/examples/brackets.hs.prettyprinter.golden +1/−0
- tests/examples/completesig01.hs +23/−0
- tests/examples/completesig01.hs.exactprinter.golden +1/−0
- tests/examples/completesig01.hs.parser.golden +681/−0
- tests/examples/completesig01.hs.prettyparser.golden +1/−0
- tests/examples/completesig01.hs.prettyprinter.golden +27/−0
- tests/examples/t403.hs +9/−0
- tests/examples/t403.hs.exactprinter.golden +10/−0
- tests/examples/t403.hs.parser.golden +520/−0
- tests/examples/t403.hs.prettyparser.golden +1/−0
- tests/examples/t403.hs.prettyprinter.golden +11/−0
- tests/examples/t412.hs +8/−0
- tests/examples/t412.hs.exactprinter.golden +1/−0
- tests/examples/t412.hs.parser.golden +166/−0
- tests/examples/t412.hs.prettyparser.golden +1/−0
- tests/examples/t412.hs.prettyprinter.golden +5/−0
CHANGELOG view
@@ -1,286 +1,736 @@-** 1.11.x - -1.10.2 --> 1.11.1 -=============== - -* API change: the fixities field in ParseMode is now of type - Maybe [Fixity]. If the field is Nothing the parsing will - not try to do any fixity resolution whatsoever, otherwise - it behaves as before. - -* API change, bug fix: The Fixity type contains a QName rather - than an Op to name the operator. The operator must match - the given QName exactly (i.e., unqualified names only match - unqualified names, and qualified names only match qualified - names) for applyFixities to perform fixups. - -* Bug fix: End-of-file inside an OPTIONS pragma no longer loops. - - - -** 1.10.x - -1.10.1 --> 1.10.2 -=============== - -* Fix a missing case in the Functor declaration for Decl. Thanks - to Malcolm Wallace for the patch! - -1.10.0 --> 1.10.1 -=============== - -* Enable the unicode version of DoubleColon (x2237). Thanks - to Andrés Sicard-Ramírez for the patch! - -1.9.6 --> 1.10.0 -=============== - -* Ensure that implied extensions are always picked up, not only - when using the parseFile* family of functions as previously. - -* Add the newly devised <%>...</%> syntax to the XmlSyntax support. - This causes changes to pretty much everything, including adding - a case to the AST which prompts the major version bump. - - -** 1.9.x - -1.9.5 --> 1.9.6 -=============== - -* Fix a bug (#203) where the lexer loops on malformed quasi-quoters. - -* Fix a bug with pretty-printing RULES pragmas. - -1.9.4 --> 1.9.5 -=============== - -* Fix a bug where deriving clauses for GADT-style data declarations - were not properly indented. - -* Pretty-printing patterns is now more accurate in inserting (and not - inserting) parentheses when needed. - -1.9.3 --> 1.9.4 -=============== - -* Pretty-printer now inserts parentheses in clever places when - printing kinds. - -* Pretty-printing expressions is now far more accurate in inserting - (and not inserting) parentheses when needed. - -* Pretty-printing negative expressions no longer inserts a superfluous - space between the - and the expression. - -1.9.2 --> 1.9.3 -=============== - -* Constructors for newtype declarations must now have exactly one - argument. This is only when using the classic syntax, not with - GADT-style syntax. - -* Fix a bug where preceding commas in tuple sections were counted - one too few. - -1.9.1 --> 1.9.2 -=============== - -* Fix a bug with pretty-printing lexer tokens. - -* Fix a bug where non-colon TypeOperators could not be used in - prefix mode. - -1.9.0 --> 1.9.1 -=============== - -* Export parseFileContentsWithExts from .Exts. - -1.8.2 --> 1.9.0 -=============== - -* OptionPragma is renamed to the more descriptive ModulePragma, - and adds a constructor AnnModulePragma for handling ANN pragmas - preceding module header. - -* Add instances for Eq/Ord/Data/Typeable for Fixity. - -* Add 'parseFileWithComments' and 'parseFileContentsWithComments' - to L.H.Exts . - -* More informative error messages when HSX tags are mismatched. - - - -** 1.8.x - -1.8.1 --> 1.8.2 -=============== - -* Don't insert redundant parentheses around record constructions - and updates. - -1.8.0 --> 1.8.1 -=============== - -* Fix three bugs with the handling of ANN. I must have been really - tired when implementing that support. - -1.7.2 --> 1.8.0 -=============== - -* Add an instance Show Fixity (derived). - -* Support for the new ANN and INLINE_CONLIKE pragmas. - -* Export knownExtensions from .Extension. - -* Remove support for CFILES and INCLUDE pragmas. The support wasn't - correct anyway, as it assumed the pragmas appeared at the top of - files. As CFILES/INCLUDE pragmas can (and do) appear anywhere, - there's no hope to support them in the AST. Better to remove the - support altogether. Files with CFILES/INCLUDE pragmas can still - be parsed of course, but those pragmas will be handled as comments. - -* Parsing with ignoreLinePragmas = False now correctly updates the - file name. - -* Allow the whole SPECIALISE/INLINE family of pragmas in instance - declarations. The InsInline constructor is removed, and is now - represented by InsDecl (InlineSig ...). - -* Fix a bug with line numbering and quasi quotes, and a similar one - with line numbering and CDATA. - -* Fix a few minor bugs in the exactPrinter. - -* Fix the strange handling of so called strings in LINE pragmas. - -** 1.7.x - -1.7.1 --> 1.7.2 -=============== - -* Fixes a bug in lexing LINE pragmas (used when ignoreLinePragmas - is set to False). - -1.7.0 --> 1.7.1 -=============== - -* UnicodeSyntax now also enables the forall symbol (U+2200). - -1.6.1 --> 1.7.0 -=============== - -* Operators defined on the form - - (a `op` b) c = ... - - could not be handled by the (annotated) AST, nor the parser. I had to - change the definition of the AST node for InfixMatch to allow a list - of right-hand subpatterns, i.e. - - InfixMatch l (Pat l) (Name l) (Pat l) ... - - has become - - InfixMatch l (Pat l) (Name l) [Pat l] ... - - I also had an epiphany and fixed the issue that would arise with - exact printing of prefix definitions including parentheses, so - that now works too! - -** 1.6.x - -1.6.0 --> 1.6.1 -=============== - -* UnicodeSyntax now works not only for identifiers, but also for - ->, <- and =>, as well as Arrows arrows and kind stars. - -1.5.3 --> 1.6.0 -=============== - -* (=~=) turns out to be too general at Functor (for intuitive and not - technical reasons), so is specialised to Annotated to closer mirror - the original intention. - -* applyFixities is hoisted to a monad, and now fails on ambiguous infix - expressions. - -** 1.5.x - -1.5.2 --> 1.5.3 -=============== - -* Several small bug fixes in the exact printer, and fail more gracefully - if the number of srcInfoPoints doesn't match the needs of the node. - -1.5.1 --> 1.5.2 -=============== - -* Fix a bug in the exact printer that made it always print the first token - at position (0,0). - -* In fixing the above, Annotated is now a superclass of ExactP. It was already - a superclass in spirit, and nothing can break from this since ExactP is only - exported abstractly. - -1.5.0 --> 1.5.1 -=============== - -* The pretty printer now introduces parentheses for non-atomic arguments to - function application. Note that infix applications are left untouched, no - parentheses will be inserted there, as it is assumed that fixities are - already properly resolved. - -* Fix a bug in the pretty printer where view patterns and n+k patterns were - not properly parenthesised. - -1.4.0 --> 1.5.0 -=============== - -* Add support for acting on LINE pragmas while parsing, i.e. updating the source - position according to info given in LINE pragmas. This is done conditionally - based on a new flag ignoreLinePragmas in the ParseMode, hence the need to - increase the major version. - -** 1.4.x - -1.3.5 --> 1.4.0 -=============== - -* The AST node for Proc in the simple AST is changed to include a SrcLoc argument, - to make it consistent with similar nodes e.g. Lambda. This is specifically needed - for transformation of patterns in HSX. - - -** 1.3.x - -1.3.4 --> 1.3.5 -=============== - -* Added an entry point in the parser for statements, and an instance Parseable Stmt - to go with it. - -* Ensured that .Annotated exports all relevant parseXXX(WithYYY) functions. - -1.3.3 --> 1.3.4 -=============== - -* Operator fixities are now resolved in patterns. - -1.3.2 --> 1.3.3 -=============== - -* Fixes a bug where qualified keywords are rejected even if the extension that - enables the keyword in question is not turned on. - - -1.3.0 --> 1.3.2 -=============== - -(Let's forget 1.3.1 ever existed.) - -* Fix a bug where declarations of infix operators were not properly merged as FunBinds. - +1.23.1 --> 1.24.0+=================+* Support ImportQualifiedPost (#477)+ - Technically breaking change: KnownExtension gained a new constructor ImportQualifiedPost+* Fix pretty printing of promoted list/tuple with space padding (#423)+* Fix lexing of operator symbols like @: when TypeApplications is enabled (#430)+* Read files strictly before closing to prevent resource leaks (#460)+* Add Safe Haskell annotations to many modules (#465)+* Remove noncanonical return and mappend definitions (#481)+* Solve some compiler warnings (#464)+* Performance optimization: use strict accumulators in lexString and parseInteger (#479)+++1.23.0 --> 1.23.1+=================+* show instance for SrcLoc and SrcSpan renders "(-1)" instead of "-1"+* Allow empty closed type families (#452)+++1.22.0 --> 1.23.0+=================+* Add support for BlockArguments (#444)+ - Technically breaking change: KnownExtension gained a new constructor BlockArguments+* Add support for Arrow Brackets (#445)+ - Tecnically breaking change: Exp gained new constructor ArrOp++1.21.1 --> 1.22.0+=================+* Support QuantifiedConstraints (#427)+ - Breaking change: constructors for PAsst changed+ - Technically breaking change: KnownExtention gained a new constructor QuantifiedConstraints+* Support Template Haskell typed splices and quotations (#432)+ - Breaking change: new constructors on Token data type+* Fix unicode identifier parsing (#442)++1.21.0 --> 1.21.1+=================+* GHC 8.8.1 compatibility (MonadFail)++1.20.3 --> 1.21.0+=================+* DerivingVia (#420)+* TypeInType (#414)+* Parse TH-quoted list constructor (#415)++1.20.2 --> 1.20.3+=================+* GHC 8.6.1 compatability (MonadFail)+* Remove cpphs dependency++1.20.1 --> 1.20.2+=================+* Add fixity of (&)+* GHC 8.4.1 compatability++1.20.0 --> 1.20.1+===================+* Fix two test failures++1.19.1 --> 1.20.0+===================++* GHC 8.2 updates+* Add some missing Generics instances (#380)+* Support Template Haskell pattern splices (#352)+* Fix overloaded labels starting with _ (#362)+* Relax MultiParamTypeClass check (#333)+* DeriveAnyClass (#337)+* Deriving Strategies (#387)+* OVERLAPS/OVERLAPPING/OVERLAPPABLE pragmas+* Unboxed Sums+* Expression holes in infix expressions+* Support multiple pattern synonyms per pattern synonym signature+* COMPLETE pragmas+* Fix #309, remove unnecessary semi-colon from pretty printer+* Refine ExplicitNamespaces to properly export type operators++1.19.0 --> 1.19.1+===================++* Revert making fields of `SrcLoc` strict. (#340)+++1.18.2 --> 1.19.0+===================++* Add JavaScriptFFI to known extensions (#335)+* Remove space when pretty printing `SrcLoc`. (#307)+* Don't reverse arguments in a context. (#328)+* Add support for EmptyCase extension (#255)+++1.18.1 --> 1.18.2+===================++* Fix overzealous lexing of type applications++1.18.0 --> 1.18.1+===================++* Fix overzealous lexing of overloaded labels.+++1.17.1 --> 1.18.0+===================++* Remove simplified AST+* GHC 8.0 update: Overloaded labels, type applications, pattern synonym+extensions, StrictData, injective type families++AST changes:++* Add TyQuasiQuote (#279).++Other changes:++* Only treat 'role' as a keyword in certain contexts (#286).+* Prettyprint '!' in patterns correctly when BangPatterns are enabled (#287).+* Parse magic hash with multiple trailing hashes (#300).+* Apply fixities inside pattern synonym builders+* Fix lexing of idents with multiple trailing #++** 1.17.x++1.17.0 --> 1.17.1+=================++Bug Fix:++* Fix bug in parsing view patterns (#284)++1.16.0.1 --> 1.17.0+===================++AST changes:++* Replaced VarA with AppA in Asst (#168).+* Promoted list/tuple members changed from Promoted to Type (#162).+* Update PatBind, Match, and Alt from containing Binds to Maybe Binds to+ distinguish between empty where clauses and where clauses with no+ binds (#244).+* Add RoleAnnotDecl and Role to support Role annotations (#215).+* Move NameSpace field from EVar/IVar to EAbs/IAbs.++Other changes:++* Add standalone parsers for ImportDecl.+* Fix pretty-printer bugs for HaRP (#160).+* Insert parentheses when pretty-printing non-atomic bang types (#169).+* Un-reverse confusion of left and right arrow (#175).+* Prettyprint option pragmas like 1.15 (#172).+* Conditionally insert lines when pretty-printing declarations (#171).+* Distinguish deriving (Show) from deriving Show (#189).+* Allow parsing of unicode subscript and superscript functions (#173).+* Pretty print unboxed tuples with spaces (#193).+* Improve performance when parsing long extension lists (#200).+* Properly pretty print constructor and class operators (#204).+* Read Haskell source files as UTF-8 (#223).+* Fix ExplicitNamespaces parsing (#216).+* PolyKinds implies KindSignatures (#220).+* Preserve location information for infix binds (#205).+* Preserve positional information in checkPattern (#231).+* Maintain correct line numbers when parsing multiline GHC_OPTIONS (#218).+* Correctly parse "*" with TypeOperators (#81).+* Export the "pretty" method (#222).+* Add javascript calling convention for foreign imports (#236).+* Add non-greedy parsers for module heads (#191).+* Add a flag to disable arity checking when parsing (#260).+* Parse "-" in type signatures (#206).+* Add support for type wildcards and expression holes (#252).+* Add support for Pattern Synonyms (#197).+* Bump the happy lower bound (#250).+* Make test suite pass on GHC 7.12 (#224).+* Support linking Haddock comments to AST nodes (#213).+* Parse multiline LANGUAGE pragmas (#217).+* Parse trailing where (#25).+* Parse modules starting with pragmas and indented+ "module" keyword (#122).+* Use pretty-show to get human readable test outputs.+* Respect fixity declarations inside where/let/class in+ `applyFixities` (#212).+* Correctly parse the combination of view patterns and bang patterns. (#276)++** 1.16.x++1.16.0 --> 1.16.0.1+===================++Include generated InternalParser.hs in the release tarball+(See http://ro-che.info/articles/2014-03-08-happy-alex-ghc-7.8 for details)++1.15.0.1 --> 1.16.0+===================++New language features:++* DoRec+* Closed type families+* GADT records+* ExplicitNamespaces+* Type equality constraints+* PolyKinds+* DataKinds+* Default associated types+* Instance signatures+* OVERLAP pragma+* Parallel arrays+* MINIMAL pragma+* Default signatures+* Safe Haskell+* Binary literals+* Qualified record puns+* Type splices++AST changes:++* PatBind no longer contains the optional Maybe Type field. The type+ signature is now represented as part of the pattern (PatTypeSig)+* GuardedAlt and GuardedAlts types are replaced with the isomorphic+ GuardedRhs and Rhs types+* Move parentheses from the Context to Asst type+* Change DeclHead and InstHead to make it possible to represent+ various ways to put parentheses around parts of declarations. Introduce a new+ type InstRule for the same purpose.+* Change representation of negated patterns+* Make strictness annotations on data type fields part of those fields' Type++Notable bug fixes:++* Allow statements, and not just expression, in MultiWayIf conditions+* Allow equality constraints when GADTs are enabled+* Fix parsing and printing of pragma modifiers, such as CONLIKE+* Don't treat 'capi' or 'interruptible' as a keyword except after 'foreign'+* Let ImpredicativeTypes imply ExplicitForAll+* Let RecursiveDo enable 'rec' keyword+* Fix pretty-printing of the unary minus sign+* Do not require FlexibleContexts for things like Ord (i Int) => ...+* Fix pretty-printing of deriving clauses+* Parse "Constraint" as a kind with ConstraintKinds enabled+* Support qualified quasi-quoters+* Enable ScopedTypeVariables when parsing rules+* Only permit record wildcards in last position+* Allow n-parameter infix data declaration heads++Other changes:++* Expose showToken from Language.Haskell.Exts.Lexer+* Show instance for SrcLoc and SrcSpan are changed (now they do not contain+* field names)+* Add DeriveGeneric to known extensions++** 1.15.x++1.15.0 --> 1.15.0.1+===============++* Eliminate inexhaustive patterns (and consequent bugs)+* The test suite for 1.15.0 wouldn't build due to a missing file in the source+ distribution. Fixed.++1.14.0.1 --> 1.15.0+===============++* Add support for extensions:+ - MultiWayIf+ - LambdaCase+ - DataKinds+* Remove support for old (deprecated) Generics+* Derive GHC's Generic instances for datatypes+* Derive some missing Data and Typeable instances+* Multiple bug fixes+* Add missing Functor and Applicative instances for monads+* Remove support for GHCs older than 7.4++** 1.14.x++1.14.0 --> 1.14.0.1+===============++Nothing has actually changed here (apart from the CHANGELOG). This release is+done to include InternalParser.hs generated with happy 1.19 so that it compiles+with GHC 7.8.++1.13.6 --> 1.14.0+===============++* Modernize the Extension datatype in L.H.E.Extension, following the lead+ of Cabal, to allow negative and positive extension modifiers (turning+ features on and off). You need to worry about backwards-incompatible+ changes if any of the following pertains to you:+ 1) If you use the Extension datatype programmatically - it has changed+ significantly (see documentation).+ 2) The ParseMode record now has one more field+ (baseLanguage :: Language), which might give you a type error.+ 3) The behavior of the (extensions :: [Extension]) field has changed,+ which could bite you if you pass custom extensions in the ParseMode.+ Previously, the ParseMode defaulted to the list of extensions accepted+ by Haskell2010, and if you set the list explicitly you would override+ this. Now, the defaults are { baseLanguage = Haskell2010, extensions = [] },+ and explicitly setting a list of extensions will be interpreted on top of+ Haskell2010. See further the documentation for L.H.E.Extension.++* Add support for the 'capi' calling convention. It is enabled with the CApiFFI+ extension. It's been included since GHC 7.4, and advertised since 7.6.++* Add support for the 'interruptible' FFI safety annotation, enabled with+ the InterruptibleFFI extension.++* Give better error message when lexing newline fails. In particular, fix the bug+ when the parser would crash if the file didn't end with a newline.++* Support unboxed tuple expressions and patterns.++* Fix bug in lexing of primitive integer literals in hex or octal notation.++* Disallow negative primitive word literals+ (such as W# (-0x8000000000000000##)).++* Allow phase control for SPECIALIZE pragma.++* Derive Foldable and Traversable instances for all annotated AST types.++* Fix bug with pretty-printing WARNING and DEPRECATED pragmas.+++** 1.13.x++1.13.5 --> 1.13.6+===============++* Allow 0-parameter type classes when MultiParamTypeClasses is on.++* Add support for NondecreasingIndentation. Previously it was always on,+ which is the default behavior in GHC. Now it is on only if enabled, or+ when using the newly added ghcDefaults extension set (instead of haskell2010).+++1.13.4 --> 1.13.5+===============++* Expose Language.Haskell.Exts.Lexer, which implements+ a standalone token stream lexer. The module is+ re-exported both by Language.Haskell.Exts and by+ Language.Haskell.Exts.Annotated.+++1.13.3 --> 1.13.4+===============++* Fix bug where operators starting with # written in+ parentheses would not be parsed when UnboxedTuples is+ turned on. Now works.++* Allow 'family' and 'forall' as (non-type) varid's. This+ adds one more shift/reduce conflict to the parser, and+ its resolution means that '{-# RULES "name" forall = ... #-}'+ is not allowed.++* Complete the set of FFI calling conventions from the Haskell+ 2010 report (even if no compiler implements them). Also+ include the 'js' calling convention, supported by UHC.+++1.13.2 --> 1.13.3+===============++* Fundep premises are now allowed to be empty.++* Fix the bug where the lexer would crash on a LINE pragma+ that did not include a line number.++* Fix the bug where the lexer would require the # of a+ MagicHash-style type constructor to be succeeded by at+ least one character in the file.++* Fix long-standing bug where the parser would crash with+ an ugly "Internal error" error message if encountering+ an extra }.++* Report errors at the right place for function arity+ mismatches. Earlier they were reported at end of file,+ now they are reported where the function is declared.++* Lexer now properly fails on line-breaks in string literals.++* Lexer now handles character escapes up to 0x10FFFF (unicode).+++1.13.1 --> 1.13.2+===============++* Fix the bug with the precedence of unary prefix minus.+ Previously it was resolved as binding more tightly+ than any infix operator, now it is correctly treated+ as having the same fixity as binary infix minus.+++1.13.0 --> 1.13.1+===============++* Allow an optional semi before the closing tag of+ an element. This achieves a similar effect for+ XmlSyntax in do blocks as DoAndIfThenElse does for+ the if construct. No more need to indent the closing+ tag one step further than the opening tag.++* Add a dummy 'noLoc :: SrcLoc' to L.H.E.SrcLoc, to+ use when generating code. It could definitely be+ done more elegantly, but not without inducing another+ major version bump, so later.++* Fix a regression from 1.11.x where the parser would crash+ upon encountering non-simple class/data declaration+ heads, e.g. 'data A [a]'. Now fails with a parse error+ as intended.+++1.12.0 --> 1.13.0+===============++* Add extensions DoAndIfThenElse and NPlusKPatterns to+ Language.Haskell.Exts.Extensions.++* DoAndIfThenElse is now supported, at long last,+ making HSE compatible with Haskell2010++* Introduce haskell98 and haskell2010 extension groups,+ exported from Language.Haskell.Exts.Extensions.++* Backwards-incompatible change: default parse mode+ is now to use haskell2010, which means the following+ features are recognized by default: DoAndIfThenElse,+ PatternGuards, ForeignFunctionInterface, EmptyDataDecls.+ NPlusKPatterns is no longer recognized by default.+++** 1.12.x++1.11.1 --> 1.12.0+===============++* Move from old [$...| quasi-quote syntax to the new [...| one.+ The old syntax is still recognized while parsing.++* Allow symbols as variables when TypeOperators is enabled.++* Rename ExplicitForall in ExplicitForAll, to be consistent+ with GHC and the Haskell' process.+++** 1.11.x++1.10.2 --> 1.11.1+===============++* API change: the fixities field in ParseMode is now of type+ Maybe [Fixity]. If the field is Nothing the parsing will+ not try to do any fixity resolution whatsoever, otherwise+ it behaves as before.++* API change, bug fix: The Fixity type contains a QName rather+ than an Op to name the operator. The operator must match+ the given QName exactly (i.e., unqualified names only match+ unqualified names, and qualified names only match qualified+ names) for applyFixities to perform fixups.++* Bug fix: End-of-file inside an OPTIONS pragma no longer loops.++++** 1.10.x++1.10.1 --> 1.10.2+===============++* Fix a missing case in the Functor declaration for Decl. Thanks+ to Malcolm Wallace for the patch!++1.10.0 --> 1.10.1+===============++* Enable the unicode version of DoubleColon (x2237). Thanks+ to Andr�s Sicard-Ram�rez for the patch!++1.9.6 --> 1.10.0+===============++* Ensure that implied extensions are always picked up, not only+ when using the parseFile* family of functions as previously.++* Add the newly devised <%>...</%> syntax to the XmlSyntax support.+ This causes changes to pretty much everything, including adding+ a case to the AST which prompts the major version bump.+++** 1.9.x++1.9.5 --> 1.9.6+===============++* Fix a bug (#203) where the lexer loops on malformed quasi-quoters.++* Fix a bug with pretty-printing RULES pragmas.++1.9.4 --> 1.9.5+===============++* Fix a bug where deriving clauses for GADT-style data declarations+ were not properly indented.++* Pretty-printing patterns is now more accurate in inserting (and not+ inserting) parentheses when needed.++1.9.3 --> 1.9.4+===============++* Pretty-printer now inserts parentheses in clever places when+ printing kinds.++* Pretty-printing expressions is now far more accurate in inserting+ (and not inserting) parentheses when needed.++* Pretty-printing negative expressions no longer inserts a superfluous+ space between the - and the expression.++1.9.2 --> 1.9.3+===============++* Constructors for newtype declarations must now have exactly one+ argument. This is only when using the classic syntax, not with+ GADT-style syntax.++* Fix a bug where preceding commas in tuple sections were counted+ one too few.++1.9.1 --> 1.9.2+===============++* Fix a bug with pretty-printing lexer tokens.++* Fix a bug where non-colon TypeOperators could not be used in+ prefix mode.++1.9.0 --> 1.9.1+===============++* Export parseFileContentsWithExts from .Exts.++1.8.2 --> 1.9.0+===============++* OptionPragma is renamed to the more descriptive ModulePragma,+ and adds a constructor AnnModulePragma for handling ANN pragmas+ preceding module header.++* Add instances for Eq/Ord/Data/Typeable for Fixity.++* Add 'parseFileWithComments' and 'parseFileContentsWithComments'+ to L.H.Exts .++* More informative error messages when HSX tags are mismatched.++++** 1.8.x++1.8.1 --> 1.8.2+===============++* Don't insert redundant parentheses around record constructions+ and updates.++1.8.0 --> 1.8.1+===============++* Fix three bugs with the handling of ANN. I must have been really+ tired when implementing that support.++1.7.2 --> 1.8.0+===============++* Add an instance Show Fixity (derived).++* Support for the new ANN and INLINE_CONLIKE pragmas.++* Export knownExtensions from .Extension.++* Remove support for CFILES and INCLUDE pragmas. The support wasn't+ correct anyway, as it assumed the pragmas appeared at the top of+ files. As CFILES/INCLUDE pragmas can (and do) appear anywhere,+ there's no hope to support them in the AST. Better to remove the+ support altogether. Files with CFILES/INCLUDE pragmas can still+ be parsed of course, but those pragmas will be handled as comments.++* Parsing with ignoreLinePragmas = False now correctly updates the+ file name.++* Allow the whole SPECIALISE/INLINE family of pragmas in instance+ declarations. The InsInline constructor is removed, and is now+ represented by InsDecl (InlineSig ...).++* Fix a bug with line numbering and quasi quotes, and a similar one+ with line numbering and CDATA.++* Fix a few minor bugs in the exactPrinter.++* Fix the strange handling of so called strings in LINE pragmas.++** 1.7.x++1.7.1 --> 1.7.2+===============++* Fixes a bug in lexing LINE pragmas (used when ignoreLinePragmas+ is set to False).++1.7.0 --> 1.7.1+===============++* UnicodeSyntax now also enables the forall symbol (U+2200).++1.6.1 --> 1.7.0+===============++* Operators defined on the form++ (a `op` b) c = ...++ could not be handled by the (annotated) AST, nor the parser. I had to+ change the definition of the AST node for InfixMatch to allow a list+ of right-hand subpatterns, i.e.++ InfixMatch l (Pat l) (Name l) (Pat l) ...++ has become++ InfixMatch l (Pat l) (Name l) [Pat l] ...++ I also had an epiphany and fixed the issue that would arise with+ exact printing of prefix definitions including parentheses, so+ that now works too!++** 1.6.x++1.6.0 --> 1.6.1+===============++* UnicodeSyntax now works not only for identifiers, but also for+ ->, <- and =>, as well as Arrows arrows and kind stars.++1.5.3 --> 1.6.0+===============++* (=~=) turns out to be too general at Functor (for intuitive and not+ technical reasons), so is specialised to Annotated to closer mirror+ the original intention.++* applyFixities is hoisted to a monad, and now fails on ambiguous infix+ expressions.++** 1.5.x++1.5.2 --> 1.5.3+===============++* Several small bug fixes in the exact printer, and fail more gracefully+ if the number of srcInfoPoints doesn't match the needs of the node.++1.5.1 --> 1.5.2+===============++* Fix a bug in the exact printer that made it always print the first token+ at position (0,0).++* In fixing the above, Annotated is now a superclass of ExactP. It was already+ a superclass in spirit, and nothing can break from this since ExactP is only+ exported abstractly.++1.5.0 --> 1.5.1+===============++* The pretty printer now introduces parentheses for non-atomic arguments to+ function application. Note that infix applications are left untouched, no+ parentheses will be inserted there, as it is assumed that fixities are+ already properly resolved.++* Fix a bug in the pretty printer where view patterns and n+k patterns were+ not properly parenthesised.++1.4.0 --> 1.5.0+===============++* Add support for acting on LINE pragmas while parsing, i.e. updating the source+ position according to info given in LINE pragmas. This is done conditionally+ based on a new flag ignoreLinePragmas in the ParseMode, hence the need to+ increase the major version.++** 1.4.x++1.3.5 --> 1.4.0+===============++* The AST node for Proc in the simple AST is changed to include a SrcLoc argument,+ to make it consistent with similar nodes e.g. Lambda. This is specifically needed+ for transformation of patterns in HSX.+++** 1.3.x++1.3.4 --> 1.3.5+===============++* Added an entry point in the parser for statements, and an instance Parseable Stmt+ to go with it.++* Ensured that .Annotated exports all relevant parseXXX(WithYYY) functions.++1.3.3 --> 1.3.4+===============++* Operator fixities are now resolved in patterns.++1.3.2 --> 1.3.3+===============++* Fixes a bug where qualified keywords are rejected even if the extension that+ enables the keyword in question is not turned on.+++1.3.0 --> 1.3.2+===============++(Let's forget 1.3.1 ever existed.)++* Fix a bug where declarations of infix operators were not properly merged as FunBinds.+
+ README.md view
@@ -0,0 +1,48 @@+Haskell Source Extensions+=========================++haskell-src-exts is a package for handling and manipulating Haskell source+code. It is a descendant of the haskell-src package that is part of the standard+libraries, but extends this to support a number of syntactic+extensions, e.g. MPTCs, fundeps, GADTs, TH etc. The aim is to support all+extensions recognized by the community, as determined by what is implemented+in compilers and tools.++Apart from the more standard extensions supported by e.g. GHC,+haskell-src-exts provides support for HaRP (Haskell Regular Patterns)+and HSX (Haskell Source with XML) syntax.++Package structure+-----------------++The modules that comprise haskell-src-exts all reside in the hierarchic+namespace Language.Haskell.Exts. Notable exposed modules include:++* `Language.Haskell.Exts` - Imports and re-exports all the below,+ and also defines some functions that combine functionality from several+ modules.+* `Language.Haskell.Exts.Syntax` - The abstract syntax tree+ that the other modules work on.+* `Language.Haskell.Exts.Build` - Combinators for building+ abstract syntax.+* `Language.Haskell.Exts.Parser` - Functions for parsing Haskell+ source code into an abstract syntax representation.+++License+-------++The haskell-src-exts Package is distributed under a derived BSD-style license. It+derives from several sources, all of which are distributable under+BSD-style or compatible licenses. See the file LICENSE for the complete+license text.+++Maintenance+--------------++Dan Burton is currently keeping haskell-src-exts on life support.+If you are interested in more actively making improvements to this package,+please make your interests known.++You might want to try [ghc-lib-parser](http://hackage.haskell.org/package/ghc-lib-parser) instead.
+ RELEASENOTES-1.17.0 view
@@ -0,0 +1,35 @@+I am pleased to announce the release of haskell-src-exts-1.17.0! ++Hackage: https://hackage.haskell.org/package/haskell-src-exts-1.17.0 +GitHub: https://github.com/haskell-suite/haskell-src-exts ++This release brings bugfixes, as well as the following language +features: ++* Type wildcards and expression holes (#252).+* Pattern Synonyms (#197).++The full changelog is available at ++https://github.com/haskell-suite/haskell-src-exts/blob/1.17.0/CHANGELOG++This release is brought to you by:++Matthew Pickering+Michael Walker+Simon Marlow+Neil Mitchell+JP Moresmau+Артур Файзрахманов+phischu+Michael Sloan+m00nlight+Niklas Broberg+Stijn van Drongelen+Jakub Kozlowski+Leonid Onokhov++Matthew Pickering is a force of nature who deserves a special mention+for all his contributions to this release.++Peter
Setup.hs view
@@ -1,8 +1,2 @@ import Distribution.Simple-import System.Process (rawSystem)-import System.Exit (ExitCode(..))-import System.FilePath ((</>))-main = defaultMainWithHooks $ simpleUserHooks { runTests = \args _ _ _ -> do- ExitSuccess <- rawSystem "runhaskell" (("Test" </> "Runner.hs") : args)- return ()- }+main = defaultMain
− Test/Runner.hs
@@ -1,74 +0,0 @@--- | Use "runhaskell Setup.hs test" or "cabal test" to run these tests.--- Particular files may be selected by supplying their names as arguments.-module Main where--import Language.Haskell.Exts.Annotated-import System.IO-import Control.Monad-import Data.List-import Data.Char-import System.Directory-import System.Environment (getArgs)-import System.Exit (exitFailure)-import System.FilePath---main :: IO ()-main = go =<< getArgs----- | Run the selected tests - or all of them if the supplied list is empty-go :: [FilePath] -> IO ()-go testsToRun = do- hSetBuffering stdout NoBuffering- files <- if null testsToRun then getDirectoryContents examplesDir else return testsToRun- putStrLn "Testing parser:"- src <- liftM (map (head . words) . lines) . readFile $ "Test" </> "failing.txt"- results <- sequence [check (x `elem` src) (examplesDir </> x) | x <- files, not $ "." `isPrefixOf` x]- putStrLn "\nAll parsing tests completed!\n"- putStrLn "Testing exact printer:"- pSrc <- liftM (map (head . words) . lines) . readFile $ "Test" </> "printFail.txt"- pResults <- sequence [roundTrip (x `elem` pSrc) (examplesDir </> x)- | x <- files, x `notElem` src, not $ "." `isPrefixOf` x]- putStrLn "\nAll printing tests completed!\n"- unless (all id $ results ++ pResults) exitFailure----- | Where all the tests are to be found-examplesDir :: FilePath-examplesDir = "Test" </> "examples"----- | Runs the test, and returns True unless there is an unexpected result-check :: Bool -> FilePath -> IO Bool-check expected file = do- res <- parseFile file- case res of- ParseOk x | expected -> putStrLn ("\n<unexpected pass for " ++ file ++ ">") >> return False- | otherwise -> putChar '.' >> return True- err | expected -> putChar '!' >> return True- | otherwise -> putStrLn ("\nFailure when parsing " ++ show file ++ "\n" ++ show err) >> return False---roundTrip :: Bool -> FilePath -> IO Bool-roundTrip expected file = do- fc <- readFile file- pr <- parseFileWithComments (defaultParseMode { parseFilename = file }) file- case pr of- ParseOk (ast,cs) -> do- let res = exactPrint ast cs- xs = dropWhile (uncurry (==))- $ zip (map (reverse . dropWhile isSpace . reverse) $ lines fc)- (map (reverse . dropWhile isSpace . reverse) $ lines res)- case xs of- [] | expected -> putStrLn ("\n<unexpected pass for " ++ file ++ ">") >> return False- | otherwise -> putChar '.' >> return True- (lfc, lres):_- | expected -> putChar '!' >> return True- | otherwise -> do- putStrLn $ "Result of print does not match input when printing " ++ show file- putStrLn $ "First unmatching lines are (line length):"- putStrLn $ " Input (" ++ show (length lfc) ++ "): " ++ lfc- putStrLn $ " Result (" ++ show (length lres) ++ "): " ++ lres- return False- err -> putStrLn ("\nFailure when parsing " ++ show file ++ "\n" ++ show err) >> return False
− Test/examples/ArrowLayout.hs
@@ -1,7 +0,0 @@-{-# LANGUAGE Arrows #-} -module ArrowLayout where - -exp = proc () -> do - rec let e = 1 + i - i <- integral -< e - returnA -< e
− Test/examples/Attributes.hs
@@ -1,2181 +0,0 @@-{- |- Module : Data.GraphViz.Attributes- Description : Definition of the Graphviz attributes.- Copyright : (c) Matthew Sackman, Ivan Lazar Miljenovic- License : 3-Clause BSD-style- Maintainer : Ivan.Miljenovic@gmail.com-- This module defines the various attributes that different parts of- a Graphviz graph can have. These attributes are based on the- documentation found at:- <http://graphviz.org/doc/info/attrs.html>-- For more information on usage, etc. please see that document.-- A summary of known current constraints\/limitations\/differences:-- * There might still be a few cases where quotes are still not- escaped/parsed correctly; if you find such a situation, please- let me know; however, you should be able to use 'String' values- directly without having to worry about when quotes are required- or extra escaping of quote characters as 'PrintDot' and- 'ParseDot' instances for 'String' should take care of that- for you.-- * Note that for an edge, in /Dot/ parlance if the edge goes from- /A/ to /B/, then /A/ is the tail node and /B/ is the head node- (since /A/ is at the tail end of the arrow).-- * ColorList and PointfList are defined as actual lists (but- 'LayerList' is not). Note that for the Color 'Attribute' for- node values, only a single Color is valid; edges are allowed- multiple colors with one spline/arrow per color in the list (but- you must have at least one 'Color' in the list). This might be- changed in future.-- * Style is implemented as a list of 'StyleItem' values; note that- empty lists are not allowed.-- * A lot of values have a possible value of @none@. These now- have custom constructors. In fact, most constructors have been- expanded upon to give an idea of what they represent rather than- using generic terms.-- * @PointF@ and 'Point' have been combined, and feature support for pure- 'Int'-based co-ordinates as well as 'Double' ones (i.e. no floating- point-only points for Point). The optional '!' and third value- for Point are not available.-- * 'Rect' uses two 'Point' values to denote the lower-left and- top-right corners.-- * The two 'LabelLoc' attributes have been combined.-- * The defined 'LayerSep' is not used to parse 'LayerRange' or- 'LayerList'; the default (@[' ', ':', '\t']@) is instead used.-- * @SplineType@ has been replaced with @['Spline']@.-- * Only polygon-based 'Shape's are available.-- * 'PortPos' only has the 'CompassPoint' option, not- @PortName[:CompassPoint]@ (since record shapes aren't allowed,- and parsing HTML-like labels could be problematic).-- * Not every 'Attribute' is fully documented/described. However,- all those which have specific allowed values should be covered.-- * Deprecated 'Overlap' algorithms are not defined.-- * The global @Orientation@ attribute is not defined, as it is- difficult to distinguish from the node-based 'Orientation'- 'Attribute'; also, its behaviour is duplicated by 'Rotate'.-- -}-module Data.GraphViz.Attributes- ( -- * The actual /Dot/ attributes.- Attribute(..)- , Attributes- -- ** Validity functions on @Attribute@ values.- , usedByGraphs- , usedBySubGraphs- , usedByClusters- , usedByNodes- , usedByEdges- -- * Value types for @Attribute@s.- , EscString- , URL(..)- , ArrowType(..)- , AspectType(..)- , Rect(..)- , ClusterMode(..)- , DirType(..)- , DEConstraints(..)- , DPoint(..)- , ModeType(..)- , Model(..)- , Label(..)- , Point(..)- , Overlap(..)- , LayerRange(..)- , LayerID(..)- , LayerList(..)- , OutputMode(..)- , Pack(..)- , PackMode(..)- , Pos(..)- , EdgeType(..)- , PageDir(..)- , Spline(..)- , QuadType(..)- , Root(..)- , RankType(..)- , RankDir(..)- , Shape(..)- , SmoothType(..)- , StartType(..)- , STStyle(..)- , StyleItem(..)- , StyleName(..)- , PortPos(..)- , CompassPoint(..)- , ViewPort(..)- , FocusType(..)- , VerticalPlacement(..)- , ScaleType(..)- , Justification(..)- , Ratios(..)- , module Data.GraphViz.Attributes.Colors- -- * Types representing the Dot grammar for @ArrowType@.- , ArrowShape(..)- , ArrowModifier(..)- , ArrowFill(..)- , ArrowSide(..)- -- ** Default @ArrowType@ aliases.- -- *** The 9 primitive @ArrowShape@s.- , box- , crow- , diamond- , dotArrow- , inv- , noArrow- , normal- , tee- , vee- -- *** 5 derived Arrows.- , oDot- , invDot- , invODot- , oBox- , oDiamond- -- *** 5 supported cases for backwards compatibility- , eDiamond- , openArr- , halfOpen- , emptyArr- , invEmpty- -- ** @ArrowModifier@ instances- , noMods- , openMod- -- * Other exported functions\/values- , defLayerSep- , notLayerSep- ) where--import Data.GraphViz.Attributes.Colors-import Data.GraphViz.Util-import Data.GraphViz.Parsing-import Data.GraphViz.Printing--import Data.Char(toLower)-import Data.Maybe(isJust)-import Control.Arrow(first)-import Control.Monad(liftM, liftM2)---- -------------------------------------------------------------------------------{- |-- These attributes have been implemented in a /permissive/ manner:- that is, rather than split them up based on which type of value- they are allowed, they have all been included in the one data type,- with functions to determine if they are indeed valid for what- they're being applied to.-- To interpret the /Valid for/ listings:-- [@G@] Valid for Graphs.-- [@C@] Valid for Clusters.-- [@S@] Valid for Sub-Graphs (and also Clusters).-- [@N@] Valid for Nodes.-- [@E@] Valid for Edges.-- The /Default/ listings are those that the various Graphviz commands- use if that 'Attribute' isn't specified (in cases where this is- /none/, this is equivalent to a 'Nothing' value; that is, no value- is used). The /Parsing Default/ listings represent what value is- used (i.e. corresponds to 'True') when the 'Attribute' name is- listed on its own in /Dot/ source code.--}-data Attribute- = Damping Double -- ^ /Valid for/: G; /Default/: @0.99@; /Minimum/: @0.0@; /Notes/: neato only- | K Double -- ^ /Valid for/: GC; /Default/: @0.3@; /Minimum/: @0@; /Notes/: sfdp, fdp only- | URL URL -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, postscript, map only- | ArrowHead ArrowType -- ^ /Valid for/: E; /Default/: @'normal'@- | ArrowSize Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@- | ArrowTail ArrowType -- ^ /Valid for/: E; /Default/: @'normal'@- | Aspect AspectType -- ^ /Valid for/: G; /Notes/: dot only- | Bb Rect -- ^ /Valid for/: G; /Notes/: write only- | BgColor Color -- ^ /Valid for/: GC; /Default/: X11Color 'Transparent'- | Center Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'- | Charset String -- ^ /Valid for/: G; /Default/: @\"UTF-8\"@- | ClusterRank ClusterMode -- ^ /Valid for/: G; /Default/: @'Local'@; /Notes/: dot only- | ColorScheme ColorScheme -- ^ /Valid for/: ENCG; /Default/: @'X11'@- | Color [Color] -- ^ /Valid for/: ENC; /Default/: @X11Color 'Black'@- | Comment String -- ^ /Valid for/: ENG; /Default/: @\"\"@- | Compound Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only- | Concentrate Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'- | Constraint Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'; /Notes/: dot only- | Decorate Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'- | DefaultDist Double -- ^ /Valid for/: G; /Default/: @1+(avg. len)*sqrt(|V|)@; /Minimum/: @epsilon@; /Notes/: neato only- | Dimen Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only- | Dim Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only- | Dir DirType -- ^ /Valid for/: E; /Default/: @'Forward'@ (directed), @'NoDir'@ (undirected)- | DirEdgeConstraints DEConstraints -- ^ /Valid for/: G; /Default/: @'NoConstraints'@; /Parsing Default/: 'EdgeConstraints'; /Notes/: neato only- | Distortion Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@- | DPI Double -- ^ /Valid for/: G; /Default/: @96.0@, @0.0@; /Notes/: svg, bitmap output only; \"resolution\" is a synonym- | EdgeURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only- | EdgeTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only- | EdgeTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only- | Epsilon Double -- ^ /Valid for/: G; /Default/: @.0001 * # nodes@ (@mode == 'KK'@), @.0001@ (@mode == 'Major'@); /Notes/: neato only- | ESep DPoint -- ^ /Valid for/: G; /Default/: @+3@; /Notes/: not dot- | FillColor Color -- ^ /Valid for/: NC; /Default/: @X11Color 'LightGray'@ (nodes), @X11Color 'Black'@ (clusters)- | FixedSize Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'- | FontColor Color -- ^ /Valid for/: ENGC; /Default/: @X11Color 'Black'@- | FontName String -- ^ /Valid for/: ENGC; /Default/: @\"Times-Roman\"@- | FontNames String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only- | FontPath String -- ^ /Valid for/: G; /Default/: system-dependent- | FontSize Double -- ^ /Valid for/: ENGC; /Default/: @14.0@; /Minimum/: @1.0@- | Group String -- ^ /Valid for/: N; /Default/: @\"\"@; /Notes/: dot only- | HeadURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only- | HeadClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'- | HeadLabel Label -- ^ /Valid for/: E; /Default/: @\"\"@- | HeadPort PortPos -- ^ /Valid for/: E; /Default/: @'PP' 'CenterPoint'@- | HeadTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only- | HeadTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only- | Height Double -- ^ /Valid for/: N; /Default/: @0.5@; /Minimum/: @0.02@- | ID Label -- ^ /Valid for/: GNE; /Default/: @\"\"@; /Notes/: svg, postscript, map only- | Image String -- ^ /Valid for/: N; /Default/: @\"\"@- | ImageScale ScaleType -- ^ /Valid for/: N; /Default/: @'NoScale'@; /Parsing Default/: 'UniformScale'- | LabelURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only- | LabelAngle Double -- ^ /Valid for/: E; /Default/: @-25.0@; /Minimum/: @-180.0@- | LabelDistance Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@- | LabelFloat Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'- | LabelFontColor Color -- ^ /Valid for/: E; /Default/: @X11Color 'Black'@- | LabelFontName String -- ^ /Valid for/: E; /Default/: @\"Times-Roman\"@- | LabelFontSize Double -- ^ /Valid for/: E; /Default/: @14.0@; /Minimum/: @1.0@- | LabelJust Justification -- ^ /Valid for/: GC; /Default/: @'JCenter'@- | LabelLoc VerticalPlacement -- ^ /Valid for/: GCN; /Default/: @'VTop'@ (clusters), @'VBottom'@ (root graphs), @'VCenter'@ (nodes)- | LabelTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only- | LabelTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only- | Label Label -- ^ /Valid for/: ENGC; /Default/: @'StrLabel' \"\N\"@ (nodes), @'StrLabel' \"\"@ (otherwise)- | Landscape Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'- | LayerSep String -- ^ /Valid for/: G; /Default/: @\" :\t\"@- | Layers LayerList -- ^ /Valid for/: G; /Default/: @\"\"@- | Layer LayerRange -- ^ /Valid for/: EN; /Default/: @\"\"@- | Layout String -- ^ /Valid for/: G; /Default/: @\"\"@- | Len Double -- ^ /Valid for/: E; /Default/: @1.0@ (neato), @0.3@ (fdp); /Notes/: fdp, neato only- | LevelsGap Double -- ^ /Valid for/: G; /Default/: @0.0@; /Notes/: neato only- | Levels Int -- ^ /Valid for/: G; /Default/: @MAXINT@; /Minimum/: @0@; /Notes/: sfdp only- | LHead String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only- | LPos Point -- ^ /Valid for/: EGC; /Notes/: write only- | LTail String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only- | Margin DPoint -- ^ /Valid for/: NG; /Default/: device-dependent- | MaxIter Int -- ^ /Valid for/: G; /Default/: @100 * # nodes@ (@mode == 'KK'@), @200@ (@mode == 'Major'@), @600@ (fdp); /Notes/: fdp, neato only- | MCLimit Double -- ^ /Valid for/: G; /Default/: @1.0@; /Notes/: dot only- | MinDist Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: circo only- | MinLen Int -- ^ /Valid for/: E; /Default/: @1@; /Minimum/: @0@; /Notes/: dot only- | Model Model -- ^ /Valid for/: G; /Default/: @'ShortPath'@; /Notes/: neato only- | Mode ModeType -- ^ /Valid for/: G; /Default/: @'Major'@; /Notes/: neato only- | Mosek Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: neato only; requires the Mosek software- | NodeSep Double -- ^ /Valid for/: G; /Default/: @0.25@; /Minimum/: @0.02@; /Notes/: dot only- | NoJustify Bool -- ^ /Valid for/: GCNE; /Default/: @'False'@; /Parsing Default/: 'True'- | Normalize Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: not dot- | Nslimit1 Double -- ^ /Valid for/: G; /Notes/: dot only- | Nslimit Double -- ^ /Valid for/: G; /Notes/: dot only- | Ordering String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: dot only- | Orientation Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @360.0@- | OutputOrder OutputMode -- ^ /Valid for/: G; /Default/: @'BreadthFirst'@- | OverlapScaling Double -- ^ /Valid for/: G; /Default/: @-4@; /Minimum/: @-1.0e10@; /Notes/: prism only- | Overlap Overlap -- ^ /Valid for/: G; /Default/: @'KeepOverlaps'@; /Parsing Default/: 'KeepOverlaps'; /Notes/: not dot- | PackMode PackMode -- ^ /Valid for/: G; /Default/: @'PackNode'@; /Notes/: not dot- | Pack Pack -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'DoPack'; /Notes/: not dot- | Pad DPoint -- ^ /Valid for/: G; /Default/: @'DVal' 0.0555@ (4 points)- | PageDir PageDir -- ^ /Valid for/: G; /Default/: @'BL'@- | Page Point -- ^ /Valid for/: G- | PenColor Color -- ^ /Valid for/: C; /Default/: @X11Color 'Black'@- | PenWidth Double -- ^ /Valid for/: CNE; /Default/: @1.0@; /Minimum/: @0.0@- | Peripheries Int -- ^ /Valid for/: NC; /Default/: shape default (nodes), @1@ (clusters); /Minimum/: 0- | Pin Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: fdp, neato only- | Pos Pos -- ^ /Valid for/: EN- | QuadTree QuadType -- ^ /Valid for/: G; /Default/: @'NormalQT'@; /Parsing Default/: 'NormalQT'; /Notes/: sfdp only- | Quantum Double -- ^ /Valid for/: G; /Default/: @0.0@; /Minimum/: @0.0@- | RankDir RankDir -- ^ /Valid for/: G; /Default/: @'TB'@; /Notes/: dot only- | RankSep Double -- ^ /Valid for/: G; /Default/: @0.5@ (dot), @1.0@ (twopi); /Minimum/: 0.02; /Notes/: twopi, dot only- | Rank RankType -- ^ /Valid for/: S; /Notes/: dot only- | Ratio Ratios -- ^ /Valid for/: G- | Rects Rect -- ^ /Valid for/: N; /Notes/: write only- | Regular Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'- | ReMinCross Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only- | RepulsiveForce Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: sfdp only- | Root Root -- ^ /Valid for/: GN; /Default/: @'NodeName' \"\"@ (graphs), @'NotCentral'@ (nodes); /Parsing Default/: 'IsCentral'; /Notes/: circo, twopi only- | Rotate Int -- ^ /Valid for/: G; /Default/: @0@- | SameHead String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only- | SameTail String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only- | SamplePoints Int -- ^ /Valid for/: N; /Default/: @8@ (output), @20@ (overlap and image maps)- | SearchSize Int -- ^ /Valid for/: G; /Default/: @30@; /Notes/: dot only- | Sep DPoint -- ^ /Valid for/: G; /Default/: @+4@; /Notes/: not dot- | ShapeFile String -- ^ /Valid for/: N; /Default/: @\"\"@- | Shape Shape -- ^ /Valid for/: N; /Default/: @'Ellipse'@- | ShowBoxes Int -- ^ /Valid for/: ENG; /Default/: @0@; /Minimum/: @0@; /Notes/: dot only- | Sides Int -- ^ /Valid for/: N; /Default/: @4@; /Minimum/: @0@- | Size Point -- ^ /Valid for/: G- | Skew Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@- | Smoothing SmoothType -- ^ /Valid for/: G; /Default/: @'NoSmooth'@; /Notes/: sfdp only- | SortV Int -- ^ /Valid for/: GCN; /Default/: @0@; /Minimum/: @0@- | Splines EdgeType -- ^ /Valid for/: G; /Parsing Default/: 'SplineEdges'- | Start StartType -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: fdp, neato only- | StyleSheet String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only- | Style [StyleItem] -- ^ /Valid for/: ENC- | TailURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only- | TailClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'- | TailLabel Label -- ^ /Valid for/: E; /Default/: @\"\"@- | TailPort PortPos -- ^ /Valid for/: E; /Default/: center- | TailTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only- | TailTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only- | Target EscString -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, map only- | Tooltip EscString -- ^ /Valid for/: NEC; /Default/: @\"\"@; /Notes/: svg, cmap only- | TrueColor Bool -- ^ /Valid for/: G; /Parsing Default/: 'True'; /Notes/: bitmap output only- | Vertices [Point] -- ^ /Valid for/: N; /Notes/: write only- | ViewPort ViewPort -- ^ /Valid for/: G; /Default/: none- | VoroMargin Double -- ^ /Valid for/: G; /Default/: @0.05@; /Minimum/: @0.0@; /Notes/: not dot- | Weight Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0@ (dot), @1@ (neato,fdp,sfdp)- | Width Double -- ^ /Valid for/: N; /Default/: @0.75@; /Minimum/: @0.01@- | Z Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-MAXFLOAT@, @-1000@- deriving (Eq, Ord, Show, Read)--type Attributes = [Attribute]--instance PrintDot Attribute where- unqtDot (Damping v) = printField "Damping" v- unqtDot (K v) = printField "K" v- unqtDot (URL v) = printField "URL" v- unqtDot (ArrowHead v) = printField "arrowhead" v- unqtDot (ArrowSize v) = printField "arrowsize" v- unqtDot (ArrowTail v) = printField "arrowtail" v- unqtDot (Aspect v) = printField "aspect" v- unqtDot (Bb v) = printField "bb" v- unqtDot (BgColor v) = printField "bgcolor" v- unqtDot (Center v) = printField "center" v- unqtDot (Charset v) = printField "charset" v- unqtDot (ClusterRank v) = printField "clusterrank" v- unqtDot (ColorScheme v) = printField "colorscheme" v- unqtDot (Color v) = printField "color" v- unqtDot (Comment v) = printField "comment" v- unqtDot (Compound v) = printField "compound" v- unqtDot (Concentrate v) = printField "concentrate" v- unqtDot (Constraint v) = printField "constraint" v- unqtDot (Decorate v) = printField "decorate" v- unqtDot (DefaultDist v) = printField "defaultdist" v- unqtDot (Dimen v) = printField "dimen" v- unqtDot (Dim v) = printField "dim" v- unqtDot (Dir v) = printField "dir" v- unqtDot (DirEdgeConstraints v) = printField "diredgeconstraints" v- unqtDot (Distortion v) = printField "distortion" v- unqtDot (DPI v) = printField "dpi" v- unqtDot (EdgeURL v) = printField "edgeURL" v- unqtDot (EdgeTarget v) = printField "edgetarget" v- unqtDot (EdgeTooltip v) = printField "edgetooltip" v- unqtDot (Epsilon v) = printField "epsilon" v- unqtDot (ESep v) = printField "esep" v- unqtDot (FillColor v) = printField "fillcolor" v- unqtDot (FixedSize v) = printField "fixedsize" v- unqtDot (FontColor v) = printField "fontcolor" v- unqtDot (FontName v) = printField "fontname" v- unqtDot (FontNames v) = printField "fontnames" v- unqtDot (FontPath v) = printField "fontpath" v- unqtDot (FontSize v) = printField "fontsize" v- unqtDot (Group v) = printField "group" v- unqtDot (HeadURL v) = printField "headURL" v- unqtDot (HeadClip v) = printField "headclip" v- unqtDot (HeadLabel v) = printField "headlabel" v- unqtDot (HeadPort v) = printField "headport" v- unqtDot (HeadTarget v) = printField "headtarget" v- unqtDot (HeadTooltip v) = printField "headtooltip" v- unqtDot (Height v) = printField "height" v- unqtDot (ID v) = printField "id" v- unqtDot (Image v) = printField "image" v- unqtDot (ImageScale v) = printField "imagescale" v- unqtDot (LabelURL v) = printField "labelURL" v- unqtDot (LabelAngle v) = printField "labelangle" v- unqtDot (LabelDistance v) = printField "labeldistance" v- unqtDot (LabelFloat v) = printField "labelfloat" v- unqtDot (LabelFontColor v) = printField "labelfontcolor" v- unqtDot (LabelFontName v) = printField "labelfontname" v- unqtDot (LabelFontSize v) = printField "labelfontsize" v- unqtDot (LabelJust v) = printField "labeljust" v- unqtDot (LabelLoc v) = printField "labelloc" v- unqtDot (LabelTarget v) = printField "labeltarget" v- unqtDot (LabelTooltip v) = printField "labeltooltip" v- unqtDot (Label v) = printField "label" v- unqtDot (Landscape v) = printField "landscape" v- unqtDot (LayerSep v) = printField "layersep" v- unqtDot (Layers v) = printField "layers" v- unqtDot (Layer v) = printField "layer" v- unqtDot (Layout v) = printField "layout" v- unqtDot (Len v) = printField "len" v- unqtDot (LevelsGap v) = printField "levelsgap" v- unqtDot (Levels v) = printField "levels" v- unqtDot (LHead v) = printField "lhead" v- unqtDot (LPos v) = printField "lp" v- unqtDot (LTail v) = printField "ltail" v- unqtDot (Margin v) = printField "margin" v- unqtDot (MaxIter v) = printField "maxiter" v- unqtDot (MCLimit v) = printField "mclimit" v- unqtDot (MinDist v) = printField "mindist" v- unqtDot (MinLen v) = printField "minlen" v- unqtDot (Model v) = printField "model" v- unqtDot (Mode v) = printField "mode" v- unqtDot (Mosek v) = printField "mosek" v- unqtDot (NodeSep v) = printField "nodesep" v- unqtDot (NoJustify v) = printField "nojustify" v- unqtDot (Normalize v) = printField "normalize" v- unqtDot (Nslimit1 v) = printField "nslimit1" v- unqtDot (Nslimit v) = printField "nslimit" v- unqtDot (Ordering v) = printField "ordering" v- unqtDot (Orientation v) = printField "orientation" v- unqtDot (OutputOrder v) = printField "outputorder" v- unqtDot (OverlapScaling v) = printField "overlap_scaling" v- unqtDot (Overlap v) = printField "overlap" v- unqtDot (PackMode v) = printField "packmode" v- unqtDot (Pack v) = printField "pack" v- unqtDot (Pad v) = printField "pad" v- unqtDot (PageDir v) = printField "pagedir" v- unqtDot (Page v) = printField "page" v- unqtDot (PenColor v) = printField "pencolor" v- unqtDot (PenWidth v) = printField "penwidth" v- unqtDot (Peripheries v) = printField "peripheries" v- unqtDot (Pin v) = printField "pin" v- unqtDot (Pos v) = printField "pos" v- unqtDot (QuadTree v) = printField "quadtree" v- unqtDot (Quantum v) = printField "quantum" v- unqtDot (RankDir v) = printField "rankdir" v- unqtDot (RankSep v) = printField "ranksep" v- unqtDot (Rank v) = printField "rank" v- unqtDot (Ratio v) = printField "ratio" v- unqtDot (Rects v) = printField "rects" v- unqtDot (Regular v) = printField "regular" v- unqtDot (ReMinCross v) = printField "remincross" v- unqtDot (RepulsiveForce v) = printField "repulsiveforce" v- unqtDot (Root v) = printField "root" v- unqtDot (Rotate v) = printField "rotate" v- unqtDot (SameHead v) = printField "samehead" v- unqtDot (SameTail v) = printField "sametail" v- unqtDot (SamplePoints v) = printField "samplepoints" v- unqtDot (SearchSize v) = printField "searchsize" v- unqtDot (Sep v) = printField "sep" v- unqtDot (ShapeFile v) = printField "shapefile" v- unqtDot (Shape v) = printField "shape" v- unqtDot (ShowBoxes v) = printField "showboxes" v- unqtDot (Sides v) = printField "sides" v- unqtDot (Size v) = printField "size" v- unqtDot (Skew v) = printField "skew" v- unqtDot (Smoothing v) = printField "smoothing" v- unqtDot (SortV v) = printField "sortv" v- unqtDot (Splines v) = printField "splines" v- unqtDot (Start v) = printField "start" v- unqtDot (StyleSheet v) = printField "stylesheet" v- unqtDot (Style v) = printField "style" v- unqtDot (TailURL v) = printField "tailURL" v- unqtDot (TailClip v) = printField "tailclip" v- unqtDot (TailLabel v) = printField "taillabel" v- unqtDot (TailPort v) = printField "tailport" v- unqtDot (TailTarget v) = printField "tailtarget" v- unqtDot (TailTooltip v) = printField "tailtooltip" v- unqtDot (Target v) = printField "target" v- unqtDot (Tooltip v) = printField "tooltip" v- unqtDot (TrueColor v) = printField "truecolor" v- unqtDot (Vertices v) = printField "vertices" v- unqtDot (ViewPort v) = printField "viewport" v- unqtDot (VoroMargin v) = printField "voro_margin" v- unqtDot (Weight v) = printField "weight" v- unqtDot (Width v) = printField "width" v- unqtDot (Z v) = printField "z" v-- listToDot = unqtListToDot--instance ParseDot Attribute where- parseUnqt = oneOf [ liftM Damping $ parseField "Damping"- , liftM K $ parseField "K"- , liftM URL $ parseFields ["URL", "href"]- , liftM ArrowHead $ parseField "arrowhead"- , liftM ArrowSize $ parseField "arrowsize"- , liftM ArrowTail $ parseField "arrowtail"- , liftM Aspect $ parseField "aspect"- , liftM Bb $ parseField "bb"- , liftM BgColor $ parseField "bgcolor"- , liftM Center $ parseFieldBool "center"- , liftM Charset $ parseField "charset"- , liftM ClusterRank $ parseField "clusterrank"- , liftM ColorScheme $ parseField "colorscheme"- , liftM Color $ parseField "color"- , liftM Comment $ parseField "comment"- , liftM Compound $ parseFieldBool "compound"- , liftM Concentrate $ parseFieldBool "concentrate"- , liftM Constraint $ parseFieldBool "constraint"- , liftM Decorate $ parseFieldBool "decorate"- , liftM DefaultDist $ parseField "defaultdist"- , liftM Dimen $ parseField "dimen"- , liftM Dim $ parseField "dim"- , liftM Dir $ parseField "dir"- , liftM DirEdgeConstraints $ parseFieldDef EdgeConstraints "diredgeconstraints"- , liftM Distortion $ parseField "distortion"- , liftM DPI $ parseFields ["dpi", "resolution"]- , liftM EdgeURL $ parseFields ["edgeURL", "edgehref"]- , liftM EdgeTarget $ parseField "edgetarget"- , liftM EdgeTooltip $ parseField "edgetooltip"- , liftM Epsilon $ parseField "epsilon"- , liftM ESep $ parseField "esep"- , liftM FillColor $ parseField "fillcolor"- , liftM FixedSize $ parseFieldBool "fixedsize"- , liftM FontColor $ parseField "fontcolor"- , liftM FontName $ parseField "fontname"- , liftM FontNames $ parseField "fontnames"- , liftM FontPath $ parseField "fontpath"- , liftM FontSize $ parseField "fontsize"- , liftM Group $ parseField "group"- , liftM HeadURL $ parseFields ["headURL", "headhref"]- , liftM HeadClip $ parseFieldBool "headclip"- , liftM HeadLabel $ parseField "headlabel"- , liftM HeadPort $ parseField "headport"- , liftM HeadTarget $ parseField "headtarget"- , liftM HeadTooltip $ parseField "headtooltip"- , liftM Height $ parseField "height"- , liftM ID $ parseField "id"- , liftM Image $ parseField "image"- , liftM ImageScale $ parseFieldDef UniformScale "imagescale"- , liftM LabelURL $ parseFields ["labelURL", "labelhref"]- , liftM LabelAngle $ parseField "labelangle"- , liftM LabelDistance $ parseField "labeldistance"- , liftM LabelFloat $ parseFieldBool "labelfloat"- , liftM LabelFontColor $ parseField "labelfontcolor"- , liftM LabelFontName $ parseField "labelfontname"- , liftM LabelFontSize $ parseField "labelfontsize"- , liftM LabelJust $ parseField "labeljust"- , liftM LabelLoc $ parseField "labelloc"- , liftM LabelTarget $ parseField "labeltarget"- , liftM LabelTooltip $ parseField "labeltooltip"- , liftM Label $ parseField "label"- , liftM Landscape $ parseFieldBool "landscape"- , liftM LayerSep $ parseField "layersep"- , liftM Layers $ parseField "layers"- , liftM Layer $ parseField "layer"- , liftM Layout $ parseField "layout"- , liftM Len $ parseField "len"- , liftM LevelsGap $ parseField "levelsgap"- , liftM Levels $ parseField "levels"- , liftM LHead $ parseField "lhead"- , liftM LPos $ parseField "lp"- , liftM LTail $ parseField "ltail"- , liftM Margin $ parseField "margin"- , liftM MaxIter $ parseField "maxiter"- , liftM MCLimit $ parseField "mclimit"- , liftM MinDist $ parseField "mindist"- , liftM MinLen $ parseField "minlen"- , liftM Model $ parseField "model"- , liftM Mode $ parseField "mode"- , liftM Mosek $ parseFieldBool "mosek"- , liftM NodeSep $ parseField "nodesep"- , liftM NoJustify $ parseFieldBool "nojustify"- , liftM Normalize $ parseFieldBool "normalize"- , liftM Nslimit1 $ parseField "nslimit1"- , liftM Nslimit $ parseField "nslimit"- , liftM Ordering $ parseField "ordering"- , liftM Orientation $ parseField "orientation"- , liftM OutputOrder $ parseField "outputorder"- , liftM OverlapScaling $ parseField "overlap_scaling"- , liftM Overlap $ parseFieldDef KeepOverlaps "overlap"- , liftM PackMode $ parseField "packmode"- , liftM Pack $ parseFieldDef DoPack "pack"- , liftM Pad $ parseField "pad"- , liftM PageDir $ parseField "pagedir"- , liftM Page $ parseField "page"- , liftM PenColor $ parseField "pencolor"- , liftM PenWidth $ parseField "penwidth"- , liftM Peripheries $ parseField "peripheries"- , liftM Pin $ parseFieldBool "pin"- , liftM Pos $ parseField "pos"- , liftM QuadTree $ parseFieldDef NormalQT "quadtree"- , liftM Quantum $ parseField "quantum"- , liftM RankDir $ parseField "rankdir"- , liftM RankSep $ parseField "ranksep"- , liftM Rank $ parseField "rank"- , liftM Ratio $ parseField "ratio"- , liftM Rects $ parseField "rects"- , liftM Regular $ parseFieldBool "regular"- , liftM ReMinCross $ parseFieldBool "remincross"- , liftM RepulsiveForce $ parseField "repulsiveforce"- , liftM Root $ parseFieldDef IsCentral "root"- , liftM Rotate $ parseField "rotate"- , liftM SameHead $ parseField "samehead"- , liftM SameTail $ parseField "sametail"- , liftM SamplePoints $ parseField "samplepoints"- , liftM SearchSize $ parseField "searchsize"- , liftM Sep $ parseField "sep"- , liftM ShapeFile $ parseField "shapefile"- , liftM Shape $ parseField "shape"- , liftM ShowBoxes $ parseField "showboxes"- , liftM Sides $ parseField "sides"- , liftM Size $ parseField "size"- , liftM Skew $ parseField "skew"- , liftM Smoothing $ parseField "smoothing"- , liftM SortV $ parseField "sortv"- , liftM Splines $ parseFieldDef SplineEdges "splines"- , liftM Start $ parseField "start"- , liftM StyleSheet $ parseField "stylesheet"- , liftM Style $ parseField "style"- , liftM TailURL $ parseFields ["tailURL", "tailhref"]- , liftM TailClip $ parseFieldBool "tailclip"- , liftM TailLabel $ parseField "taillabel"- , liftM TailPort $ parseField "tailport"- , liftM TailTarget $ parseField "tailtarget"- , liftM TailTooltip $ parseField "tailtooltip"- , liftM Target $ parseField "target"- , liftM Tooltip $ parseField "tooltip"- , liftM TrueColor $ parseFieldBool "truecolor"- , liftM Vertices $ parseField "vertices"- , liftM ViewPort $ parseField "viewport"- , liftM VoroMargin $ parseField "voro_margin"- , liftM Weight $ parseField "weight"- , liftM Width $ parseField "width"- , liftM Z $ parseField "z"- ]-- parse = parseUnqt-- parseList = parseUnqtList---- | Determine if this Attribute is valid for use with Graphs.-usedByGraphs :: Attribute -> Bool-usedByGraphs Damping{} = True-usedByGraphs K{} = True-usedByGraphs URL{} = True-usedByGraphs Aspect{} = True-usedByGraphs Bb{} = True-usedByGraphs BgColor{} = True-usedByGraphs Center{} = True-usedByGraphs Charset{} = True-usedByGraphs ClusterRank{} = True-usedByGraphs ColorScheme{} = True-usedByGraphs Comment{} = True-usedByGraphs Compound{} = True-usedByGraphs Concentrate{} = True-usedByGraphs DefaultDist{} = True-usedByGraphs Dimen{} = True-usedByGraphs Dim{} = True-usedByGraphs DirEdgeConstraints{} = True-usedByGraphs DPI{} = True-usedByGraphs Epsilon{} = True-usedByGraphs ESep{} = True-usedByGraphs FontColor{} = True-usedByGraphs FontName{} = True-usedByGraphs FontNames{} = True-usedByGraphs FontPath{} = True-usedByGraphs FontSize{} = True-usedByGraphs ID{} = True-usedByGraphs LabelJust{} = True-usedByGraphs LabelLoc{} = True-usedByGraphs Label{} = True-usedByGraphs Landscape{} = True-usedByGraphs LayerSep{} = True-usedByGraphs Layers{} = True-usedByGraphs Layout{} = True-usedByGraphs LevelsGap{} = True-usedByGraphs Levels{} = True-usedByGraphs LPos{} = True-usedByGraphs Margin{} = True-usedByGraphs MaxIter{} = True-usedByGraphs MCLimit{} = True-usedByGraphs MinDist{} = True-usedByGraphs Model{} = True-usedByGraphs Mode{} = True-usedByGraphs Mosek{} = True-usedByGraphs NodeSep{} = True-usedByGraphs NoJustify{} = True-usedByGraphs Normalize{} = True-usedByGraphs Nslimit1{} = True-usedByGraphs Nslimit{} = True-usedByGraphs Ordering{} = True-usedByGraphs OutputOrder{} = True-usedByGraphs OverlapScaling{} = True-usedByGraphs Overlap{} = True-usedByGraphs PackMode{} = True-usedByGraphs Pack{} = True-usedByGraphs Pad{} = True-usedByGraphs PageDir{} = True-usedByGraphs Page{} = True-usedByGraphs QuadTree{} = True-usedByGraphs Quantum{} = True-usedByGraphs RankDir{} = True-usedByGraphs RankSep{} = True-usedByGraphs Ratio{} = True-usedByGraphs ReMinCross{} = True-usedByGraphs RepulsiveForce{} = True-usedByGraphs Root{} = True-usedByGraphs Rotate{} = True-usedByGraphs SearchSize{} = True-usedByGraphs Sep{} = True-usedByGraphs ShowBoxes{} = True-usedByGraphs Size{} = True-usedByGraphs Smoothing{} = True-usedByGraphs SortV{} = True-usedByGraphs Splines{} = True-usedByGraphs Start{} = True-usedByGraphs StyleSheet{} = True-usedByGraphs Target{} = True-usedByGraphs TrueColor{} = True-usedByGraphs ViewPort{} = True-usedByGraphs VoroMargin{} = True-usedByGraphs _ = False---- | Determine if this Attribute is valid for use with Clusters.-usedByClusters :: Attribute -> Bool-usedByClusters K{} = True-usedByClusters URL{} = True-usedByClusters BgColor{} = True-usedByClusters ColorScheme{} = True-usedByClusters Color{} = True-usedByClusters FillColor{} = True-usedByClusters FontColor{} = True-usedByClusters FontName{} = True-usedByClusters FontSize{} = True-usedByClusters LabelJust{} = True-usedByClusters LabelLoc{} = True-usedByClusters Label{} = True-usedByClusters LPos{} = True-usedByClusters NoJustify{} = True-usedByClusters PenColor{} = True-usedByClusters PenWidth{} = True-usedByClusters Peripheries{} = True-usedByClusters Rank{} = True-usedByClusters SortV{} = True-usedByClusters Style{} = True-usedByClusters Target{} = True-usedByClusters Tooltip{} = True-usedByClusters _ = False---- | Determine if this Attribute is valid for use with SubGraphs.-usedBySubGraphs :: Attribute -> Bool-usedBySubGraphs Rank{} = True-usedBySubGraphs _ = False---- | Determine if this Attribute is valid for use with Nodes.-usedByNodes :: Attribute -> Bool-usedByNodes URL{} = True-usedByNodes ColorScheme{} = True-usedByNodes Color{} = True-usedByNodes Comment{} = True-usedByNodes Distortion{} = True-usedByNodes FillColor{} = True-usedByNodes FixedSize{} = True-usedByNodes FontColor{} = True-usedByNodes FontName{} = True-usedByNodes FontSize{} = True-usedByNodes Group{} = True-usedByNodes Height{} = True-usedByNodes ID{} = True-usedByNodes Image{} = True-usedByNodes ImageScale{} = True-usedByNodes LabelLoc{} = True-usedByNodes Label{} = True-usedByNodes Layer{} = True-usedByNodes Margin{} = True-usedByNodes NoJustify{} = True-usedByNodes Orientation{} = True-usedByNodes PenWidth{} = True-usedByNodes Peripheries{} = True-usedByNodes Pin{} = True-usedByNodes Pos{} = True-usedByNodes Rects{} = True-usedByNodes Regular{} = True-usedByNodes Root{} = True-usedByNodes SamplePoints{} = True-usedByNodes ShapeFile{} = True-usedByNodes Shape{} = True-usedByNodes ShowBoxes{} = True-usedByNodes Sides{} = True-usedByNodes Skew{} = True-usedByNodes SortV{} = True-usedByNodes Style{} = True-usedByNodes Target{} = True-usedByNodes Tooltip{} = True-usedByNodes Vertices{} = True-usedByNodes Width{} = True-usedByNodes Z{} = True-usedByNodes _ = False---- | Determine if this Attribute is valid for use with Edges.-usedByEdges :: Attribute -> Bool-usedByEdges URL{} = True-usedByEdges ArrowHead{} = True-usedByEdges ArrowSize{} = True-usedByEdges ArrowTail{} = True-usedByEdges ColorScheme{} = True-usedByEdges Color{} = True-usedByEdges Comment{} = True-usedByEdges Constraint{} = True-usedByEdges Decorate{} = True-usedByEdges Dir{} = True-usedByEdges EdgeURL{} = True-usedByEdges EdgeTarget{} = True-usedByEdges EdgeTooltip{} = True-usedByEdges FontColor{} = True-usedByEdges FontName{} = True-usedByEdges FontSize{} = True-usedByEdges HeadURL{} = True-usedByEdges HeadClip{} = True-usedByEdges HeadLabel{} = True-usedByEdges HeadPort{} = True-usedByEdges HeadTarget{} = True-usedByEdges HeadTooltip{} = True-usedByEdges ID{} = True-usedByEdges LabelURL{} = True-usedByEdges LabelAngle{} = True-usedByEdges LabelDistance{} = True-usedByEdges LabelFloat{} = True-usedByEdges LabelFontColor{} = True-usedByEdges LabelFontName{} = True-usedByEdges LabelFontSize{} = True-usedByEdges LabelTarget{} = True-usedByEdges LabelTooltip{} = True-usedByEdges Label{} = True-usedByEdges Layer{} = True-usedByEdges Len{} = True-usedByEdges LHead{} = True-usedByEdges LPos{} = True-usedByEdges LTail{} = True-usedByEdges MinLen{} = True-usedByEdges NoJustify{} = True-usedByEdges PenWidth{} = True-usedByEdges Pos{} = True-usedByEdges SameHead{} = True-usedByEdges SameTail{} = True-usedByEdges ShowBoxes{} = True-usedByEdges Style{} = True-usedByEdges TailURL{} = True-usedByEdges TailClip{} = True-usedByEdges TailLabel{} = True-usedByEdges TailPort{} = True-usedByEdges TailTarget{} = True-usedByEdges TailTooltip{} = True-usedByEdges Target{} = True-usedByEdges Tooltip{} = True-usedByEdges Weight{} = True-usedByEdges _ = False--{- Delete to here -}--- -------------------------------------------------------------------------------{- |-- Some 'Attribute's (mainly label-like ones) take a 'String' argument- that allows for extra escape codes. This library doesn't do any- extra checks or special parsing for these escape codes, but usage- of 'EscString' rather than 'String' indicates that the Graphviz- tools will recognise these extra escape codes for these- 'Attribute's.-- The extra escape codes include (note that these are all 'String's):-- [@\\N@] Replace with the name of the node (for Node 'Attribute's).-- [@\\G@] Replace with the name of the graph (for Node 'Attribute's)- or the name of the graph or cluster, whichever is- applicable (for Graph, Cluster and Edge 'Attribute's).-- [@\\E@] Replace with the name of the edge, formed by the two- adjoining nodes and the edge type (for Edge 'Attribute's).-- [@\\T@] Replace with the name of the tail node (for Edge- 'Attribute's).-- [@\\H@] Replace with the name of the head node (for Edge- 'Attribute's).-- [@\\L@] Replace with the object's label (for all 'Attribute's).-- Also, if the 'Attribute' in question is 'Label', 'HeadLabel' or- 'TailLabel', then @\\n@, @\\l@ and @\\r@ split the label into lines- centered, left-justified and right-justified respectively.-- -}-type EscString = String---- --------------------------------------------------------------------------------- | No checks are placed on the content of a 'URL' value; however,--- you should ensure that it does not contain any \'@>@\' or \'@<@\'--- characters; Graphviz might care about escaping other characters--- properly, but for the purposes of this library the presence of--- these characters will make it harder to parse URLs.-newtype URL = UStr { urlString :: EscString }- deriving (Eq, Ord, Show, Read)--instance PrintDot URL where- unqtDot = wrap (char '<') (char '>')- -- Explicitly use text here... no quotes!- . text . urlString--instance ParseDot URL where- parseUnqt = liftM UStr- $ bracket (character open)- (character close)- (many1 $ satisfy ((/=) close))- where- open = '<'- close = '>'-- -- No quotes- parse = parseUnqt---- --------------------------------------------------------------------------------- | /Dot/ has a basic grammar of arrow shapes which allows usage of--- up to 1,544,761 different shapes from 9 different basic--- 'ArrowShape's. Note that whilst an explicit list is used in the--- definition of 'ArrowType', there must be at least one tuple and a--- maximum of 4 (since that is what is required by Dot). For more--- information, see: <http://graphviz.org/doc/info/arrows.html>------ The 19 basic arrows shown on the overall attributes page have--- been defined below as a convenience. Parsing of the 5--- backward-compatible special cases is also supported.-newtype ArrowType = AType [(ArrowModifier, ArrowShape)]- deriving (Eq, Ord, Show, Read)--box, crow, diamond, dotArrow, inv, noArrow, normal, tee, vee :: ArrowType-oDot, invDot, invODot, oBox, oDiamond :: ArrowType-eDiamond, openArr, halfOpen, emptyArr, invEmpty :: ArrowType--normal = AType [(noMods, Normal)]-inv = AType [(noMods, Inv)]-dotArrow = AType [(noMods, DotArrow)]-invDot = AType [ (noMods, Inv)- , (noMods, DotArrow)]-oDot = AType [(ArrMod OpenArrow BothSides, DotArrow)]-invODot = AType [ (noMods, Inv)- , (openMod, DotArrow)]-noArrow = AType [(noMods, NoArrow)]-tee = AType [(noMods, Tee)]-emptyArr = AType [(openMod, Normal)]-invEmpty = AType [ (noMods, Inv)- , (openMod, Normal)]-diamond = AType [(noMods, Diamond)]-oDiamond = AType [(openMod, Diamond)]-eDiamond = oDiamond-crow = AType [(noMods, Crow)]-box = AType [(noMods, Box)]-oBox = AType [(openMod, Box)]-openArr = vee-halfOpen = AType [(ArrMod FilledArrow LeftSide, Vee)]-vee = AType [(noMods, Vee)]--instance PrintDot ArrowType where- unqtDot (AType mas) = hcat $ map appMod mas- where- appMod (m, a) = unqtDot m <> unqtDot a--instance ParseDot ArrowType where- parseUnqt = do mas <- many1 $ do m <- parseUnqt- a <- parseUnqt- return (m,a)- return $ AType mas- `onFail`- specialArrowParse--specialArrowParse :: Parse ArrowType-specialArrowParse = oneOf [ stringRep eDiamond "ediamond"- , stringRep openArr "open"- , stringRep halfOpen "halfopen"- , stringRep emptyArr "empty"- , stringRep invEmpty "invempty"- ]--data ArrowShape = Box- | Crow- | Diamond- | DotArrow- | Inv- | NoArrow- | Normal- | Tee- | Vee- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot ArrowShape where- unqtDot Box = unqtDot "box"- unqtDot Crow = unqtDot "crow"- unqtDot Diamond = unqtDot "diamond"- unqtDot DotArrow = unqtDot "dot"- unqtDot Inv = unqtDot "inv"- unqtDot NoArrow = unqtDot "none"- unqtDot Normal = unqtDot "normal"- unqtDot Tee = unqtDot "tee"- unqtDot Vee = unqtDot "vee"--instance ParseDot ArrowShape where- parseUnqt = oneOf [ stringRep Box "box"- , stringRep Crow "crow"- , stringRep Diamond "diamond"- , stringRep DotArrow "dot"- , stringRep Inv "inv"- , stringRep NoArrow "none"- , stringRep Normal "normal"- , stringRep Tee "tee"- , stringRep Vee "vee"- ]---- | What modifications to apply to an 'ArrowShape'.-data ArrowModifier = ArrMod { arrowFill :: ArrowFill- , arrowSide :: ArrowSide- }- deriving (Eq, Ord, Show, Read)---- | Apply no modifications to an 'ArrowShape'.-noMods :: ArrowModifier-noMods = ArrMod FilledArrow BothSides---- | 'OpenArrow' and 'BothSides'-openMod :: ArrowModifier-openMod = ArrMod OpenArrow BothSides--instance PrintDot ArrowModifier where- unqtDot (ArrMod f s) = unqtDot f <> unqtDot s--instance ParseDot ArrowModifier where- parseUnqt = do f <- parseUnqt- s <- parseUnqt- return $ ArrMod f s--data ArrowFill = OpenArrow- | FilledArrow- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot ArrowFill where- unqtDot OpenArrow = char 'o'- unqtDot FilledArrow = empty--instance ParseDot ArrowFill where- parseUnqt = liftM (bool FilledArrow OpenArrow . isJust)- $ optional (character 'o')-- -- Not used individually- parse = parseUnqt---- | Represents which side (when looking towards the node the arrow is--- pointing to) is drawn.-data ArrowSide = LeftSide- | RightSide- | BothSides- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot ArrowSide where- unqtDot LeftSide = char 'l'- unqtDot RightSide = char 'r'- unqtDot BothSides = empty--instance ParseDot ArrowSide where- parseUnqt = liftM getSideType- $ optional (oneOf $ map character ['l', 'r'])- where- getSideType = maybe BothSides- (bool RightSide LeftSide . (==) 'l')-- -- Not used individually- parse = parseUnqt---- -------------------------------------------------------------------------------data AspectType = RatioOnly Double- | RatioPassCount Double Int- deriving (Eq, Ord, Show, Read)--instance PrintDot AspectType where- unqtDot (RatioOnly r) = unqtDot r- unqtDot (RatioPassCount r p) = commaDel r p-- toDot at@RatioOnly{} = unqtDot at- toDot at@RatioPassCount{} = doubleQuotes $ unqtDot at--instance ParseDot AspectType where- parseUnqt = liftM (uncurry RatioPassCount) commaSepUnqt- `onFail`- liftM RatioOnly parseUnqt--- parse = quotedParse (liftM (uncurry RatioPassCount) commaSepUnqt)- `onFail`- liftM RatioOnly parse---- -------------------------------------------------------------------------------data Rect = Rect Point Point- deriving (Eq, Ord, Show, Read)--instance PrintDot Rect where- unqtDot (Rect p1 p2) = commaDel p1 p2-- toDot = doubleQuotes . unqtDot--instance ParseDot Rect where- parseUnqt = liftM (uncurry Rect) commaSepUnqt-- parse = quotedParse parseUnqt---- -------------------------------------------------------------------------------data ClusterMode = Local- | Global- | NoCluster- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot ClusterMode where- unqtDot Local = unqtDot "local"- unqtDot Global = unqtDot "global"- unqtDot NoCluster = unqtDot "none"----instance ParseDot ClusterMode where- parseUnqt = oneOf [ stringRep Local "local"- , stringRep Global "global"- , stringRep NoCluster "none"- ]---- -------------------------------------------------------------------------------data DirType = Forward | Back | Both | NoDir- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot DirType where- unqtDot Forward = unqtDot "forward"- unqtDot Back = unqtDot "back"- unqtDot Both = unqtDot "both"- unqtDot NoDir = unqtDot "none"--instance ParseDot DirType where- parseUnqt = oneOf [ stringRep Forward "forward"- , stringRep Back "back"- , stringRep Both "both"- , stringRep NoDir "none"- ]---- --------------------------------------------------------------------------------- | Only when @mode == 'IpSep'@.-data DEConstraints = EdgeConstraints- | NoConstraints- | HierConstraints- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot DEConstraints where- unqtDot EdgeConstraints = unqtDot True- unqtDot NoConstraints = unqtDot False- unqtDot HierConstraints = text "hier"--instance ParseDot DEConstraints where- parseUnqt = liftM (bool NoConstraints EdgeConstraints) parse- `onFail`- stringRep HierConstraints "hier"---- --------------------------------------------------------------------------------- | Either a 'Double' or a 'Point'.-data DPoint = DVal Double- | PVal Point- deriving (Eq, Ord, Show, Read)--instance PrintDot DPoint where- unqtDot (DVal d) = unqtDot d- unqtDot (PVal p) = unqtDot p-- toDot (DVal d) = toDot d- toDot (PVal p) = toDot p--instance ParseDot DPoint where- parseUnqt = liftM PVal parseUnqt- `onFail`- liftM DVal parseUnqt-- parse = liftM PVal parse- `onFail`- liftM DVal parse---- -------------------------------------------------------------------------------data ModeType = Major- | KK- | Hier- | IpSep- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot ModeType where- unqtDot Major = text "major"- unqtDot KK = text "KK"- unqtDot Hier = text "hier"- unqtDot IpSep = text "ipsep"--instance ParseDot ModeType where- parseUnqt = oneOf [ stringRep Major "major"- , stringRep KK "KK"- , stringRep Hier "hier"- , stringRep IpSep "ipsep"- ]---- -------------------------------------------------------------------------------data Model = ShortPath- | SubSet- | Circuit- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot Model where- unqtDot ShortPath = text "shortpath"- unqtDot SubSet = text "subset"- unqtDot Circuit = text "circuit"--instance ParseDot Model where- parseUnqt = oneOf [ stringRep ShortPath "shortpath"- , stringRep SubSet "subset"- , stringRep Circuit "circuit"- ]---- -------------------------------------------------------------------------------data Label = StrLabel EscString- | URLLabel URL- deriving (Eq, Ord, Show, Read)--instance PrintDot Label where- unqtDot (StrLabel s) = unqtDot s- unqtDot (URLLabel u) = unqtDot u-- toDot (StrLabel s) = toDot s- toDot (URLLabel u) = toDot u--instance ParseDot Label where- parseUnqt = liftM StrLabel parseUnqt- `onFail`- liftM URLLabel parseUnqt-- parse = liftM StrLabel parse- `onFail`- liftM URLLabel parse---- -------------------------------------------------------------------------------data Point = Point Int Int- | PointD Double Double- deriving (Eq, Ord, Show, Read)--instance PrintDot Point where- unqtDot (Point x y) = commaDel x y- unqtDot (PointD x y) = commaDel x y-- toDot = doubleQuotes . unqtDot-- unqtListToDot = hsep . map unqtDot-- listToDot = doubleQuotes . unqtListToDot--instance ParseDot Point where- -- Need to take into account the situation where first value is an- -- integer, second a double: if Point parsing first, then it won't- -- parse the second number properly; but if PointD first then it- -- will treat Int/Int as Double/Double.- parseUnqt = intDblPoint- `onFail`- liftM (uncurry Point) commaSepUnqt- `onFail`- liftM (uncurry PointD) commaSepUnqt- where- intDblPoint = liftM (uncurry PointD . first fI)- $ commaSep' parseUnqt parseStrictFloat- fI :: Int -> Double- fI = fromIntegral-- parse = quotedParse parseUnqt-- parseUnqtList = sepBy1 parseUnqt whitespace---- -------------------------------------------------------------------------------data Overlap = KeepOverlaps- | RemoveOverlaps- | ScaleOverlaps- | ScaleXYOverlaps- | PrismOverlap (Maybe Int) -- ^ Only when sfdp is available, 'Int' is non-negative- | CompressOverlap- | VpscOverlap- | IpsepOverlap -- ^ Only when @mode == 'IpSep'@- deriving (Eq, Ord, Show, Read)--instance PrintDot Overlap where- unqtDot KeepOverlaps = unqtDot True- unqtDot RemoveOverlaps = unqtDot False- unqtDot ScaleOverlaps = text "scale"- unqtDot ScaleXYOverlaps = text "scalexy"- unqtDot (PrismOverlap i) = maybe id (flip (<>) . unqtDot) i $ text "prism"- unqtDot CompressOverlap = text "compress"- unqtDot VpscOverlap = text "vpsc"- unqtDot IpsepOverlap = text "ipsep"--instance ParseDot Overlap where- parseUnqt = oneOf [ stringRep KeepOverlaps "true"- , stringRep RemoveOverlaps "false"- , stringRep ScaleXYOverlaps "scalexy"- , stringRep ScaleOverlaps "scale"- , string "prism" >> liftM PrismOverlap (optional parse)- , stringRep CompressOverlap "compress"- , stringRep VpscOverlap "vpsc"- , stringRep IpsepOverlap "ipsep"- ]---- -------------------------------------------------------------------------------data LayerRange = LRID LayerID- | LRS LayerID String LayerID- deriving (Eq, Ord, Show, Read)--instance PrintDot LayerRange where- unqtDot (LRID lid) = unqtDot lid- unqtDot (LRS id1 s id2) = unqtDot id1 <> unqtDot s <> unqtDot id2-- toDot (LRID lid) = toDot lid- toDot lrs = doubleQuotes $ unqtDot lrs--instance ParseDot LayerRange where- parseUnqt = do id1 <- parseUnqt- s <- parseLayerSep- id2 <- parseUnqt- return $ LRS id1 s id2- `onFail`- liftM LRID parseUnqt--- parse = quotedParse ( do id1 <- parseUnqt- s <- parseLayerSep- id2 <- parseUnqt- return $ LRS id1 s id2- )- `onFail`- liftM LRID parse--parseLayerSep :: Parse String-parseLayerSep = many1 . oneOf- $ map character defLayerSep--defLayerSep :: [Char]-defLayerSep = [' ', ':', '\t']--parseLayerName :: Parse String-parseLayerName = many1 . orQuote- $ satisfy (liftM2 (&&) notLayerSep ((/=) quoteChar))--parseLayerName' :: Parse String-parseLayerName' = stringBlock- `onFail`- quotedParse parseLayerName--notLayerSep :: Char -> Bool-notLayerSep = flip notElem defLayerSep---- | You should not have any quote characters for the 'LRName' option,--- as it won't be parseable.-data LayerID = AllLayers- | LRInt Int- | LRName String- deriving (Eq, Ord, Show, Read)--instance PrintDot LayerID where- unqtDot AllLayers = text "all"- unqtDot (LRInt n) = unqtDot n- unqtDot (LRName nm) = unqtDot nm-- toDot (LRName nm) = toDot nm- -- Other two don't need quotes- toDot li = unqtDot li--instance ParseDot LayerID where- parseUnqt = liftM checkLayerName parseLayerName -- tests for Int and All-- parse = oneOf [ liftM checkLayerName parseLayerName'- , liftM LRInt parse -- Mainly for unquoted case.- ]--checkLayerName :: String -> LayerID-checkLayerName str = maybe checkAll LRInt $ stringToInt str- where- checkAll = if map toLower str == "all"- then AllLayers- else LRName str---- | The list represent (Separator, Name). You should not have any--- quote characters for any of the 'String's, since there are--- parsing problems with them.-data LayerList = LL String [(String, String)]- deriving (Eq, Ord, Show, Read)--instance PrintDot LayerList where- unqtDot (LL l1 ols) = unqtDot l1 <> hcat (map subLL ols)- where- subLL (s, l) = unqtDot s <> unqtDot l-- toDot (LL l1 []) = toDot l1- -- Might not need quotes, but probably will.- toDot ll = doubleQuotes $ unqtDot ll--instance ParseDot LayerList where- parseUnqt = do l1 <- parseLayerName- ols <- many $ do s <- parseLayerSep- lnm <- parseLayerName- return (s, lnm)- return $ LL l1 ols-- parse = quotedParse parseUnqt- `onFail`- liftM (flip LL []) (parseLayerName' `onFail` numString)---- -------------------------------------------------------------------------------data OutputMode = BreadthFirst | NodesFirst | EdgesFirst- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot OutputMode where- unqtDot BreadthFirst = text "breadthfirst"- unqtDot NodesFirst = text "nodesfirst"- unqtDot EdgesFirst = text "edgesfirst"--instance ParseDot OutputMode where- parseUnqt = oneOf [ stringRep BreadthFirst "breadthfirst"- , stringRep NodesFirst "nodesfirst"- , stringRep EdgesFirst "edgesfirst"- ]---- -------------------------------------------------------------------------------data Pack = DoPack- | DontPack- | PackMargin Int -- ^ If non-negative, then packs; otherwise doesn't.- deriving (Eq, Ord, Show, Read)--instance PrintDot Pack where- unqtDot DoPack = unqtDot True- unqtDot DontPack = unqtDot False- unqtDot (PackMargin m) = unqtDot m--instance ParseDot Pack where- -- What happens if it parses 0? It's non-negative, but parses as False- parseUnqt = oneOf [ liftM PackMargin parseUnqt- , liftM (bool DontPack DoPack) onlyBool- ]---- -------------------------------------------------------------------------------data PackMode = PackNode- | PackClust- | PackGraph- | PackArray Bool Bool (Maybe Int) -- ^ Sort by cols, sort- -- by user, number of- -- rows/cols- deriving (Eq, Ord, Show, Read)--instance PrintDot PackMode where- unqtDot PackNode = text "node"- unqtDot PackClust = text "clust"- unqtDot PackGraph = text "graph"- unqtDot (PackArray c u mi) = addNum . isU . isC . isUnder- $ text "array"- where- addNum = maybe id (flip (<>) . unqtDot) mi- isUnder = if c || u- then flip (<>) $ char '_'- else id- isC = if c- then flip (<>) $ char 'c'- else id- isU = if u- then flip (<>) $ char 'u'- else id--instance ParseDot PackMode where- parseUnqt = oneOf [ stringRep PackNode "node"- , stringRep PackClust "clust"- , stringRep PackGraph "graph"- , do string "array"- mcu <- optional $ do character '_'- many1 $ satisfy isCU- let c = hasCharacter mcu 'c'- u = hasCharacter mcu 'u'- mi <- optional parseUnqt- return $ PackArray c u mi- ]- where- hasCharacter ms c = maybe False (elem c) ms- -- Also checks and removes quote characters- isCU = flip elem ['c', 'u']---- -------------------------------------------------------------------------------data Pos = PointPos Point- | SplinePos [Spline]- deriving (Eq, Ord, Show, Read)--instance PrintDot Pos where- unqtDot (PointPos p) = unqtDot p- unqtDot (SplinePos ss) = unqtDot ss-- toDot (PointPos p) = toDot p- toDot (SplinePos ss) = toDot ss--instance ParseDot Pos where- -- Have to be careful with this: if we try to parse points first,- -- then a spline with no start and end points will erroneously get- -- parsed as a point and then the parser will crash as it expects- -- a closing quote character...- parseUnqt = do splns <- parseUnqt- case splns of- [Spline Nothing Nothing [p]] -> return $ PointPos p- _ -> return $ SplinePos splns-- parse = quotedParse parseUnqt---- --------------------------------------------------------------------------------- | Controls how (and if) edges are represented.-data EdgeType = SplineEdges- | LineEdges- | NoEdges- | PolyLine- | CompoundEdge -- ^ fdp only- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot EdgeType where- unqtDot SplineEdges = toDot True- unqtDot LineEdges = toDot False- unqtDot NoEdges = empty- unqtDot PolyLine = text "polyline"- unqtDot CompoundEdge = text "compound"-- toDot NoEdges = doubleQuotes empty- toDot et = unqtDot et--instance ParseDot EdgeType where- -- Can't parse NoEdges without quotes.- parseUnqt = oneOf [ liftM (bool LineEdges SplineEdges) parse- , stringRep SplineEdges "spline"- , stringRep LineEdges "line"- , stringRep PolyLine "polyline"- , stringRep CompoundEdge "compound"- ]-- parse = stringRep NoEdges "\"\""- `onFail`- optionalQuoted parseUnqt---- --------------------------------------------------------------------------------- | Upper-case first character is major order;--- lower-case second character is minor order.-data PageDir = Bl | Br | Tl | Tr | Rb | Rt | Lb | Lt- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot PageDir where- unqtDot Bl = text "BL"- unqtDot Br = text "BR"- unqtDot Tl = text "TL"- unqtDot Tr = text "TR"- unqtDot Rb = text "RB"- unqtDot Rt = text "RT"- unqtDot Lb = text "LB"- unqtDot Lt = text "LT"--instance ParseDot PageDir where- parseUnqt = oneOf [ stringRep Bl "BL"- , stringRep Br "BR"- , stringRep Tl "TL"- , stringRep Tr "TR"- , stringRep Rb "RB"- , stringRep Rt "RT"- , stringRep Lb "LB"- , stringRep Lt "LT"- ]---- --------------------------------------------------------------------------------- | The number of points in the list must be equivalent to 1 mod 3;--- note that this is not checked.-data Spline = Spline (Maybe Point) (Maybe Point) [Point]- deriving (Eq, Ord, Show, Read)--instance PrintDot Spline where- unqtDot (Spline ms me ps) = addS . addE- . hsep- $ map unqtDot ps- where- addP t = maybe id ((<+>) . commaDel t)- addS = addP 's' ms- addE = addP 'e' me-- toDot = doubleQuotes . unqtDot-- unqtListToDot = hcat . punctuate semi . map unqtDot-- listToDot = doubleQuotes . unqtListToDot--instance ParseDot Spline where- parseUnqt = do ms <- parseP 's'- me <- parseP 'e'- ps <- sepBy1 parseUnqt whitespace- return $ Spline ms me ps- where- parseP t = optional $ do character t- parseComma- parseUnqt `discard` whitespace-- parse = quotedParse parseUnqt-- parseUnqtList = sepBy1 parseUnqt (character ';')---- -------------------------------------------------------------------------------data QuadType = NormalQT- | FastQT- | NoQT- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot QuadType where- unqtDot NormalQT = text "normal"- unqtDot FastQT = text "fast"- unqtDot NoQT = text "none"--instance ParseDot QuadType where- -- Have to take into account the slightly different interpretation- -- of Bool used as an option for parsing QuadType- parseUnqt = oneOf [ stringRep NormalQT "normal"- , stringRep FastQT "fast"- , stringRep NoQT "none"- , character '2' >> return FastQT -- weird bool- , liftM (bool NoQT NormalQT) parse- ]---- --------------------------------------------------------------------------------- | Specify the root node either as a Node attribute or a Graph attribute.-data Root = IsCentral -- ^ For Nodes only- | NotCentral -- ^ For Nodes only- | NodeName String -- ^ For Graphs only- deriving (Eq, Ord, Show, Read)--instance PrintDot Root where- unqtDot IsCentral = unqtDot True- unqtDot NotCentral = unqtDot False- unqtDot (NodeName n) = unqtDot n-- toDot (NodeName n) = toDot n- toDot r = unqtDot r--instance ParseDot Root where- parseUnqt = liftM (bool NotCentral IsCentral) onlyBool- `onFail`- liftM NodeName parseUnqt-- parse = optionalQuoted (liftM (bool NotCentral IsCentral) onlyBool)- `onFail`- liftM NodeName parse---- -------------------------------------------------------------------------------data RankType = SameRank- | MinRank- | SourceRank- | MaxRank- | SinkRank- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot RankType where- unqtDot SameRank = text "same"- unqtDot MinRank = text "min"- unqtDot SourceRank = text "source"- unqtDot MaxRank = text "max"- unqtDot SinkRank = text "sink"--instance ParseDot RankType where- parseUnqt = oneOf [ stringRep SameRank "same"- , stringRep MinRank "min"- , stringRep SourceRank "source"- , stringRep MaxRank "max"- , stringRep SinkRank "sink"- ]---- -------------------------------------------------------------------------------data RankDir = FromTop- | FromLeft- | FromBottom- | FromRight- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot RankDir where- unqtDot FromTop = text "TB"- unqtDot FromLeft = text "LR"- unqtDot FromBottom = text "BT"- unqtDot FromRight = text "RL"--instance ParseDot RankDir where- parseUnqt = oneOf [ stringRep FromTop "TB"- , stringRep FromLeft "LR"- , stringRep FromBottom "BT"- , stringRep FromRight "RL"- ]---- -------------------------------------------------------------------------------data Shape- = BoxShape -- ^ Has synonyms of /rect/ and /rectangle/.- | Polygon- | Ellipse- | Circle- | PointShape- | Egg- | Triangle- | PlainText -- ^ Has synonym of /none/.- | DiamondShape- | Trapezium- | Parallelogram- | House- | Pentagon- | Hexagon- | Septagon- | Octagon- | DoubleCircle- | DoubleOctagon- | TripleOctagon- | InvTriangle- | InvTrapezium- | InvHouse- | MDiamond- | MSquare- | MCircle- | Note- | Tab- | Folder- | Box3D- | Component- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot Shape where- unqtDot BoxShape = text "box"- unqtDot Polygon = text "polygon"- unqtDot Ellipse = text "ellipse"- unqtDot Circle = text "circle"- unqtDot PointShape = text "point"- unqtDot Egg = text "egg"- unqtDot Triangle = text "triangle"- unqtDot PlainText = text "plaintext"- unqtDot DiamondShape = text "diamond"- unqtDot Trapezium = text "trapezium"- unqtDot Parallelogram = text "parallelogram"- unqtDot House = text "house"- unqtDot Pentagon = text "pentagon"- unqtDot Hexagon = text "hexagon"- unqtDot Septagon = text "septagon"- unqtDot Octagon = text "octagon"- unqtDot DoubleCircle = text "doublecircle"- unqtDot DoubleOctagon = text "doubleoctagon"- unqtDot TripleOctagon = text "tripleoctagon"- unqtDot InvTriangle = text "invtriangle"- unqtDot InvTrapezium = text "invtrapezium"- unqtDot InvHouse = text "invhouse"- unqtDot MDiamond = text "Mdiamond"- unqtDot MSquare = text "Msquare"- unqtDot MCircle = text "Mcircle"- unqtDot Note = text "note"- unqtDot Tab = text "tab"- unqtDot Folder = text "folder"- unqtDot Box3D = text "box3d"- unqtDot Component = text "component"--instance ParseDot Shape where- parseUnqt = oneOf [ stringRep Box3D "box3d" -- Parse this before "box"- , stringReps BoxShape ["box","rectangle","rect"]- , stringRep Polygon "polygon"- , stringRep Ellipse "ellipse"- , stringRep Circle "circle"- , stringRep PointShape "point"- , stringRep Egg "egg"- , stringRep Triangle "triangle"- , stringReps PlainText ["plaintext","none"]- , stringRep DiamondShape "diamond"- , stringRep Trapezium "trapezium"- , stringRep Parallelogram "parallelogram"- , stringRep House "house"- , stringRep Pentagon "pentagon"- , stringRep Hexagon "hexagon"- , stringRep Septagon "septagon"- , stringRep Octagon "octagon"- , stringRep DoubleCircle "doublecircle"- , stringRep DoubleOctagon "doubleoctagon"- , stringRep TripleOctagon "tripleoctagon"- , stringRep InvTriangle "invtriangle"- , stringRep InvTrapezium "invtrapezium"- , stringRep InvHouse "invhouse"- , stringRep MDiamond "Mdiamond"- , stringRep MSquare "Msquare"- , stringRep MCircle "Mcircle"- , stringRep Note "note"- , stringRep Tab "tab"- , stringRep Folder "folder"- , stringRep Component "component"- ]---- -------------------------------------------------------------------------------data SmoothType = NoSmooth- | AvgDist- | GraphDist- | PowerDist- | RNG- | Spring- | TriangleSmooth- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot SmoothType where- unqtDot NoSmooth = text "none"- unqtDot AvgDist = text "avg_dist"- unqtDot GraphDist = text "graph_dist"- unqtDot PowerDist = text "power_dist"- unqtDot RNG = text "rng"- unqtDot Spring = text "spring"- unqtDot TriangleSmooth = text "triangle"--instance ParseDot SmoothType where- parseUnqt = oneOf [ stringRep NoSmooth "none"- , stringRep AvgDist "avg_dist"- , stringRep GraphDist "graph_dist"- , stringRep PowerDist "power_dist"- , stringRep RNG "rng"- , stringRep Spring "spring"- , stringRep TriangleSmooth "triangle"- ]---- -------------------------------------------------------------------------------data StartType = StartStyle STStyle- | StartSeed Int- | StartStyleSeed STStyle Int- deriving (Eq, Ord, Show, Read)--instance PrintDot StartType where- unqtDot (StartStyle ss) = unqtDot ss- unqtDot (StartSeed s) = unqtDot s- unqtDot (StartStyleSeed ss s) = unqtDot ss <> unqtDot s--instance ParseDot StartType where- parseUnqt = oneOf [ do ss <- parseUnqt- s <- parseUnqt- return $ StartStyleSeed ss s- , liftM StartStyle parseUnqt- , liftM StartSeed parseUnqt- ]--data STStyle = RegularStyle- | SelfStyle- | RandomStyle- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot STStyle where- unqtDot RegularStyle = text "regular"- unqtDot SelfStyle = text "self"- unqtDot RandomStyle = text "random"--instance ParseDot STStyle where- parseUnqt = oneOf [ stringRep RegularStyle "regular"- , stringRep SelfStyle "self"- , stringRep RandomStyle "random"- ]---- -------------------------------------------------------------------------------data StyleItem = SItem StyleName [String]- deriving (Eq, Ord, Show, Read)--instance PrintDot StyleItem where- unqtDot (SItem nm args)- | null args = dnm- | otherwise = dnm <> parens args'- where- dnm = unqtDot nm- args' = hcat . punctuate comma $ map unqtDot args-- toDot si@(SItem nm args)- | null args = toDot nm- | otherwise = doubleQuotes $ unqtDot si-- unqtListToDot = hcat . punctuate comma . map unqtDot-- listToDot [SItem nm []] = toDot nm- listToDot sis = doubleQuotes $ unqtListToDot sis--instance ParseDot StyleItem where- parseUnqt = do nm <- parseUnqt- args <- tryParseList' parseArgs- return $ SItem nm args-- parse = quotedParse (liftM2 SItem parseUnqt parseArgs)- `onFail`- liftM (flip SItem []) parse-- parseUnqtList = sepBy1 parseUnqt parseComma-- parseList = quotedParse parseUnqtList- `onFail`- -- Might not necessarily need to be quoted if a singleton...- liftM return parse--parseArgs :: Parse [String]-parseArgs = bracketSep (character '(')- parseComma- (character ')')- parseStyleName--data StyleName = Dashed -- ^ Nodes and Edges- | Dotted -- ^ Nodes and Edges- | Solid -- ^ Nodes and Edges- | Bold -- ^ Nodes and Edges- | Invisible -- ^ Nodes and Edges- | Filled -- ^ Nodes and Clusters- | Diagonals -- ^ Nodes only- | Rounded -- ^ Nodes and Clusters- | DD String -- ^ Device Dependent- deriving (Eq, Ord, Show, Read)--instance PrintDot StyleName where- unqtDot Dashed = text "dashed"- unqtDot Dotted = text "dotted"- unqtDot Solid = text "solid"- unqtDot Bold = text "bold"- unqtDot Invisible = text "invis"- unqtDot Filled = text "filled"- unqtDot Diagonals = text "diagonals"- unqtDot Rounded = text "rounded"- unqtDot (DD nm) = unqtDot nm-- toDot (DD nm) = toDot nm- toDot sn = unqtDot sn--instance ParseDot StyleName where- parseUnqt = liftM checkDD parseStyleName-- parse = liftM checkDD- $ quotedParse parseStyleName- `onFail`- -- In case a singleton DD is at the end of an attribute list.- do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ', ']']- r <- many (orQuote $ noneOf [quoteChar, '(', ')', ',', ']'])- return $ f:r--checkDD :: String -> StyleName-checkDD str = case map toLower str of- "dashed" -> Dashed- "dotted" -> Dotted- "solid" -> Solid- "bold" -> Bold- "invis" -> Invisible- "filled" -> Filled- "diagonals" -> Diagonals- "rounded" -> Rounded- _ -> DD str--parseStyleName :: Parse String-parseStyleName = do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ']- r <- many (orQuote $ noneOf [quoteChar, '(', ')', ','])- return $ f:r---- -------------------------------------------------------------------------------newtype PortPos = PP CompassPoint- deriving (Eq, Ord, Show, Read)--instance PrintDot PortPos where- unqtDot (PP cp) = unqtDot cp-- toDot (PP cp) = toDot cp--instance ParseDot PortPos where- parseUnqt = liftM PP parseUnqt--data CompassPoint = North- | NorthEast- | East- | SouthEast- | South- | SouthWest- | West- | NorthWest- | CenterPoint- | NoCP- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot CompassPoint where- unqtDot NorthEast = text "ne"- unqtDot NorthWest = text "nw"- unqtDot North = text "n"- unqtDot East = text "e"- unqtDot SouthEast = text "se"- unqtDot SouthWest = text "sw"- unqtDot South = text "s"- unqtDot West = text "w"- unqtDot CenterPoint = text "c"- unqtDot NoCP = text "_"--instance ParseDot CompassPoint where- -- Have to take care of longer parsing values first.- parseUnqt = oneOf [ stringRep NorthEast "ne"- , stringRep NorthWest "nw"- , stringRep North "n"- , stringRep SouthEast "se"- , stringRep SouthWest "sw"- , stringRep South "s"- , stringRep East "e"- , stringRep West "w"- , stringRep CenterPoint "c"- , stringRep NoCP "_"- ]---- -------------------------------------------------------------------------------data ViewPort = VP { wVal :: Double- , hVal :: Double- , zVal :: Double- , focus :: Maybe FocusType- }- deriving (Eq, Ord, Show, Read)--instance PrintDot ViewPort where- unqtDot vp = maybe vs ((<>) (vs <> comma) . unqtDot)- $ focus vp- where- vs = hcat . punctuate comma- $ map (unqtDot . flip ($) vp) [wVal, hVal, zVal]-- toDot = doubleQuotes . unqtDot--instance ParseDot ViewPort where- parseUnqt = do wv <- parseUnqt- parseComma- hv <- parseUnqt- parseComma- zv <- parseUnqt- mf <- optional $ parseComma >> parseUnqt- return $ VP wv hv zv mf-- parse = quotedParse parseUnqt--data FocusType = XY Point- | NodeFocus String- deriving (Eq, Ord, Show, Read)--instance PrintDot FocusType where- unqtDot (XY p) = unqtDot p- unqtDot (NodeFocus nm) = unqtDot nm-- toDot (XY p) = toDot p- toDot (NodeFocus nm) = toDot nm--instance ParseDot FocusType where- parseUnqt = liftM XY parseUnqt- `onFail`- liftM NodeFocus parseUnqt-- parse = liftM XY parse- `onFail`- liftM NodeFocus parse---- -------------------------------------------------------------------------------data VerticalPlacement = VTop- | VCenter -- ^ Only valid for Nodes.- | VBottom- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot VerticalPlacement where- unqtDot VTop = char 't'- unqtDot VCenter = char 'c'- unqtDot VBottom = char 'b'--instance ParseDot VerticalPlacement where- parseUnqt = oneOf [ stringRep VTop "t"- , stringRep VCenter "c"- , stringRep VBottom "b"- ]---- -------------------------------------------------------------------------------data ScaleType = UniformScale- | NoScale- | FillWidth- | FillHeight- | FillBoth- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot ScaleType where- unqtDot UniformScale = unqtDot True- unqtDot NoScale = unqtDot False- unqtDot FillWidth = text "width"- unqtDot FillHeight = text "height"- unqtDot FillBoth = text "both"--instance ParseDot ScaleType where- parseUnqt = oneOf [ stringRep UniformScale "true"- , stringRep NoScale "false"- , stringRep FillWidth "width"- , stringRep FillHeight "height"- , stringRep FillBoth "both"- ]---- -------------------------------------------------------------------------------data Justification = JLeft- | JRight- | JCenter- deriving (Eq, Ord, Bounded, Enum, Show, Read)--instance PrintDot Justification where- unqtDot JLeft = char 'l'- unqtDot JRight = char 'r'- unqtDot JCenter = char 'c'--instance ParseDot Justification where- parseUnqt = oneOf [ stringRep JLeft "l"- , stringRep JRight "r"- , stringRep JCenter "c"- ]---- -------------------------------------------------------------------------------data Ratios = AspectRatio Double- | FillRatio- | CompressRatio- | ExpandRatio- | AutoRatio- deriving (Eq, Ord, Show, Read)--instance PrintDot Ratios where- unqtDot (AspectRatio r) = unqtDot r- unqtDot FillRatio = text "fill"- unqtDot CompressRatio = text "compress"- unqtDot ExpandRatio = text "expand"- unqtDot AutoRatio = text "auto"--instance ParseDot Ratios where- parseUnqt = oneOf [ liftM AspectRatio parseUnqt- , stringRep FillRatio "fill"- , stringRep CompressRatio "compress"- , stringRep ExpandRatio "expand"- , stringRep AutoRatio "auto"- ]
− Test/examples/BangPatterns.hs
@@ -1,8 +0,0 @@-{-# LANGUAGE BangPatterns #-} -module BangPatterns where - -firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int -firstnonspace !ptr !n !m - | n >= m = return n - | otherwise = do w <- peekElemOff ptr n - if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n
− Test/examples/Bug.hs
@@ -1,2 +0,0 @@-import Test.QuickCheck --- prop_susShortest = 2 > 1 ==> 1 /= 2
− Test/examples/ByteStringUtils.hs
@@ -1,541 +0,0 @@-{-# LANGUAGE BangPatterns, ForeignFunctionInterface, CPP #-}---------------------------------------------------------------------------------- |--- Module : ByteStringUtils--- Copyright : (c) The University of Glasgow 2001,--- David Roundy 2003-2005--- License : GPL (I'm happy to also license this file BSD style but don't--- want to bother distributing two license files with darcs.------ Maintainer : droundy@abridgegame.org--- Stability : experimental--- Portability : portable------ GZIp and MMap IO for ByteStrings, and miscellaneous functions for Data.ByteString-----module ByteStringUtils (-- unsafeWithInternals,- unpackPSfromUTF8,-- -- IO with mmap or gzip- gzReadFilePS,- mmapFilePS,- gzWriteFilePS,- gzWriteFilePSs,-- -- list utilities- ifHeadThenTail,- dropSpace,- breakSpace,- linesPS,- unlinesPS,- hashPS,- breakFirstPS,- breakLastPS,- substrPS,- readIntPS,- is_funky,- fromHex2PS,- fromPS2Hex,- betweenLinesPS,- break_after_nth_newline,- break_before_nth_newline,- intercalate- ) where--import Prelude hiding ( catch )-import qualified Data.ByteString as B-import qualified Data.ByteString.Char8 as BC-import qualified Data.ByteString.Internal as BI-import Data.ByteString (intercalate, uncons)-import Data.ByteString.Internal (fromForeignPtr)---- #if defined (HAVE_MMAP) || ! defined (HAVE_HASKELL_ZLIB)-import Control.Exception ( catch )--- #endif-import System.IO-import System.IO.Unsafe ( unsafePerformIO )--import Foreign.Storable ( peekElemOff, peek )-import Foreign.Marshal.Alloc ( free )-import Foreign.Marshal.Array ( mallocArray, peekArray, advancePtr )-import Foreign.C.Types ( CInt )--import Data.Bits ( rotateL )-import Data.Char ( chr, ord, isSpace )-import Data.Word ( Word8 )-import Data.Int ( Int32 )-import Control.Monad ( when )---- #ifndef HAVE_HASKELL_ZLIB-import Foreign.Ptr ( nullPtr )-import Foreign.ForeignPtr ( ForeignPtr )--- #endif-import Foreign.Ptr ( plusPtr, Ptr )-import Foreign.ForeignPtr ( withForeignPtr )---- #ifdef DEBUG_PS-import Foreign.ForeignPtr ( addForeignPtrFinalizer )-import Foreign.Ptr ( FunPtr )--- #endif---- #if HAVE_HASKELL_ZLIB-import qualified Data.ByteString.Lazy as BL-import qualified Codec.Compression.GZip as GZ--- #else-import Foreign.C.String ( CString, withCString )--- #endif---- #ifdef HAVE_MMAP-import System.IO.MMap( mmapFileByteString )-import System.Mem( performGC )-import System.Posix.Files( fileSize, getSymbolicLinkStatus )--- #endif---- -------------------------------------------------------------------------------- obsolete debugging code---- # ifndef HAVE_HASKELL_ZLIB-debugForeignPtr :: ForeignPtr a -> String -> IO ()--- #ifdef DEBUG_PS-foreign import ccall unsafe "static fpstring.h debug_alloc" debug_alloc- :: Ptr a -> CString -> IO ()-foreign import ccall unsafe "static fpstring.h & debug_free" debug_free- :: FunPtr (Ptr a -> IO ())-debugForeignPtr fp n =- withCString n $ \cname-> withForeignPtr fp $ \p->- do debug_alloc p cname- addForeignPtrFinalizer debug_free fp--- #else-debugForeignPtr _ _ = return ()--- #endif--- #endif---- -------------------------------------------------------------------------------- unsafeWithInternals---- | Do something with the internals of a PackedString. Beware of--- altering the contents!-unsafeWithInternals :: B.ByteString -> (Ptr Word8 -> Int -> IO a) -> IO a-unsafeWithInternals ps f- = case BI.toForeignPtr ps of- (fp,s,l) -> withForeignPtr fp $ \p -> f (p `plusPtr` s) l---- | readIntPS skips any whitespace at the beginning of its argument, and--- reads an Int from the beginning of the PackedString. If there is no--- integer at the beginning of the string, it returns Nothing, otherwise it--- just returns the int read, along with a B.ByteString containing the--- remainder of its input.--readIntPS :: B.ByteString -> Maybe (Int, B.ByteString)-readIntPS = BC.readInt . BC.dropWhile isSpace---- -------------------------------------------------------------------------------- Destructor functions (taking PackedStrings apart)--unpackPSfromUTF8 :: B.ByteString -> String-unpackPSfromUTF8 ps =- case BI.toForeignPtr ps of- (_,_, 0) -> ""- (x,s,l) ->- unsafePerformIO $ withForeignPtr x $ \p->- do outbuf <- mallocArray l- lout <- fromIntegral `fmap`- utf8_to_ints outbuf (p `plusPtr` s) (fromIntegral l)- when (lout < 0) $ error "Bad UTF8!"- str <- (map (chr . fromIntegral)) `fmap` peekArray lout outbuf- free outbuf- return str--foreign import ccall unsafe "static fpstring.h utf8_to_ints" utf8_to_ints- :: Ptr Int -> Ptr Word8 -> CInt -> IO CInt---- -------------------------------------------------------------------------------- List-mimicking functions for PackedStrings--{-# INLINE ifHeadThenTail #-}-ifHeadThenTail :: Word8 -> B.ByteString -> Maybe B.ByteString-ifHeadThenTail c s = case uncons s of- Just (w, t) | w == c -> Just t- _ -> Nothing----------------------------------------------------------------------------- A reimplementation of Data.ByteString.Char8.dropSpace, but--- specialised to darcs' need for a 4 way isspace.------ TODO: if it is safe to use the expanded definition of isSpaceWord8--- provided by Data.ByteString.Char8, then all this can go.---- A locale-independent isspace(3) so patches are interpreted the same everywhere.--- ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\r')-isSpaceWord8 :: Word8 -> Bool-isSpaceWord8 w =- w == 0x20 || -- ' '- w == 0x09 || -- '\t'- w == 0x0A || -- '\n'- w == 0x0D -- '\r'-{-# INLINE isSpaceWord8 #-}--firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int-firstnonspace !ptr !n !m- | n >= m = return n- | otherwise = do w <- peekElemOff ptr n- if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n--firstspace :: Ptr Word8 -> Int -> Int -> IO Int-firstspace !ptr !n !m- | n >= m = return n- | otherwise = do w <- peekElemOff ptr n- if (not . isSpaceWord8) w then firstspace ptr (n+1) m else return n---- | 'dropSpace' efficiently returns the 'ByteString' argument with--- white space Chars removed from the front. It is more efficient than--- calling dropWhile for removing whitespace. I.e.------ > dropWhile isSpace == dropSpace----dropSpace :: B.ByteString -> B.ByteString-dropSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do- i <- firstnonspace (p `plusPtr` s) 0 l- return $! if i == l then B.empty else BI.PS x (s+i) (l-i)-{-# INLINE dropSpace #-}---- | 'breakSpace' returns the pair of ByteStrings when the argument is--- broken at the first whitespace byte. I.e.------ > break isSpace == breakSpace----breakSpace :: B.ByteString -> (B.ByteString,B.ByteString)-breakSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do- i <- firstspace (p `plusPtr` s) 0 l- return $! case () of {_- | i == 0 -> (B.empty, BI.PS x s l)- | i == l -> (BI.PS x s l, B.empty)- | otherwise -> (BI.PS x s i, BI.PS x (s+i) (l-i))- }-{-# INLINE breakSpace #-}----------------------------------------------------------------------------{-# INLINE is_funky #-}-is_funky :: B.ByteString -> Bool-is_funky ps = case BI.toForeignPtr ps of- (x,s,l) ->- unsafePerformIO $ withForeignPtr x $ \p->- (/=0) `fmap` has_funky_char (p `plusPtr` s) (fromIntegral l)--foreign import ccall unsafe "fpstring.h has_funky_char" has_funky_char- :: Ptr Word8 -> CInt -> IO CInt------------------------------------------------------------------------------ ByteString rewrites break (=='x') to breakByte 'x'--- break ((==) x) = breakChar x--- break (==x) = breakChar x-----{--{-# INLINE breakOnPS #-}-breakOnPS :: Char -> B.ByteString -> (B.ByteString, B.ByteString)-breakOnPS c p = case BC.elemIndex c p of- Nothing -> (p, BC.empty)- Just n -> (B.take n p, B.drop n p)--}--{-# INLINE hashPS #-}-hashPS :: B.ByteString -> Int32-hashPS ps =- case BI.toForeignPtr ps of- (x,s,l) ->- unsafePerformIO $ withForeignPtr x $ \p->- do hash (p `plusPtr` s) l--hash :: Ptr Word8 -> Int -> IO Int32-hash ptr len = f (0 :: Int32) ptr len- where f h _ 0 = return h- f h p n = do x <- peek p- let !h' = (fromIntegral x) + (rotateL h 8)- f h' (p `advancePtr` 1) (n-1)--{-# INLINE substrPS #-}-substrPS :: B.ByteString -> B.ByteString -> Maybe Int-substrPS tok str- | B.null tok = Just 0- | B.length tok > B.length str = Nothing- | otherwise = do n <- BC.elemIndex (BC.head tok) str- let ttok = B.tail tok- reststr = B.drop (n+1) str- if ttok == B.take (B.length ttok) reststr- then Just n- else ((n+1)+) `fmap` substrPS tok reststr------------------------------------------------------------------------------ TODO: replace breakFirstPS and breakLastPS with definitions based on--- ByteString's break/breakEnd-{-# INLINE breakFirstPS #-}-breakFirstPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString)-breakFirstPS c p = case BC.elemIndex c p of- Nothing -> Nothing- Just n -> Just (B.take n p, B.drop (n+1) p)--{-# INLINE breakLastPS #-}-breakLastPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString)-breakLastPS c p = case BC.elemIndexEnd c p of- Nothing -> Nothing- Just n -> Just (B.take n p, B.drop (n+1) p)---- TODO: rename-{-# INLINE linesPS #-}-linesPS :: B.ByteString -> [B.ByteString]-linesPS ps- | B.null ps = [B.empty]- | otherwise = BC.split '\n' ps--{- QuickCheck property:--import Test.QuickCheck-import qualified Data.ByteString.Char8 as BC-import Data.Char-instance Arbitrary BC.ByteString where- arbitrary = fmap BC.pack arbitrary-instance Arbitrary Char where- arbitrary = chr `fmap` choose (32,127)-deepCheck = check (defaultConfig { configMaxTest = 10000})-testLines = deepCheck (\x -> (linesPS x == linesPSOld x))-linesPSOld ps = case BC.elemIndex '\n' ps of- Nothing -> [ps]- Just n -> B.take n ps : linesPS (B.drop (n+1) ps) -}--{-| This function acts exactly like the "Prelude" unlines function, or like-"Data.ByteString.Char8" 'unlines', but with one important difference: it will-produce a string which may not end with a newline! That is:--> unlinesPS ["foo", "bar"]--evaluates to \"foo\\nbar\", not \"foo\\nbar\\n\"! This point should hold true for-'linesPS' as well.--TODO: rename this function. -}-unlinesPS :: [B.ByteString] -> B.ByteString-unlinesPS [] = BC.empty-unlinesPS x = BC.init $ BC.unlines x-{-# INLINE unlinesPS #-}-{- QuickCheck property:--testUnlines = deepCheck (\x -> (unlinesPS x == unlinesPSOld x))-unlinesPSOld ss = BC.concat $ intersperse_newlines ss- where intersperse_newlines (a:b:s) = a : newline : intersperse_newlines (b:s)- intersperse_newlines s = s- newline = BC.pack "\n" -}---- -------------------------------------------------------------------------------- gzReadFilePS---- | Read an entire file, which may or may not be gzip compressed, directly--- into a 'B.ByteString'.---- #ifndef HAVE_HASKELL_ZLIB-foreign import ccall unsafe "static zlib.h gzopen" c_gzopen- :: CString -> CString -> IO (Ptr ())-foreign import ccall unsafe "static zlib.h gzclose" c_gzclose- :: Ptr () -> IO ()-foreign import ccall unsafe "static zlib.h gzread" c_gzread- :: Ptr () -> Ptr Word8 -> CInt -> IO CInt-foreign import ccall unsafe "static zlib.h gzwrite" c_gzwrite- :: Ptr () -> Ptr Word8 -> CInt -> IO CInt--- #endif--gzReadFilePS :: FilePath -> IO B.ByteString-gzReadFilePS f = do- h <- openBinaryFile f ReadMode- header <- B.hGet h 2- if header /= BC.pack "\31\139"- then do hClose h- mmapFilePS f- else do hSeek h SeekFromEnd (-4)- len <- hGetLittleEndInt h- hClose h--- #ifdef HAVE_HASKELL_ZLIB- -- Passing the length to GZ.decompressWith means- -- that BL.toChunks only produces one chunk, which in turn- -- means that B.concat won't need to copy data.- -- If the length is wrong this will just affect efficiency, not correctness- let decompress = GZ.decompressWith GZ.defaultDecompressParams {- GZ.decompressBufferSize = len- }- fmap (B.concat . BL.toChunks . decompress) $--- #ifdef HAVE_OLD_BYTESTRING- -- bytestring < 0.9.1 had a bug where it did not know to close handles upon EOF- -- performance would be better with a newer bytestring and lazy- -- readFile below -- ratify readFile: comment- fmap (BL.fromChunks . (:[])) $- B.readFile f -- ratify readFile: immediately consumed--- #else- BL.readFile f -- ratify readFile: immediately consumed by the conversion to a strict bytestring--- #endif--- #else- withCString f $ \fstr-> withCString "rb" $ \rb-> do- gzf <- c_gzopen fstr rb- when (gzf == nullPtr) $ fail $ "problem opening file "++f- fp <- BI.mallocByteString len- debugForeignPtr fp $ "gzReadFilePS "++f- lread <- withForeignPtr fp $ \p ->- c_gzread gzf p (fromIntegral len)- c_gzclose gzf- when (fromIntegral lread /= len) $- fail $ "problem gzreading file "++f- return $ fromForeignPtr fp 0 len--- #endif--hGetLittleEndInt :: Handle -> IO Int-hGetLittleEndInt h = do- b1 <- ord `fmap` hGetChar h- b2 <- ord `fmap` hGetChar h- b3 <- ord `fmap` hGetChar h- b4 <- ord `fmap` hGetChar h- return $ b1 + 256*b2 + 65536*b3 + 16777216*b4--gzWriteFilePS :: FilePath -> B.ByteString -> IO ()-gzWriteFilePS f ps = gzWriteFilePSs f [ps]--gzWriteFilePSs :: FilePath -> [B.ByteString] -> IO ()-gzWriteFilePSs f pss =--- #ifdef HAVE_HASKELL_ZLIB- BL.writeFile f $ GZ.compress $ BL.fromChunks pss--- #else- withCString f $ \fstr -> withCString "wb" $ \wb -> do- gzf <- c_gzopen fstr wb- when (gzf == nullPtr) $ fail $ "problem gzopening file for write: "++f- mapM_ (gzWriteToGzf gzf) pss `catch`- \_ -> fail $ "problem gzwriting file: "++f- c_gzclose gzf--gzWriteToGzf :: Ptr () -> B.ByteString -> IO ()-gzWriteToGzf gzf ps = case BI.toForeignPtr ps of- (_,_,0) -> return () -- avoid calling gzwrite with 0 length this would- -- trouble on some versions of zlib, and is always- -- unnecessary.- (x,s,l) -> do- lw <- withForeignPtr x $ \p -> c_gzwrite gzf (p `plusPtr` s)- (fromIntegral l)- when (fromIntegral lw /= l) $ fail $ "problem in gzWriteToGzf"--- #endif---- -------------------------------------------------------------------------------- mmapFilePS---- | Like readFilePS, this reads an entire file directly into a--- 'B.ByteString', but it is even more efficient. It involves directly--- mapping the file to memory. This has the advantage that the contents of--- the file never need to be copied. Also, under memory pressure the page--- may simply be discarded, wile in the case of readFilePS it would need to--- be written to swap. If you read many small files, mmapFilePS will be--- less memory-efficient than readFilePS, since each mmapFilePS takes up a--- separate page of memory. Also, you can run into bus errors if the file--- is modified. NOTE: as with 'readFilePS', the string representation in--- the file is assumed to be ISO-8859-1.--mmapFilePS :: FilePath -> IO B.ByteString--- #ifdef HAVE_MMAP-mmapFilePS f = do- x <- mmapFileByteString f Nothing- `catch` (\_ -> do- size <- fileSize `fmap` getSymbolicLinkStatus f- if size == 0- then return B.empty- else performGC >> mmapFileByteString f Nothing)- return x--- #else-mmapFilePS = B.readFile--- #endif---- ---------------------------------------------------------------------------- fromPS2Hex--foreign import ccall unsafe "static fpstring.h conv_to_hex" conv_to_hex- :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()--fromPS2Hex :: B.ByteString -> B.ByteString-fromPS2Hex ps = case BI.toForeignPtr ps of- (x,s,l) ->- BI.unsafeCreate (2*l) $ \p -> withForeignPtr x $ \f ->- conv_to_hex p (f `plusPtr` s) $ fromIntegral l---- ---------------------------------------------------------------------------- fromHex2PS--foreign import ccall unsafe "static fpstring.h conv_from_hex" conv_from_hex- :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()--fromHex2PS :: B.ByteString -> B.ByteString-fromHex2PS ps = case BI.toForeignPtr ps of- (x,s,l) ->- BI.unsafeCreate (l `div` 2) $ \p -> withForeignPtr x $ \f ->- conv_from_hex p (f `plusPtr` s) (fromIntegral $ l `div` 2)---- ---------------------------------------------------------------------------- betweenLinesPS---- | betweenLinesPS returns the B.ByteString between the two lines given,--- or Nothing if they do not appear.--betweenLinesPS :: B.ByteString -> B.ByteString -> B.ByteString- -> Maybe (B.ByteString)-betweenLinesPS start end ps- = case break (start ==) (linesPS ps) of- (_, _:rest@(bs1:_)) ->- case BI.toForeignPtr bs1 of- (ps1,s1,_) ->- case break (end ==) rest of- (_, bs2:_) -> case BI.toForeignPtr bs2 of (_,s2,_) -> Just $ fromForeignPtr ps1 s1 (s2 - s1)- _ -> Nothing- _ -> Nothing---- ---------------------------------------------------------------------------- break_after_nth_newline--break_after_nth_newline :: Int -> B.ByteString- -> Maybe (B.ByteString, B.ByteString)-break_after_nth_newline 0 the_ps | B.null the_ps = Just (B.empty, B.empty)-break_after_nth_newline n the_ps =- case BI.toForeignPtr the_ps of- (fp,the_s,l) ->- unsafePerformIO $ withForeignPtr fp $ \p ->- do let findit 0 s | s == end = return $ Just (the_ps, B.empty)- findit _ s | s == end = return Nothing- findit 0 s = let left_l = s - the_s- in return $ Just (fromForeignPtr fp the_s left_l,- fromForeignPtr fp s (l - left_l))- findit i s = do w <- peekElemOff p s- if w == nl then findit (i-1) (s+1)- else findit i (s+1)- nl = BI.c2w '\n'- end = the_s + l- findit n the_s---- ---------------------------------------------------------------------------- break_before_nth_newline--break_before_nth_newline :: Int -> B.ByteString -> (B.ByteString, B.ByteString)-break_before_nth_newline 0 the_ps- | B.null the_ps = (B.empty, B.empty)-break_before_nth_newline n the_ps =- case BI.toForeignPtr the_ps of- (fp,the_s,l) ->- unsafePerformIO $ withForeignPtr fp $ \p ->- do let findit _ s | s == end = return (the_ps, B.empty)- findit i s = do w <- peekElemOff p s- if w == nl- then if i == 0- then let left_l = s - the_s- in return (fromForeignPtr fp the_s left_l,- fromForeignPtr fp s (l - left_l))- else findit (i-1) (s+1)- else findit i (s+1)- nl = BI.c2w '\n'- end = the_s + l- findit n the_s
− Test/examples/CParser.hs
@@ -1,6323 +0,0 @@-{-# OPTIONS -fglasgow-exts -cpp #-}-{-# LANGUAGE MagicHash #-}-module Language.C.Parser.Parser (- -- * Parse a C translation unit- parseC,- -- * Exposed Parsers- translUnitP, extDeclP, statementP, expressionP-) where---- Relevant C99 sections:------ 6.5 Expressions .1 - .17 and 6.6 (almost literally)--- Supported GNU extensions:--- - Allow a compound statement as an expression--- - Various __builtin_* forms that take type parameters--- - `alignof' expression or type--- - `__extension__' to suppress warnings about extensions--- - Allow taking address of a label with: && label--- - Omitting the `then' part of conditional expressions--- - complex numbers------ 6.7 C Declarations .1 -.8--- Supported GNU extensions:--- - '__thread' thread local storage (6.7.1)------ 6.8 Statements .1 - .8--- Supported GNU extensions:--- - case ranges (C99 6.8.1)--- - '__label__ ident;' declarations (C99 6.8.2)--- - computed gotos (C99 6.8.6)------ 6.9 Translation unit--- Supported GNU extensions:--- - allow empty translation_unit--- - allow redundant ';'--- - allow extension keyword before external declaration--- - asm definitions------ Since some of the grammar productions are quite difficult to read,--- (especially those involved with the decleration syntax) we document them--- with an extended syntax that allows a more consise representation:------ Ordinary rules------ foo named terminal or non-terminal------ 'c' terminal, literal character token------ A B concatenation------ A | B alternation------ (A) grouping------ Extended rules------ A? optional, short hand for (A|) or [A]{ 0==A || 1==A }------ ... stands for some part of the grammar omitted for clarity------ {A} represents sequences, 0 or more.------ <permute> modifier which states that any permutation of the immediate subterms is valid---------- TODO ---------------------------------------------------------------------------- !* We ignore the C99 static keyword (see C99 6.7.5.3)--- !* We do not distinguish in the AST between incomplete array types and--- complete variable length arrays ([ '*' ] means the latter). (see C99 6.7.5.2)--- !* The AST doesn't allow recording __attribute__ of unnamed struct field--- (see , struct_default_declaring_list, struct_identifier_declarator)--- !* see `We're being far to liberal here' (... struct definition within structs)--- * Documentation isn't complete and consistent yet.--import Prelude hiding (reverse)-import qualified Data.List as List-import Control.Monad (mplus)-import Language.C.Parser.Builtin (builtinTypeNames)-import Language.C.Parser.Lexer (lexC, parseError)-import Language.C.Parser.Tokens (CToken(..), GnuCTok(..), posLenOfTok)-import Language.C.Parser.ParserMonad (P, failP, execParser, getNewName, addTypedef, shadowTypedef, getCurrentPosition,- enterScope, leaveScope, getLastToken, getSavedToken, ParseError(..))--import Language.C.Data.RList-import Language.C.Data.InputStream-import Language.C.Data.Ident-import Language.C.Data.Name-import Language.C.Data.Node-import Language.C.Data.Position-import Language.C.Syntax--- #if __GLASGOW_HASKELL__ >= 503-import Data.Array--- #else-import Array--- #endif--- #if __GLASGOW_HASKELL__ >= 503-import GHC.Exts--- #else-import GlaExts--- #endif---- parser produced by Happy Version 1.16--newtype HappyAbsSyn = HappyAbsSyn (() -> ())-happyIn7 :: (CTranslUnit) -> (HappyAbsSyn )-happyIn7 x = unsafeCoerce# x-{-# INLINE happyIn7 #-}-happyOut7 :: (HappyAbsSyn ) -> (CTranslUnit)-happyOut7 x = unsafeCoerce# x-{-# INLINE happyOut7 #-}-happyIn8 :: (Reversed [CExtDecl]) -> (HappyAbsSyn )-happyIn8 x = unsafeCoerce# x-{-# INLINE happyIn8 #-}-happyOut8 :: (HappyAbsSyn ) -> (Reversed [CExtDecl])-happyOut8 x = unsafeCoerce# x-{-# INLINE happyOut8 #-}-happyIn9 :: (CExtDecl) -> (HappyAbsSyn )-happyIn9 x = unsafeCoerce# x-{-# INLINE happyIn9 #-}-happyOut9 :: (HappyAbsSyn ) -> (CExtDecl)-happyOut9 x = unsafeCoerce# x-{-# INLINE happyOut9 #-}-happyIn10 :: (CFunDef) -> (HappyAbsSyn )-happyIn10 x = unsafeCoerce# x-{-# INLINE happyIn10 #-}-happyOut10 :: (HappyAbsSyn ) -> (CFunDef)-happyOut10 x = unsafeCoerce# x-{-# INLINE happyOut10 #-}-happyIn11 :: (CDeclr) -> (HappyAbsSyn )-happyIn11 x = unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn ) -> (CDeclr)-happyOut11 x = unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: (CStat) -> (HappyAbsSyn )-happyIn12 x = unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn ) -> (CStat)-happyOut12 x = unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: (CStat) -> (HappyAbsSyn )-happyIn13 x = unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn ) -> (CStat)-happyOut13 x = unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (CStat) -> (HappyAbsSyn )-happyIn14 x = unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn ) -> (CStat)-happyOut14 x = unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: (()) -> (HappyAbsSyn )-happyIn15 x = unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn ) -> (())-happyOut15 x = unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: (()) -> (HappyAbsSyn )-happyIn16 x = unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn ) -> (())-happyOut16 x = unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: (Reversed [CBlockItem]) -> (HappyAbsSyn )-happyIn17 x = unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn ) -> (Reversed [CBlockItem])-happyOut17 x = unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: (CBlockItem) -> (HappyAbsSyn )-happyIn18 x = unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn ) -> (CBlockItem)-happyOut18 x = unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: (CBlockItem) -> (HappyAbsSyn )-happyIn19 x = unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn ) -> (CBlockItem)-happyOut19 x = unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: (CFunDef) -> (HappyAbsSyn )-happyIn20 x = unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn ) -> (CFunDef)-happyOut20 x = unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: (Reversed [Ident]) -> (HappyAbsSyn )-happyIn21 x = unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn ) -> (Reversed [Ident])-happyOut21 x = unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: (CStat) -> (HappyAbsSyn )-happyIn22 x = unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn ) -> (CStat)-happyOut22 x = unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: (CStat) -> (HappyAbsSyn )-happyIn23 x = unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn ) -> (CStat)-happyOut23 x = unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: (CStat) -> (HappyAbsSyn )-happyIn24 x = unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn ) -> (CStat)-happyOut24 x = unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: (CStat) -> (HappyAbsSyn )-happyIn25 x = unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn ) -> (CStat)-happyOut25 x = unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: (CAsmStmt) -> (HappyAbsSyn )-happyIn26 x = unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn ) -> (CAsmStmt)-happyOut26 x = unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: (Maybe CTypeQual) -> (HappyAbsSyn )-happyIn27 x = unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn ) -> (Maybe CTypeQual)-happyOut27 x = unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: ([CAsmOperand]) -> (HappyAbsSyn )-happyIn28 x = unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn ) -> ([CAsmOperand])-happyOut28 x = unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: (Reversed [CAsmOperand]) -> (HappyAbsSyn )-happyIn29 x = unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn ) -> (Reversed [CAsmOperand])-happyOut29 x = unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: (CAsmOperand) -> (HappyAbsSyn )-happyIn30 x = unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn ) -> (CAsmOperand)-happyOut30 x = unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: (Reversed [CStrLit]) -> (HappyAbsSyn )-happyIn31 x = unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn ) -> (Reversed [CStrLit])-happyOut31 x = unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: (CDecl) -> (HappyAbsSyn )-happyIn32 x = unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn ) -> (CDecl)-happyOut32 x = unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: (Reversed [CDecl]) -> (HappyAbsSyn )-happyIn33 x = unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn ) -> (Reversed [CDecl])-happyOut33 x = unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: (CDecl) -> (HappyAbsSyn )-happyIn34 x = unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn ) -> (CDecl)-happyOut34 x = unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: ((Maybe CStrLit, [CAttr])) -> (HappyAbsSyn )-happyIn35 x = unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn ) -> ((Maybe CStrLit, [CAttr]))-happyOut35 x = unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: (CDecl) -> (HappyAbsSyn )-happyIn36 x = unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn ) -> (CDecl)-happyOut36 x = unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: ([CDeclSpec]) -> (HappyAbsSyn )-happyIn37 x = unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn ) -> ([CDeclSpec])-happyOut37 x = unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn38 x = unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut38 x = unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: (CDeclSpec) -> (HappyAbsSyn )-happyIn39 x = unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn ) -> (CDeclSpec)-happyOut39 x = unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: (CStorageSpec) -> (HappyAbsSyn )-happyIn40 x = unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn ) -> (CStorageSpec)-happyOut40 x = unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: ([CDeclSpec]) -> (HappyAbsSyn )-happyIn41 x = unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn ) -> ([CDeclSpec])-happyOut41 x = unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: (CTypeSpec) -> (HappyAbsSyn )-happyIn42 x = unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn ) -> (CTypeSpec)-happyOut42 x = unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn43 x = unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut43 x = unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn44 x = unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut44 x = unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn45 x = unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut45 x = unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn46 x = unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut46 x = unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn47 x = unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut47 x = unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn48 x = unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut48 x = unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: (CTypeSpec) -> (HappyAbsSyn )-happyIn49 x = unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> (CTypeSpec)-happyOut49 x = unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: (CStructUnion) -> (HappyAbsSyn )-happyIn50 x = unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> (CStructUnion)-happyOut50 x = unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: (Located CStructTag) -> (HappyAbsSyn )-happyIn51 x = unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> (Located CStructTag)-happyOut51 x = unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: (Reversed [CDecl]) -> (HappyAbsSyn )-happyIn52 x = unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> (Reversed [CDecl])-happyOut52 x = unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: (CDecl) -> (HappyAbsSyn )-happyIn53 x = unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> (CDecl)-happyOut53 x = unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: (CDecl) -> (HappyAbsSyn )-happyIn54 x = unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> (CDecl)-happyOut54 x = unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: (CDecl) -> (HappyAbsSyn )-happyIn55 x = unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> (CDecl)-happyOut55 x = unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: ((Maybe CDeclr, Maybe CExpr)) -> (HappyAbsSyn )-happyIn56 x = unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> ((Maybe CDeclr, Maybe CExpr))-happyOut56 x = unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: ((Maybe CDeclr, Maybe CExpr)) -> (HappyAbsSyn )-happyIn57 x = unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> ((Maybe CDeclr, Maybe CExpr))-happyOut57 x = unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: (CEnum) -> (HappyAbsSyn )-happyIn58 x = unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn ) -> (CEnum)-happyOut58 x = unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: (Reversed [(Ident, Maybe CExpr)]) -> (HappyAbsSyn )-happyIn59 x = unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn ) -> (Reversed [(Ident, Maybe CExpr)])-happyOut59 x = unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: ((Ident, Maybe CExpr)) -> (HappyAbsSyn )-happyIn60 x = unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn ) -> ((Ident, Maybe CExpr))-happyOut60 x = unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: (CTypeQual) -> (HappyAbsSyn )-happyIn61 x = unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn ) -> (CTypeQual)-happyOut61 x = unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: (Reversed [CTypeQual]) -> (HappyAbsSyn )-happyIn62 x = unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn ) -> (Reversed [CTypeQual])-happyOut62 x = unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: (CDeclrR) -> (HappyAbsSyn )-happyIn63 x = unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut63 x = unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: (Maybe CStrLit) -> (HappyAbsSyn )-happyIn64 x = unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn ) -> (Maybe CStrLit)-happyOut64 x = unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: (CDeclrR) -> (HappyAbsSyn )-happyIn65 x = unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut65 x = unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: (CDeclrR) -> (HappyAbsSyn )-happyIn66 x = unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut66 x = unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: (CDeclrR) -> (HappyAbsSyn )-happyIn67 x = unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut67 x = unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: (CDeclrR) -> (HappyAbsSyn )-happyIn68 x = unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut68 x = unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: (CDeclrR) -> (HappyAbsSyn )-happyIn69 x = unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut69 x = unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: (CDeclrR) -> (HappyAbsSyn )-happyIn70 x = unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut70 x = unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: (CDeclrR) -> (HappyAbsSyn )-happyIn71 x = unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut71 x = unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: (CDeclrR) -> (HappyAbsSyn )-happyIn72 x = unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut72 x = unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: (CDeclrR) -> (HappyAbsSyn )-happyIn73 x = unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut73 x = unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: (CDeclrR) -> (HappyAbsSyn )-happyIn74 x = unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut74 x = unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: (CDeclrR) -> (HappyAbsSyn )-happyIn75 x = unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut75 x = unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: (CDeclr) -> (HappyAbsSyn )-happyIn76 x = unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn ) -> (CDeclr)-happyOut76 x = unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: (CDeclrR) -> (HappyAbsSyn )-happyIn77 x = unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut77 x = unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: (CDeclrR) -> (HappyAbsSyn )-happyIn78 x = unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut78 x = unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: (([CDecl], Bool)) -> (HappyAbsSyn )-happyIn79 x = unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn ) -> (([CDecl], Bool))-happyOut79 x = unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: (Reversed [CDecl]) -> (HappyAbsSyn )-happyIn80 x = unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn ) -> (Reversed [CDecl])-happyOut80 x = unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (CDecl) -> (HappyAbsSyn )-happyIn81 x = unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn ) -> (CDecl)-happyOut81 x = unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: (Reversed [Ident]) -> (HappyAbsSyn )-happyIn82 x = unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn ) -> (Reversed [Ident])-happyOut82 x = unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyIn83 :: (CDecl) -> (HappyAbsSyn )-happyIn83 x = unsafeCoerce# x-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn ) -> (CDecl)-happyOut83 x = unsafeCoerce# x-{-# INLINE happyOut83 #-}-happyIn84 :: (CDeclrR) -> (HappyAbsSyn )-happyIn84 x = unsafeCoerce# x-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut84 x = unsafeCoerce# x-{-# INLINE happyOut84 #-}-happyIn85 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn )-happyIn85 x = unsafeCoerce# x-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR)-happyOut85 x = unsafeCoerce# x-{-# INLINE happyOut85 #-}-happyIn86 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn )-happyIn86 x = unsafeCoerce# x-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR)-happyOut86 x = unsafeCoerce# x-{-# INLINE happyOut86 #-}-happyIn87 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn )-happyIn87 x = unsafeCoerce# x-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR)-happyOut87 x = unsafeCoerce# x-{-# INLINE happyOut87 #-}-happyIn88 :: (CDeclrR) -> (HappyAbsSyn )-happyIn88 x = unsafeCoerce# x-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut88 x = unsafeCoerce# x-{-# INLINE happyOut88 #-}-happyIn89 :: (CDeclrR) -> (HappyAbsSyn )-happyIn89 x = unsafeCoerce# x-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut89 x = unsafeCoerce# x-{-# INLINE happyOut89 #-}-happyIn90 :: (CInit) -> (HappyAbsSyn )-happyIn90 x = unsafeCoerce# x-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn ) -> (CInit)-happyOut90 x = unsafeCoerce# x-{-# INLINE happyOut90 #-}-happyIn91 :: (Maybe CInit) -> (HappyAbsSyn )-happyIn91 x = unsafeCoerce# x-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn ) -> (Maybe CInit)-happyOut91 x = unsafeCoerce# x-{-# INLINE happyOut91 #-}-happyIn92 :: (Reversed CInitList) -> (HappyAbsSyn )-happyIn92 x = unsafeCoerce# x-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn ) -> (Reversed CInitList)-happyOut92 x = unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyIn93 :: ([CDesignator]) -> (HappyAbsSyn )-happyIn93 x = unsafeCoerce# x-{-# INLINE happyIn93 #-}-happyOut93 :: (HappyAbsSyn ) -> ([CDesignator])-happyOut93 x = unsafeCoerce# x-{-# INLINE happyOut93 #-}-happyIn94 :: (Reversed [CDesignator]) -> (HappyAbsSyn )-happyIn94 x = unsafeCoerce# x-{-# INLINE happyIn94 #-}-happyOut94 :: (HappyAbsSyn ) -> (Reversed [CDesignator])-happyOut94 x = unsafeCoerce# x-{-# INLINE happyOut94 #-}-happyIn95 :: (CDesignator) -> (HappyAbsSyn )-happyIn95 x = unsafeCoerce# x-{-# INLINE happyIn95 #-}-happyOut95 :: (HappyAbsSyn ) -> (CDesignator)-happyOut95 x = unsafeCoerce# x-{-# INLINE happyOut95 #-}-happyIn96 :: (CDesignator) -> (HappyAbsSyn )-happyIn96 x = unsafeCoerce# x-{-# INLINE happyIn96 #-}-happyOut96 :: (HappyAbsSyn ) -> (CDesignator)-happyOut96 x = unsafeCoerce# x-{-# INLINE happyOut96 #-}-happyIn97 :: (CExpr) -> (HappyAbsSyn )-happyIn97 x = unsafeCoerce# x-{-# INLINE happyIn97 #-}-happyOut97 :: (HappyAbsSyn ) -> (CExpr)-happyOut97 x = unsafeCoerce# x-{-# INLINE happyOut97 #-}-happyIn98 :: (Reversed [CDesignator]) -> (HappyAbsSyn )-happyIn98 x = unsafeCoerce# x-{-# INLINE happyIn98 #-}-happyOut98 :: (HappyAbsSyn ) -> (Reversed [CDesignator])-happyOut98 x = unsafeCoerce# x-{-# INLINE happyOut98 #-}-happyIn99 :: (CExpr) -> (HappyAbsSyn )-happyIn99 x = unsafeCoerce# x-{-# INLINE happyIn99 #-}-happyOut99 :: (HappyAbsSyn ) -> (CExpr)-happyOut99 x = unsafeCoerce# x-{-# INLINE happyOut99 #-}-happyIn100 :: (Reversed [CExpr]) -> (HappyAbsSyn )-happyIn100 x = unsafeCoerce# x-{-# INLINE happyIn100 #-}-happyOut100 :: (HappyAbsSyn ) -> (Reversed [CExpr])-happyOut100 x = unsafeCoerce# x-{-# INLINE happyOut100 #-}-happyIn101 :: (CExpr) -> (HappyAbsSyn )-happyIn101 x = unsafeCoerce# x-{-# INLINE happyIn101 #-}-happyOut101 :: (HappyAbsSyn ) -> (CExpr)-happyOut101 x = unsafeCoerce# x-{-# INLINE happyOut101 #-}-happyIn102 :: (Located CUnaryOp) -> (HappyAbsSyn )-happyIn102 x = unsafeCoerce# x-{-# INLINE happyIn102 #-}-happyOut102 :: (HappyAbsSyn ) -> (Located CUnaryOp)-happyOut102 x = unsafeCoerce# x-{-# INLINE happyOut102 #-}-happyIn103 :: (CExpr) -> (HappyAbsSyn )-happyIn103 x = unsafeCoerce# x-{-# INLINE happyIn103 #-}-happyOut103 :: (HappyAbsSyn ) -> (CExpr)-happyOut103 x = unsafeCoerce# x-{-# INLINE happyOut103 #-}-happyIn104 :: (CExpr) -> (HappyAbsSyn )-happyIn104 x = unsafeCoerce# x-{-# INLINE happyIn104 #-}-happyOut104 :: (HappyAbsSyn ) -> (CExpr)-happyOut104 x = unsafeCoerce# x-{-# INLINE happyOut104 #-}-happyIn105 :: (CExpr) -> (HappyAbsSyn )-happyIn105 x = unsafeCoerce# x-{-# INLINE happyIn105 #-}-happyOut105 :: (HappyAbsSyn ) -> (CExpr)-happyOut105 x = unsafeCoerce# x-{-# INLINE happyOut105 #-}-happyIn106 :: (CExpr) -> (HappyAbsSyn )-happyIn106 x = unsafeCoerce# x-{-# INLINE happyIn106 #-}-happyOut106 :: (HappyAbsSyn ) -> (CExpr)-happyOut106 x = unsafeCoerce# x-{-# INLINE happyOut106 #-}-happyIn107 :: (CExpr) -> (HappyAbsSyn )-happyIn107 x = unsafeCoerce# x-{-# INLINE happyIn107 #-}-happyOut107 :: (HappyAbsSyn ) -> (CExpr)-happyOut107 x = unsafeCoerce# x-{-# INLINE happyOut107 #-}-happyIn108 :: (CExpr) -> (HappyAbsSyn )-happyIn108 x = unsafeCoerce# x-{-# INLINE happyIn108 #-}-happyOut108 :: (HappyAbsSyn ) -> (CExpr)-happyOut108 x = unsafeCoerce# x-{-# INLINE happyOut108 #-}-happyIn109 :: (CExpr) -> (HappyAbsSyn )-happyIn109 x = unsafeCoerce# x-{-# INLINE happyIn109 #-}-happyOut109 :: (HappyAbsSyn ) -> (CExpr)-happyOut109 x = unsafeCoerce# x-{-# INLINE happyOut109 #-}-happyIn110 :: (CExpr) -> (HappyAbsSyn )-happyIn110 x = unsafeCoerce# x-{-# INLINE happyIn110 #-}-happyOut110 :: (HappyAbsSyn ) -> (CExpr)-happyOut110 x = unsafeCoerce# x-{-# INLINE happyOut110 #-}-happyIn111 :: (CExpr) -> (HappyAbsSyn )-happyIn111 x = unsafeCoerce# x-{-# INLINE happyIn111 #-}-happyOut111 :: (HappyAbsSyn ) -> (CExpr)-happyOut111 x = unsafeCoerce# x-{-# INLINE happyOut111 #-}-happyIn112 :: (CExpr) -> (HappyAbsSyn )-happyIn112 x = unsafeCoerce# x-{-# INLINE happyIn112 #-}-happyOut112 :: (HappyAbsSyn ) -> (CExpr)-happyOut112 x = unsafeCoerce# x-{-# INLINE happyOut112 #-}-happyIn113 :: (CExpr) -> (HappyAbsSyn )-happyIn113 x = unsafeCoerce# x-{-# INLINE happyIn113 #-}-happyOut113 :: (HappyAbsSyn ) -> (CExpr)-happyOut113 x = unsafeCoerce# x-{-# INLINE happyOut113 #-}-happyIn114 :: (CExpr) -> (HappyAbsSyn )-happyIn114 x = unsafeCoerce# x-{-# INLINE happyIn114 #-}-happyOut114 :: (HappyAbsSyn ) -> (CExpr)-happyOut114 x = unsafeCoerce# x-{-# INLINE happyOut114 #-}-happyIn115 :: (CExpr) -> (HappyAbsSyn )-happyIn115 x = unsafeCoerce# x-{-# INLINE happyIn115 #-}-happyOut115 :: (HappyAbsSyn ) -> (CExpr)-happyOut115 x = unsafeCoerce# x-{-# INLINE happyOut115 #-}-happyIn116 :: (Located CAssignOp) -> (HappyAbsSyn )-happyIn116 x = unsafeCoerce# x-{-# INLINE happyIn116 #-}-happyOut116 :: (HappyAbsSyn ) -> (Located CAssignOp)-happyOut116 x = unsafeCoerce# x-{-# INLINE happyOut116 #-}-happyIn117 :: (CExpr) -> (HappyAbsSyn )-happyIn117 x = unsafeCoerce# x-{-# INLINE happyIn117 #-}-happyOut117 :: (HappyAbsSyn ) -> (CExpr)-happyOut117 x = unsafeCoerce# x-{-# INLINE happyOut117 #-}-happyIn118 :: (Reversed [CExpr]) -> (HappyAbsSyn )-happyIn118 x = unsafeCoerce# x-{-# INLINE happyIn118 #-}-happyOut118 :: (HappyAbsSyn ) -> (Reversed [CExpr])-happyOut118 x = unsafeCoerce# x-{-# INLINE happyOut118 #-}-happyIn119 :: (Maybe CExpr) -> (HappyAbsSyn )-happyIn119 x = unsafeCoerce# x-{-# INLINE happyIn119 #-}-happyOut119 :: (HappyAbsSyn ) -> (Maybe CExpr)-happyOut119 x = unsafeCoerce# x-{-# INLINE happyOut119 #-}-happyIn120 :: (Maybe CExpr) -> (HappyAbsSyn )-happyIn120 x = unsafeCoerce# x-{-# INLINE happyIn120 #-}-happyOut120 :: (HappyAbsSyn ) -> (Maybe CExpr)-happyOut120 x = unsafeCoerce# x-{-# INLINE happyOut120 #-}-happyIn121 :: (CExpr) -> (HappyAbsSyn )-happyIn121 x = unsafeCoerce# x-{-# INLINE happyIn121 #-}-happyOut121 :: (HappyAbsSyn ) -> (CExpr)-happyOut121 x = unsafeCoerce# x-{-# INLINE happyOut121 #-}-happyIn122 :: (CConst) -> (HappyAbsSyn )-happyIn122 x = unsafeCoerce# x-{-# INLINE happyIn122 #-}-happyOut122 :: (HappyAbsSyn ) -> (CConst)-happyOut122 x = unsafeCoerce# x-{-# INLINE happyOut122 #-}-happyIn123 :: (CStrLit) -> (HappyAbsSyn )-happyIn123 x = unsafeCoerce# x-{-# INLINE happyIn123 #-}-happyOut123 :: (HappyAbsSyn ) -> (CStrLit)-happyOut123 x = unsafeCoerce# x-{-# INLINE happyOut123 #-}-happyIn124 :: (Reversed [CString]) -> (HappyAbsSyn )-happyIn124 x = unsafeCoerce# x-{-# INLINE happyIn124 #-}-happyOut124 :: (HappyAbsSyn ) -> (Reversed [CString])-happyOut124 x = unsafeCoerce# x-{-# INLINE happyOut124 #-}-happyIn125 :: (Ident) -> (HappyAbsSyn )-happyIn125 x = unsafeCoerce# x-{-# INLINE happyIn125 #-}-happyOut125 :: (HappyAbsSyn ) -> (Ident)-happyOut125 x = unsafeCoerce# x-{-# INLINE happyOut125 #-}-happyIn126 :: ([CAttr]) -> (HappyAbsSyn )-happyIn126 x = unsafeCoerce# x-{-# INLINE happyIn126 #-}-happyOut126 :: (HappyAbsSyn ) -> ([CAttr])-happyOut126 x = unsafeCoerce# x-{-# INLINE happyOut126 #-}-happyIn127 :: ([CAttr]) -> (HappyAbsSyn )-happyIn127 x = unsafeCoerce# x-{-# INLINE happyIn127 #-}-happyOut127 :: (HappyAbsSyn ) -> ([CAttr])-happyOut127 x = unsafeCoerce# x-{-# INLINE happyOut127 #-}-happyIn128 :: ([CAttr]) -> (HappyAbsSyn )-happyIn128 x = unsafeCoerce# x-{-# INLINE happyIn128 #-}-happyOut128 :: (HappyAbsSyn ) -> ([CAttr])-happyOut128 x = unsafeCoerce# x-{-# INLINE happyOut128 #-}-happyIn129 :: (Reversed [CAttr]) -> (HappyAbsSyn )-happyIn129 x = unsafeCoerce# x-{-# INLINE happyIn129 #-}-happyOut129 :: (HappyAbsSyn ) -> (Reversed [CAttr])-happyOut129 x = unsafeCoerce# x-{-# INLINE happyOut129 #-}-happyIn130 :: (Maybe CAttr) -> (HappyAbsSyn )-happyIn130 x = unsafeCoerce# x-{-# INLINE happyIn130 #-}-happyOut130 :: (HappyAbsSyn ) -> (Maybe CAttr)-happyOut130 x = unsafeCoerce# x-{-# INLINE happyOut130 #-}-happyIn131 :: (Reversed [CExpr]) -> (HappyAbsSyn )-happyIn131 x = unsafeCoerce# x-{-# INLINE happyIn131 #-}-happyOut131 :: (HappyAbsSyn ) -> (Reversed [CExpr])-happyOut131 x = unsafeCoerce# x-{-# INLINE happyOut131 #-}-happyInTok :: CToken -> (HappyAbsSyn )-happyInTok x = unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn ) -> CToken-happyOutTok x = unsafeCoerce# x-{-# INLINE happyOutTok #-}--happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x00\x00\x1d\x0f\xd3\x09\x31\x0f\x00\x00\x80\x07\x00\x00\x7f\x09\x77\x0f\x31\x0f\x00\x00\xc8\x09\x1f\x05\x05\x05\x7f\x03\xf0\x04\x65\x08\x54\x08\x49\x08\x3e\x08\xc6\x04\x00\x00\x2b\x08\xef\x07\x00\x00\x00\x00\x0b\x09\x00\x00\x00\x00\xcd\x0e\xcd\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x82\x04\xaf\x0e\x96\x0e\x00\x00\x00\x00\x00\x00\xf6\x07\x00\x00\x32\x0e\x14\x0e\x14\x0e\x48\x08\x47\x08\x24\x08\xb6\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x07\xe6\x07\x00\x00\x00\x00\x4a\x05\xd2\x07\xfb\x0d\xd0\x07\xd6\x07\xd3\x09\xf5\x07\x24\x00\xed\x07\xfb\x0d\xec\x07\xd5\x07\xc6\x07\x00\x00\x76\x07\x00\x00\xae\x07\x00\x00\x95\x04\x8e\x04\x01\x01\xd5\x11\x00\x00\x01\x01\x00\x00\x9a\x19\x9a\x19\x11\x18\x01\x18\x21\x08\x21\x08\x00\x00\x00\x00\x71\x07\x00\x00\xa6\x11\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\x4a\x05\x89\x12\x00\x00\x3d\x01\x3d\x01\xcb\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x07\x1d\x0f\x55\x07\x00\x00\xb8\x07\x6f\x09\x7a\x01\x59\x07\x5b\x07\xb3\x12\x00\x00\x00\x00\x4b\x00\xb2\x07\xb4\x09\xaa\x07\x4b\x00\x86\x07\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\xa7\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x18\x00\x00\x9d\x07\x00\x00\x94\x18\xff\x0a\x72\x07\x00\x00\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x77\x11\x97\x07\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x07\x5f\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x07\x00\x00\x6e\x02\x48\x02\x0f\x00\x52\x07\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x7b\x07\x00\x00\x4f\x07\x53\x07\x00\x00\x1b\x07\x00\x00\x1b\x07\x00\x00\x00\x00\xfb\x0d\xfb\x0d\x00\x00\x4d\x07\xfb\x0d\x41\x07\xfb\x0d\x00\x00\x43\x08\x14\x07\xd3\x09\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x65\x07\x00\x00\x2e\x07\xf4\x06\x00\x00\xc3\x1a\xc3\x1a\xfb\x0d\x00\x00\x0b\x09\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x0b\x09\x00\x00\x0b\x09\x00\x00\x00\x00\x00\x00\x4e\x07\x97\x03\xe7\x1a\xab\x04\xab\x04\x7a\x0a\x4c\x07\x4b\x07\x9f\x1a\xfb\x0d\xfb\x0d\x97\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\xfb\x0d\x00\x00\xfb\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0d\xfb\x0d\x36\x04\x36\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x07\x6e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x09\xa3\x09\x8a\x04\x8a\x04\x4f\x04\x4f\x04\x4f\x04\x4f\x04\x7f\x03\x7f\x03\x1d\x04\x35\x07\x2b\x07\x16\x07\x0c\x07\xfb\x0d\x25\x07\x00\x00\xfb\x06\x00\x00\x61\x0d\x00\x00\x00\x00\x00\x00\xb7\x06\x57\x1a\x33\x1a\x48\x11\x00\x0f\x00\x00\x00\x00\x0f\x07\x0e\x07\x00\x00\xf3\x06\xdd\x06\xdb\x06\xc7\x06\xd3\x09\xdf\x07\xad\x06\x94\x06\x7c\x06\xd3\x09\xfb\x0d\x00\x00\xcb\x06\x6c\x19\xab\x06\xa7\x06\x00\x00\xc4\x06\x00\x00\xc3\x06\xc1\x06\xea\x00\xd8\x00\x38\x18\xa1\x06\x5d\x06\xaa\x06\x00\x00\x6f\x09\x38\x18\x86\x06\x00\x00\x00\x00\x1e\x19\x5b\x0b\x00\x00\x00\x00\xb1\x01\x93\x01\x8e\x06\x88\x06\x0f\x00\x47\x00\x93\x01\x00\x00\x38\x18\x66\x06\x00\x00\x49\x06\x00\x00\x6f\x09\x3e\x06\x00\x00\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x62\x06\x00\x00\x38\x18\x3d\x06\x00\x00\x9b\x0a\x00\x00\x29\x06\xe0\x0b\x09\x00\xce\x05\x74\x02\xff\x0f\x74\x02\x21\x08\x21\x08\xd0\x0f\x24\x06\xfb\x05\x00\x00\x1b\x01\x45\x19\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x19\x11\xd8\x00\xea\x10\x5a\x12\x6f\x09\x38\x18\x04\x06\x00\x00\x19\x06\x9e\x09\x12\x00\x12\x00\x0f\x00\x00\x00\x0f\x00\x00\x00\x0f\x00\x00\x00\x00\x00\xdc\x0c\x09\x06\xf4\x05\xcc\x03\x03\x06\xfe\x05\x77\x00\xca\x00\x00\x00\x00\x00\xef\x05\x00\x00\x00\x00\xcd\x02\x00\x00\xcb\x05\xcc\x03\xaa\x05\x00\x00\x00\x00\x00\x00\xdc\x0c\x4b\x09\x00\x00\x0f\x00\x00\x00\xfd\x0c\x00\x00\xc8\x05\xc1\x05\x8c\x05\x8c\x05\xbb\x10\x00\x00\xf1\x00\xc9\x00\x8c\x05\x00\x00\x56\x05\x66\x18\x00\x00\x53\x05\x00\x00\xf0\x18\xc2\x18\xa1\x0f\xde\x12\x53\x05\x53\x05\x00\x00\x72\x0f\x49\x07\x53\x05\x00\x00\x53\x05\x53\x05\x00\x00\xab\x04\x62\x0c\x9d\x05\x9b\x05\x09\x00\x00\x00\x90\x05\x46\x05\x37\x0a\x09\x00\x00\x00\x00\x00\x6f\x09\x38\x18\x6d\x05\x00\x00\x8f\x05\x8d\x05\xdc\x17\x00\x00\x00\x00\x00\x00\x2f\x09\x84\x05\x0e\x00\xbe\x00\x83\x05\x0f\x00\x0f\x00\x2c\x09\x00\x00\x00\x00\x00\x00\xe3\x0a\x65\x00\x00\x00\x00\x00\x81\x05\x79\x05\x10\x05\x00\x00\x00\x00\x00\x00\x35\x05\x35\x05\xd3\x09\xd3\x09\xd3\x09\x00\x00\xfb\x0d\xfb\x0d\xfb\x0d\x42\x05\x00\x00\xaa\x01\xc9\x03\xdf\x07\xf2\x04\x00\x00\x23\x05\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x8c\x10\xd8\x00\x5d\x10\x2d\x05\xa7\x08\x00\x00\x7b\x1a\x9a\x03\x7b\x1a\x1c\x05\x1c\x05\x1c\x05\x30\x0c\x00\x00\xa2\x09\x31\x05\x2f\x05\x2d\x00\x33\x12\x00\x00\x00\x00\xfe\x0b\xfb\x0d\x00\x00\xfb\x0d\x00\x00\xfb\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x02\xfd\x0c\xdc\x02\x00\x00\x99\x01\x00\x00\xd4\x04\xfb\x0d\x9a\x03\xfe\x0b\x21\x05\x0d\x05\x13\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x04\x09\x05\xed\x02\x00\x00\xf9\x04\x00\x00\xc0\x04\x2e\x10\xc0\x04\xc0\x04\xc0\x04\x00\x00\xa3\x03\x89\x04\x00\x00\xa2\x04\x2a\x00\xd3\x09\xc7\x04\x9c\x04\x97\x04\x7f\x04\x00\x00\x00\x00\x88\x04\x88\x04\xa1\x04\x00\x00\x00\x00\x22\x09\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x0a\x0f\x00\x00\x00\xaf\x17\xd4\x02\x00\x00\xa0\x03\x98\x03\x0f\x1a\xc2\x12\x00\x00\x00\x00\xbe\x19\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x04\x9a\x04\x8b\x04\x86\x04\x09\x00\x0a\x04\x00\x00\x7a\x04\x00\x00\x00\x00\x68\x04\xfb\x0d\x00\x00\x00\x00\x00\x00\xb4\x04\x9f\x00\x04\x12\x00\x00\x00\x00\xdc\x0a\x3e\x09\x24\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x2b\x00\x2b\x00\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x02\xfb\x0d\xf4\x00\x00\x00\xe4\x0c\x64\x04\x77\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x2b\x00\x5f\x01\xcd\x00\x3e\x04\x00\x00\x00\x00\xfb\x0d\x3c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x03\x1b\x04\xfb\x0d\x9e\x00\xeb\x19\xc8\x03\x00\x00\xc8\x03\x00\x00\xc8\x03\x06\x04\xfb\x0d\x00\x00\x00\x00\xcd\x00\x1f\x09\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x09\xfb\x0d\xfb\x0d\xf5\x03\x00\x00\x0a\x01\xef\x03\x00\x00\x1a\x04\x49\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\xfb\x0d\x40\x03\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x97\x01\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\x00\x00\x00\x00\x80\x0c\x00\x00\x00\x00\xfb\x0d\x63\x0b\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x01\x04\xe1\x03\xfb\x0d\x2a\x00\xb6\x03\x2a\x00\x00\x00\xd8\x03\xd3\x03\x00\x00\x00\x00\x00\x00\xfb\x0d\x00\x00\x9e\x00\xd4\x02\x6a\x03\x00\x00\xfb\x0d\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\xfb\x0d\x00\x00\x00\x00\x00\x00\x4a\x03\x4a\x03\x00\x00\xd3\x09\xd3\x09\xd5\x00\x00\x00\x00\x00\xa8\x03\x3b\x03\x3b\x03\x00\x00\x00\x00\x7a\x03\x00\x00\x00\x00\x74\x03\x72\x03\x00\x00\x46\x03\x0b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\xfb\x0d\xfb\x0d\x6c\x03\x5b\x03\x17\x03\xe9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x36\x03\x71\x00\xd3\x06\xc6\x1d\x3c\x03\x38\x00\x00\x00\x00\x00\xc5\x02\x35\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x03\x00\x00\x00\x00\x71\x0d\xa4\x0b\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x02\xd5\x0a\xb9\x0a\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x20\x0c\xbe\x03\x60\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x03\x1a\x00\x00\x00\x76\x1f\x00\x00\x00\x00\xb8\x06\x00\x00\x95\x02\x00\x00\x4c\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\x2a\x06\xc3\x00\x00\x00\x8a\x05\x00\x00\x14\x00\x16\x01\x6c\x02\x7d\x01\xa2\x01\xcb\x00\x00\x00\x00\x00\x96\x08\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x99\x08\xe2\x02\x00\x00\x00\x00\xbb\x02\x15\x01\x00\x00\xa8\x0a\xd7\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\xca\x15\x71\x02\x5d\x02\x6a\x02\x77\x08\x00\x00\x00\x00\x70\x02\x00\x00\x5b\x08\x00\x00\x40\x00\xc6\x02\x00\x00\x00\x00\x00\x00\x52\x02\x9e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x66\x02\x00\x00\xa8\x13\x16\x17\xa9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x51\x02\x90\x02\xec\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x02\x4f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x9a\x13\xe8\x16\x35\x08\x75\x02\x00\x00\x00\x00\x00\x00\x4a\x02\x5c\x02\x00\x00\x00\x00\x00\x00\x62\x02\x31\x02\x56\x02\xf3\x07\x00\x00\xee\x07\x00\x00\x00\x00\xab\x1d\x90\x1d\x00\x00\x00\x00\x75\x1d\x00\x00\x5a\x1d\x00\x00\x98\x06\x00\x00\x4e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x01\xe9\x07\x00\x00\x7b\x16\x53\x16\x5b\x1f\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x5b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x69\x05\x9b\x00\x78\x00\x50\x00\x89\x16\x00\x00\x00\x00\xac\x03\x3f\x1d\xc7\x1f\x24\x1d\xe2\x1f\x08\x15\x84\x15\xfd\x1f\xf1\x0b\x6f\x0b\xf0\x0c\xbb\x0c\x40\x0c\x3a\x0b\x9b\x0c\x1a\x0b\xfc\x07\x26\x07\xc1\x0b\x2c\x0a\x9d\x09\x00\x00\x40\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x1d\xee\x1c\xdb\x01\xcd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x99\x07\x00\x00\x00\x00\x00\x00\xc6\x01\x61\x04\x00\x00\x73\x13\xda\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x06\x35\x02\x33\x02\xea\x01\x7e\x01\x18\x06\x25\x1f\x00\x00\x00\x00\xa6\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x03\x91\x20\x87\x04\xdd\x01\xce\x07\x00\x00\x00\x00\xa6\x15\x4c\x04\xb7\x01\x00\x00\x00\x00\xda\x13\x26\x03\x00\x00\x00\x00\x6c\x05\x30\x13\x00\x00\x00\x00\xa2\x07\x36\x02\xb6\x0b\x00\x00\x26\x04\xa0\x01\x00\x00\x00\x00\xa7\x01\x4e\x15\xc7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x02\xb0\x01\x00\x00\x00\x00\xeb\x03\x60\x01\x00\x00\xa9\x16\x00\x00\x00\x00\xc4\x1b\x6a\x07\x14\x01\x40\x20\x18\x14\x28\x20\x9f\x01\x18\x00\x2c\x14\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x84\x20\x47\x07\x77\x20\x68\x14\xaf\x14\x2a\x15\xc5\x03\x4d\x01\x00\x00\x00\x00\x73\x07\xd3\x01\xeb\x04\x27\x07\x00\x00\x20\x07\x00\x00\x15\x07\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\x00\x00\x44\x04\x15\x07\x00\x00\xd9\x06\x00\x00\xa9\x1b\x00\x00\x00\x00\x00\x00\x16\x02\xf7\x01\xa9\x14\x00\x00\x6f\x13\x0d\x0e\xf4\x01\x00\x00\x00\x00\x0a\x14\x00\x00\x96\x06\x00\x00\x00\x04\x00\x00\x3e\x13\x60\x17\x76\x06\x68\x06\x00\x00\x06\x13\x59\x17\x2b\x06\x00\x00\x10\x06\xe2\x05\x00\x00\xdb\x00\x62\x17\x00\x00\x00\x00\xdf\x05\x00\x00\x00\x00\x00\x00\xe0\x16\xd9\x05\x00\x00\x00\x00\xd2\x14\x64\x03\x42\x01\x00\x00\x00\x00\x00\x00\x31\x16\x5c\x01\x00\x00\x00\x00\xff\x05\x00\x00\xf9\x08\x60\x07\x00\x00\xf1\x05\xe4\x05\xe1\x05\x00\x00\x00\x00\x00\x00\x92\x0c\x18\x04\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x5e\x01\x57\x01\xae\x05\x93\x05\x78\x05\x00\x00\x31\x1c\x16\x1c\xd3\x1c\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x01\x33\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x09\x43\x01\xc4\x07\x3e\x01\x00\x00\x36\x07\x00\x00\x40\x16\xd5\xff\xe1\x14\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x8a\x02\x00\x00\x00\x00\xf9\x00\x96\x14\x00\x00\x00\x00\x13\x1b\x0a\x1f\x00\x00\x91\x1f\x00\x00\xef\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x1b\x9d\x02\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x1e\xd3\x00\xf1\x1a\x00\x00\x00\x00\x7f\x00\x00\x00\xb4\x05\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x01\x67\x01\x36\x01\x1d\x01\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xff\x0e\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x80\x00\x00\x00\x00\x00\x00\x00\x99\x05\x00\x00\x00\x00\x6b\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x09\x5c\x05\x00\x00\x31\x16\x6a\x20\x00\x00\x00\x00\x00\x00\x04\x04\xb9\x16\x00\x00\x00\x00\x22\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x04\xb0\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x1e\x00\x00\x00\x00\x00\x00\x1a\x17\xfa\x05\x64\x14\x00\x00\x00\x00\x80\x16\x9a\x06\xca\x04\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x02\xaa\x0d\x36\x0d\xfa\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x1e\xd9\xff\x00\x00\x50\x1b\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x91\x06\xbf\x03\x5a\x05\x00\x00\x00\x00\x00\x00\x83\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x68\x1e\x57\x04\x61\x04\x78\x04\x00\x00\x09\x04\x00\x00\x86\x03\x00\x00\x4d\x1e\x00\x00\x00\x00\x5a\x05\xab\x03\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x04\xfb\x1b\xe0\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\xb8\x1c\x44\x00\x00\x00\x00\x00\x00\x00\x2c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x1b\x00\x00\x00\x00\x73\x1b\x00\x00\x00\x00\x32\x1e\x35\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x1c\xf5\xff\x00\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x1e\x00\x00\x5f\x03\x5b\x20\xd0\xff\x00\x00\xfc\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x1d\x00\x00\x00\x00\x00\x00\xec\x01\xd0\xff\x00\x00\xd6\x04\x9e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x1c\x67\x1c\x00\x00\x00\x00\x00\x00\x91\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xfa\xff\x3d\xfe\x00\x00\x00\x00\x00\x00\x3d\xfe\x9b\xfe\x8f\xfe\x7d\xfe\x00\x00\x7b\xfe\x77\xfe\x74\xfe\x71\xfe\x6c\xfe\x69\xfe\x67\xfe\x65\xfe\x63\xfe\x61\xfe\x5f\xfe\x5c\xfe\x4f\xfe\x00\x00\xa5\xfe\xa4\xfe\x3d\xfe\x7e\xfe\x7f\xfe\x00\x00\x00\x00\x81\xfe\x80\xfe\x82\xfe\x83\xfe\x00\x00\x00\x00\x00\x00\x45\xfe\x46\xfe\x44\xfe\x43\xfe\xa6\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\x00\x00\x00\x00\xc7\xff\xd7\xff\xb5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xfe\x00\x00\x00\x00\xa6\xfe\x3e\xfe\x00\x00\xf7\xff\x00\x00\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\x00\x00\x77\xff\x9b\xff\x8a\xff\x9a\xff\x89\xff\x99\xff\x88\xff\x6c\xff\x52\xff\x3d\xfe\x51\xff\x00\x00\xe5\xff\x0a\xff\x08\xff\x09\xff\xa6\xff\xfb\xfe\xfa\xfe\x00\x00\x3c\xfe\x3b\xfe\x00\x00\x3d\xfe\x00\x00\x8d\xff\x7e\xff\x86\xff\x7d\xff\x81\xff\x3d\xfe\x8f\xff\x82\xff\x84\xff\x83\xff\x8c\xff\x85\xff\x80\xff\x8e\xff\x4d\xff\x90\xff\x00\x00\x8b\xff\x4c\xff\x7f\xff\x87\xff\xfe\xfe\x60\xff\x00\x00\x3d\xfe\x00\x00\xf5\xff\x00\x00\x3d\xfe\x00\x00\x3c\xfe\x00\x00\x00\x00\x07\xff\xf9\xfe\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\x76\xff\x6b\xff\x26\xff\xa6\xff\x3a\xfe\x00\x00\x5a\xff\x2b\xff\x2f\xff\x2c\xff\x2d\xff\x2e\xff\x3d\xfe\x03\xff\xd7\xfe\xd5\xfe\xf4\xfe\x49\xfe\x00\x00\x96\xff\x75\xff\x6a\xff\x2a\xff\x26\xff\xa6\xff\x00\x00\x00\x00\x5d\xff\x00\x00\x66\xff\x54\xff\x53\xff\x62\xff\x92\xff\x91\xff\x61\xff\x6f\xff\x68\xff\x67\xff\xa9\xff\x6e\xff\x6d\xff\xaa\xff\x7b\xff\x72\xff\x73\xff\x71\xff\x7a\xff\x79\xff\x78\xff\x00\x00\x26\xff\x27\xff\x23\xff\x20\xff\x1f\xff\x24\xff\x16\xff\x28\xff\xa6\xff\x00\x00\x3d\xfe\x22\xff\x00\x00\x94\xff\x7c\xff\x70\xff\x26\xff\xa6\xff\x93\xff\x00\x00\x65\xff\x00\x00\x26\xff\xa6\xff\x3d\xfe\xa8\xff\x3d\xfe\xa7\xff\xf3\xff\x00\x00\x00\x00\x4a\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfe\x4b\xfe\x00\x00\x00\x00\xbc\xff\x7d\xfe\x47\xfe\x00\x00\xbb\xff\x00\x00\xb4\xff\xd5\xff\x3d\xfe\xc6\xff\x3d\xfe\x3d\xfe\x00\x00\x85\xfe\x3d\xfe\x86\xfe\x8c\xfe\x42\xfe\x41\xfe\x8a\xfe\x3d\xfe\x88\xfe\x3d\xfe\x84\xfe\x8d\xfe\x8e\xfe\x00\x00\xde\xfe\x8a\xff\x89\xff\x88\xff\x00\x00\x00\x00\x00\x00\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xfe\x00\x00\x5a\xfe\x56\xfe\x55\xfe\x59\xfe\x58\xfe\x57\xfe\x52\xfe\x51\xfe\x50\xfe\x54\xfe\x53\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x95\xfe\x94\xfe\xf8\xff\xf9\xff\x97\xfe\x96\xfe\x00\x00\x00\x00\x91\xfe\x99\xfe\x5b\xfe\x78\xfe\x79\xfe\x7a\xfe\x75\xfe\x76\xfe\x72\xfe\x73\xfe\x6d\xfe\x6f\xfe\x6e\xfe\x70\xfe\x6a\xfe\x6b\xfe\x68\xfe\x66\xfe\x64\xfe\x62\xfe\x00\x00\x00\x00\x60\xfe\x4d\xfe\x4e\xfe\xa3\xfe\x00\x00\xdb\xfe\xd8\xfe\xda\xfe\xd9\xfe\x00\x00\xdc\xfe\xf4\xfe\xc8\xfe\xdd\xfe\xa2\xfe\x00\x00\x00\x00\x40\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xff\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\x3d\xfe\x00\x00\x00\x00\xbe\xff\x00\x00\xba\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\xb6\xfe\x3d\xfe\x00\x00\xf1\xff\x3d\xfe\x3d\xfe\xb6\xfe\xef\xff\x21\xff\xf4\xfe\x00\x00\x1e\xff\x12\xff\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\xff\x3d\xfe\xb6\xfe\xf0\xff\x4e\xff\x4b\xff\x3d\xfe\x00\x00\x95\xff\x74\xff\x69\xff\x29\xff\x26\xff\xa6\xff\x00\x00\x57\xff\x3d\xfe\xb6\xfe\xee\xff\x49\xfe\x48\xfe\x00\x00\x49\xfe\x82\xfe\x3d\xfe\xef\xfe\xeb\xfe\xe8\xfe\x9a\xff\x89\xff\xe4\xfe\x00\x00\xf3\xfe\xf1\xfe\x00\x00\x3c\xfe\xe0\xfe\xd4\xfe\xec\xff\xa5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x3d\xfe\x3d\xfe\xb6\xfe\xf2\xff\x00\x00\x00\x00\x00\x00\x3d\xfe\xf6\xfe\xfd\xfe\x02\xff\x06\xff\x09\xff\x05\xff\xf8\xfe\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x00\x00\x36\xfe\x00\x00\x38\xfe\x34\xfe\x35\xfe\x5f\xff\x5e\xff\x00\x00\x33\xff\x31\xff\x00\x00\x00\x00\x04\xff\x01\xff\xf5\xfe\x00\x00\x00\x00\xfc\xfe\x00\xff\xa1\xff\x00\x00\xeb\xff\x00\x00\x00\x00\x26\xff\x26\xff\x00\x00\x28\xff\x00\x00\x3d\xfe\x26\xff\xf7\xfe\x00\x00\x3d\xfe\xd6\xfe\x3d\xfe\xe2\xfe\x00\x00\xe3\xfe\xf4\xfe\xc8\xfe\x3d\xfe\x3d\xfe\xe7\xfe\xf4\xfe\xc8\xfe\x3d\xfe\xea\xfe\x3d\xfe\x3d\xfe\xee\xfe\x3d\xfe\x00\x00\x00\x00\x00\x00\x82\xfe\xd3\xfe\x00\x00\x00\x00\x49\xfe\x82\xfe\xa3\xff\xe7\xff\x3d\xfe\x3d\xfe\xb6\xfe\xed\xff\x00\x00\x00\x00\x3d\xfe\x4b\xff\x9d\xff\xe9\xff\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x0f\xff\x1a\xff\x00\x00\x1d\xff\x1c\xff\x11\xff\x00\x00\x00\x00\xa4\xff\xe8\xff\x00\x00\x00\x00\x00\x00\x9f\xff\x9e\xff\xea\xff\x26\xff\x26\xff\x00\x00\x00\x00\x00\x00\xbd\xff\x4b\xfe\x4b\xfe\x00\x00\x00\x00\xdc\xff\x00\x00\x00\x00\xd6\xff\x00\x00\xd3\xff\x00\x00\xd4\xff\xd2\xff\xd0\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x3d\xfe\xdd\xff\x3d\xfe\x00\x00\x3d\xfe\x00\x00\x89\xfe\x87\xfe\x3d\xfe\xc6\xfe\xc4\xfe\x00\x00\x00\x00\x00\x00\x3c\xfe\xba\xfe\x7c\xfe\xb4\xfe\x00\x00\x5d\xfe\x00\x00\x98\xfe\x00\x00\x9a\xfe\x90\xfe\x5e\xfe\x4c\xfe\xb3\xfe\x00\x00\x00\x00\x00\x00\xac\xfe\xad\xfe\xb9\xfe\x00\x00\x00\x00\x00\x00\xb4\xfe\x00\x00\x00\x00\x00\x00\xc1\xfe\xc2\xfe\xc0\xfe\xc3\xfe\xc5\xfe\xc7\xfe\x3c\xfe\x00\x00\x00\x00\x9e\xfe\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x00\x00\xc9\xff\x00\x00\xb3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xc3\xff\xc2\xff\xb6\xfe\xb6\xfe\x00\x00\x64\xff\x63\xff\x00\x00\x1b\xff\x10\xff\x00\x00\x15\xff\x19\xff\x0d\xff\x0e\xff\x00\x00\x18\xff\x0b\xff\x3d\xfe\x40\xff\x49\xff\x00\x00\x00\x00\x3d\xfe\x3c\xfe\x4a\xff\x4f\xff\x3d\xfe\x5c\xff\x5b\xff\xa2\xff\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x82\xfe\x3d\xfe\xd1\xfe\x00\x00\xd2\xfe\xcc\xfe\x00\x00\x00\x00\xed\xfe\xec\xfe\xe9\xfe\x3d\xfe\xc4\xfe\x3c\xfe\xe6\xfe\xe5\xfe\x3d\xfe\xc4\xfe\x3c\xfe\xe1\xfe\xf0\xfe\xf2\xfe\xdf\xfe\x00\x00\x00\x00\x00\x00\x26\xff\x59\xff\x58\xff\xb5\xfe\xff\xfe\xf4\xff\x00\x00\x00\x00\x00\x00\x38\xff\x00\x00\x00\x00\x36\xfe\x37\xfe\x39\xfe\x31\xfe\x00\x00\x32\xfe\x32\xff\x37\xff\x30\xff\x00\x00\x36\xff\x00\x00\x3c\xfe\x3c\xfe\x00\x00\xcf\xfe\xcb\xfe\x00\x00\x00\x00\xd0\xfe\xca\xfe\x56\xff\x55\xff\x46\xff\x44\xff\x3c\xff\x00\x00\x00\x00\x3c\xfe\x3d\xfe\x48\xff\x3d\xfe\x47\xff\x3d\xfe\x3f\xff\x00\x00\x50\xff\x17\xff\x00\x00\x00\x00\x14\xff\x25\xff\x9c\xff\xa0\xff\x00\x00\x4b\xfe\x4b\xfe\x00\x00\xda\xff\x00\x00\xb2\xff\xb1\xff\x00\x00\x00\x00\xb9\xff\xd8\xff\xc8\xff\xce\xff\xcc\xff\xcd\xff\x00\x00\xcb\xff\x9f\xfe\xa0\xfe\x00\x00\x00\x00\xa1\xfe\xbf\xfe\xbd\xfe\xbe\xfe\xbc\xfe\x00\x00\xa9\xfe\x00\x00\xae\xfe\xab\xfe\xa8\xfe\xaf\xfe\xb2\xfe\x00\x00\x93\xfe\xb1\xfe\x00\x00\x92\xfe\xaa\xfe\x00\x00\x00\x00\xb8\xfe\xbb\xfe\x9d\xfe\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xff\xc1\xff\x00\x00\x00\x00\xc4\xff\x13\xff\x3e\xff\x00\x00\x42\xff\x00\x00\x00\x00\x45\xff\x3b\xff\x00\x00\x39\xff\xc9\xfe\x00\x00\xce\xfe\x35\xff\x33\xfe\x00\x00\x30\xfe\xcd\xfe\x3a\xff\x3d\xfe\x43\xff\x3d\xff\x00\x00\x00\x00\x00\x00\xb8\xff\xb0\xff\x00\x00\x00\x00\x00\x00\x9c\xfe\xb7\xfe\x00\x00\xb0\xfe\xa7\xfe\x00\x00\x00\x00\xaf\xff\x00\x00\x00\x00\xd6\xff\xc0\xff\x41\xff\xbf\xff\x00\x00\xac\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xff\xb6\xff\xad\xff\xae\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x02\x00\x03\x00\x04\x00\x36\x00\x74\x00\x15\x00\x16\x00\x17\x00\x15\x00\x16\x00\x17\x00\x17\x00\x04\x00\x35\x00\x01\x00\x01\x00\x18\x00\x03\x00\x01\x00\x04\x00\x02\x00\x1c\x00\x02\x00\x19\x00\x74\x00\x1b\x00\x0d\x00\x1d\x00\x1e\x00\x1f\x00\x0d\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x01\x00\x03\x00\x14\x00\x02\x00\x5b\x00\x0d\x00\x33\x00\x39\x00\x20\x00\x21\x00\x37\x00\x23\x00\x0d\x00\x21\x00\x02\x00\x03\x00\x04\x00\x1e\x00\x2e\x00\x2a\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x79\x00\x01\x00\x79\x00\x36\x00\x76\x00\x01\x00\x2e\x00\x36\x00\x76\x00\x36\x00\x19\x00\x09\x00\x1b\x00\x0d\x00\x1d\x00\x1e\x00\x1f\x00\x0d\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x74\x00\x01\x00\x5e\x00\x74\x00\x74\x00\x5c\x00\x33\x00\x5e\x00\x74\x00\x5c\x00\x37\x00\x5e\x00\x5e\x00\x0d\x00\x02\x00\x03\x00\x04\x00\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5c\x00\x5d\x00\x42\x00\x43\x00\x44\x00\x5b\x00\x36\x00\x5c\x00\x5d\x00\x5e\x00\x19\x00\x5e\x00\x1b\x00\x79\x00\x1d\x00\x1e\x00\x1f\x00\x79\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x01\x00\x01\x00\x79\x00\x03\x00\x5c\x00\x33\x00\x5e\x00\x74\x00\x5c\x00\x37\x00\x5e\x00\x02\x00\x0d\x00\x0d\x00\x36\x00\x36\x00\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x79\x00\x76\x00\x21\x00\x1e\x00\x23\x00\x23\x00\x01\x00\x07\x00\x5c\x00\x5d\x00\x5e\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x7b\x00\x79\x00\x01\x00\x0d\x00\x02\x00\x33\x00\x01\x00\x2c\x00\x36\x00\x36\x00\x2a\x00\x5c\x00\x54\x00\x36\x00\x0d\x00\x02\x00\x54\x00\x01\x00\x0d\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x43\x00\x20\x00\x21\x00\x0d\x00\x23\x00\x48\x00\x77\x00\x78\x00\x79\x00\x01\x00\x21\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x79\x00\x01\x00\x1e\x00\x2a\x00\x56\x00\x33\x00\x0d\x00\x79\x00\x36\x00\x5c\x00\x5c\x00\x5d\x00\x5e\x00\x0d\x00\x5c\x00\x5d\x00\x36\x00\x01\x00\x36\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x2d\x00\x02\x00\x21\x00\x0d\x00\x23\x00\x43\x00\x36\x00\x78\x00\x79\x00\x79\x00\x48\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x5c\x00\x5d\x00\x5e\x00\x02\x00\x07\x00\x33\x00\x01\x00\x2d\x00\x36\x00\x56\x00\x07\x00\x5c\x00\x5d\x00\x5e\x00\x1e\x00\x5c\x00\x5d\x00\x5e\x00\x0d\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5c\x00\x5d\x00\x21\x00\x21\x00\x23\x00\x23\x00\x5c\x00\x5d\x00\x79\x00\x07\x00\x01\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x07\x00\x79\x00\x2a\x00\x5c\x00\x04\x00\x33\x00\x76\x00\x0d\x00\x37\x00\x36\x00\x5c\x00\x5d\x00\x5e\x00\x5c\x00\x5d\x00\x77\x00\x78\x00\x79\x00\x36\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5c\x00\x5d\x00\x21\x00\x01\x00\x23\x00\x43\x00\x20\x00\x21\x00\x79\x00\x23\x00\x48\x00\x2a\x00\x2b\x00\x2c\x00\x04\x00\x0d\x00\x2a\x00\x2b\x00\x2c\x00\x02\x00\x33\x00\x79\x00\x1c\x00\x36\x00\x56\x00\x33\x00\x7a\x00\x7b\x00\x36\x00\x1c\x00\x5c\x00\x5d\x00\x5e\x00\x4b\x00\x41\x00\x42\x00\x43\x00\x44\x00\x74\x00\x41\x00\x42\x00\x43\x00\x44\x00\x21\x00\x2d\x00\x23\x00\x77\x00\x78\x00\x79\x00\x79\x00\x79\x00\x39\x00\x2a\x00\x2b\x00\x2c\x00\x01\x00\x36\x00\x54\x00\x39\x00\x2a\x00\x5c\x00\x33\x00\x5e\x00\x03\x00\x36\x00\x21\x00\x06\x00\x0d\x00\x54\x00\x43\x00\x05\x00\x06\x00\x07\x00\x2c\x00\x48\x00\x41\x00\x42\x00\x43\x00\x44\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x36\x00\x54\x00\x56\x00\x78\x00\x79\x00\x1f\x00\x34\x00\x35\x00\x5c\x00\x79\x00\x5e\x00\x0d\x00\x20\x00\x21\x00\x2a\x00\x20\x00\x21\x00\x2d\x00\x05\x00\x06\x00\x07\x00\x1e\x00\x09\x00\x1a\x00\x0b\x00\x0c\x00\x0d\x00\x07\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x2d\x00\x36\x00\x5c\x00\x5d\x00\x36\x00\x19\x00\x01\x00\x1b\x00\x03\x00\x1d\x00\x1e\x00\x1f\x00\x79\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x34\x00\x35\x00\x5c\x00\x5d\x00\x5e\x00\x74\x00\x33\x00\x54\x00\x0a\x00\x79\x00\x37\x00\x5a\x00\x0e\x00\x5c\x00\x76\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x54\x00\x6e\x00\x5c\x00\x5d\x00\x5e\x00\x1c\x00\x73\x00\x74\x00\x1c\x00\x76\x00\x42\x00\x43\x00\x44\x00\x79\x00\x2c\x00\x5a\x00\x79\x00\x5c\x00\x30\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x39\x00\x6e\x00\x76\x00\x39\x00\x54\x00\x1c\x00\x73\x00\x74\x00\x4b\x00\x76\x00\x77\x00\x78\x00\x79\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x09\x00\x79\x00\x0b\x00\x0c\x00\x0d\x00\x76\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x1c\x00\x78\x00\x79\x00\x1c\x00\x19\x00\x39\x00\x1b\x00\x76\x00\x1d\x00\x1e\x00\x1f\x00\x0d\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x77\x00\x78\x00\x79\x00\x1c\x00\x39\x00\x33\x00\x07\x00\x39\x00\x1c\x00\x37\x00\x1c\x00\x1c\x00\x01\x00\x1a\x00\x2a\x00\x3c\x00\x3d\x00\x2d\x00\x01\x00\x1a\x00\x03\x00\x42\x00\x43\x00\x44\x00\x0d\x00\x07\x00\x22\x00\x23\x00\x1a\x00\x25\x00\x0d\x00\x27\x00\x39\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x39\x00\x07\x00\x39\x00\x39\x00\x20\x00\x21\x00\x33\x00\x5a\x00\x76\x00\x5c\x00\x37\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x36\x00\x6e\x00\x5c\x00\x5d\x00\x5e\x00\x4c\x00\x73\x00\x74\x00\x1a\x00\x76\x00\x77\x00\x78\x00\x79\x00\x79\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5a\x00\x50\x00\x5c\x00\x1a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x07\x00\x6e\x00\x5c\x00\x5d\x00\x5e\x00\x07\x00\x73\x00\x74\x00\x5c\x00\x5d\x00\x77\x00\x78\x00\x79\x00\x01\x00\x79\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x2a\x00\x74\x00\x03\x00\x2d\x00\x0d\x00\x06\x00\x22\x00\x23\x00\x79\x00\x25\x00\x76\x00\x27\x00\x79\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x02\x00\x03\x00\x36\x00\x1e\x00\x06\x00\x33\x00\x58\x00\x59\x00\x2a\x00\x37\x00\x36\x00\x2d\x00\x1f\x00\x1a\x00\x36\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x07\x00\x22\x00\x23\x00\x76\x00\x25\x00\x4c\x00\x27\x00\x08\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x33\x00\x5a\x00\x75\x00\x5c\x00\x37\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x76\x00\x6e\x00\x5c\x00\x5d\x00\x6d\x00\x4c\x00\x73\x00\x74\x00\x00\x00\x01\x00\x77\x00\x78\x00\x79\x00\x78\x00\x79\x00\x01\x00\x77\x00\x78\x00\x79\x00\x5a\x00\x2b\x00\x5c\x00\x5b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x07\x00\x6e\x00\x41\x00\x42\x00\x43\x00\x44\x00\x73\x00\x74\x00\x36\x00\x02\x00\x77\x00\x78\x00\x79\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x5b\x00\x41\x00\x42\x00\x43\x00\x44\x00\x07\x00\x46\x00\x47\x00\x02\x00\x22\x00\x23\x00\x2b\x00\x25\x00\x01\x00\x27\x00\x01\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x4e\x00\x4f\x00\x50\x00\x19\x00\x04\x00\x1b\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x37\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x32\x00\x13\x00\x14\x00\x15\x00\x16\x00\x5b\x00\x33\x00\x01\x00\x4c\x00\x03\x00\x37\x00\x5c\x00\x5d\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x0d\x00\x5c\x00\x5d\x00\x5a\x00\x5e\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x5a\x00\x6e\x00\x5c\x00\x04\x00\x5e\x00\x5f\x00\x73\x00\x74\x00\x2a\x00\x2b\x00\x77\x00\x78\x00\x79\x00\x21\x00\x5e\x00\x23\x00\x2a\x00\x2b\x00\x07\x00\x2a\x00\x2b\x00\x23\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\x02\x00\x2a\x00\x2b\x00\x2c\x00\x33\x00\x02\x00\x77\x00\x78\x00\x79\x00\x19\x00\x33\x00\x1b\x00\x2b\x00\x1d\x00\x1e\x00\x1f\x00\x04\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x2a\x00\x2b\x00\x36\x00\x5c\x00\x5d\x00\x33\x00\x4e\x00\x4f\x00\x50\x00\x37\x00\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\x19\x00\x04\x00\x1b\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x2c\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x5a\x00\x2a\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x33\x00\x79\x00\x2b\x00\x21\x00\x37\x00\x23\x00\x1e\x00\x79\x00\x5e\x00\x23\x00\x5c\x00\x5d\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\x33\x00\x17\x00\x18\x00\x36\x00\x33\x00\x79\x00\x1e\x00\x36\x00\x5e\x00\x77\x00\x78\x00\x79\x00\x19\x00\x04\x00\x1b\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x30\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x33\x00\x42\x00\x43\x00\x44\x00\x37\x00\x46\x00\x47\x00\x11\x00\x12\x00\x77\x00\x78\x00\x79\x00\x19\x00\x02\x00\x1b\x00\x5e\x00\x1d\x00\x1e\x00\x1f\x00\x04\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x79\x00\x36\x00\x77\x00\x78\x00\x79\x00\x04\x00\x33\x00\x77\x00\x78\x00\x79\x00\x37\x00\x23\x00\x41\x00\x42\x00\x43\x00\x44\x00\x32\x00\x04\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x04\x00\x78\x00\x79\x00\x5c\x00\x5d\x00\x33\x00\x0b\x00\x0c\x00\x36\x00\x41\x00\x42\x00\x43\x00\x44\x00\x02\x00\x77\x00\x78\x00\x79\x00\x19\x00\x02\x00\x1b\x00\x02\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x07\x00\x01\x00\x2d\x00\x03\x00\x2a\x00\x2b\x00\x33\x00\x3c\x00\x78\x00\x79\x00\x37\x00\x2a\x00\x2b\x00\x0d\x00\x2b\x00\x77\x00\x78\x00\x79\x00\x19\x00\x2b\x00\x1b\x00\x02\x00\x1d\x00\x1e\x00\x1f\x00\x2b\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x79\x00\x05\x00\x06\x00\x07\x00\x5c\x00\x5d\x00\x33\x00\x36\x00\x1c\x00\x1d\x00\x37\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x36\x00\x21\x00\x2c\x00\x23\x00\x43\x00\x77\x00\x78\x00\x79\x00\x1e\x00\x48\x00\x2a\x00\x2b\x00\x2c\x00\x43\x00\x05\x00\x06\x00\x07\x00\x02\x00\x48\x00\x33\x00\x77\x00\x78\x00\x79\x00\x56\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x17\x00\x18\x00\x5e\x00\x56\x00\x02\x00\x42\x00\x43\x00\x44\x00\x02\x00\x5c\x00\x5d\x00\x5e\x00\x05\x00\x06\x00\x07\x00\x11\x00\x12\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x37\x00\x02\x00\x77\x00\x78\x00\x79\x00\x77\x00\x78\x00\x79\x00\x0b\x00\x0c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5a\x00\x02\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x79\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x2c\x00\x73\x00\x74\x00\x1e\x00\x76\x00\x5a\x00\x5c\x00\x5c\x00\x2d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x1e\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x30\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x5b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x02\x00\x6e\x00\x05\x00\x06\x00\x07\x00\x36\x00\x73\x00\x74\x00\x02\x00\x76\x00\x02\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x1f\x00\x43\x00\x04\x00\x02\x00\x36\x00\x02\x00\x48\x00\x4d\x00\x04\x00\x3b\x00\x3c\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x04\x00\x56\x00\x04\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x3b\x00\x3c\x00\x3d\x00\x4e\x00\x4f\x00\x50\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5e\x00\x5c\x00\x05\x00\x06\x00\x07\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x30\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x38\x00\x02\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x02\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5a\x00\x79\x00\x5c\x00\x2b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x79\x00\x6e\x00\x4e\x00\x4f\x00\x50\x00\x1f\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x02\x00\x6e\x00\x4e\x00\x4f\x00\x50\x00\x02\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x02\x00\x6e\x00\x05\x00\x06\x00\x07\x00\x2c\x00\x73\x00\x74\x00\x1f\x00\x76\x00\x2a\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x5e\x00\x04\x00\x04\x00\x4e\x00\x4f\x00\x50\x00\x4e\x00\x4f\x00\x50\x00\x3b\x00\x3c\x00\x3d\x00\x05\x00\x06\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x4e\x00\x4f\x00\x50\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4e\x00\x4f\x00\x50\x00\x77\x00\x78\x00\x79\x00\x05\x00\x06\x00\x07\x00\x77\x00\x78\x00\x79\x00\x77\x00\x78\x00\x79\x00\x1f\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x38\x00\x01\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x2c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5a\x00\x79\x00\x5c\x00\x2c\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x1f\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x02\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x08\x00\x6e\x00\x77\x00\x78\x00\x79\x00\x1f\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x5e\x00\x6e\x00\x05\x00\x06\x00\x07\x00\x1f\x00\x73\x00\x74\x00\x02\x00\x76\x00\x02\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x2b\x00\x42\x00\x43\x00\x44\x00\x2b\x00\x5b\x00\x05\x00\x06\x00\x07\x00\x41\x00\x42\x00\x43\x00\x44\x00\x77\x00\x78\x00\x79\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x77\x00\x78\x00\x79\x00\x5c\x00\x2a\x00\x5a\x00\x46\x00\x5c\x00\x02\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x2a\x00\x6e\x00\x2a\x00\x70\x00\x78\x00\x79\x00\x73\x00\x74\x00\x77\x00\x78\x00\x79\x00\x02\x00\x02\x00\x5a\x00\x79\x00\x5c\x00\x5e\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x2a\x00\x6e\x00\x4e\x00\x4f\x00\x50\x00\x1e\x00\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\x1a\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x1b\x00\x6e\x00\x0c\x00\x0d\x00\x19\x00\x10\x00\x73\x00\x74\x00\x04\x00\x76\x00\x01\x00\x5b\x00\x03\x00\x02\x00\x02\x00\x19\x00\x02\x00\x1b\x00\x5e\x00\x1d\x00\x1e\x00\x1f\x00\x0d\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x4e\x00\x4f\x00\x50\x00\x01\x00\x20\x00\x21\x00\x33\x00\x23\x00\x57\x00\x2b\x00\x37\x00\x4e\x00\x4f\x00\x50\x00\x2a\x00\x2b\x00\x2c\x00\x46\x00\x4e\x00\x4f\x00\x50\x00\x2b\x00\x5e\x00\x33\x00\x2c\x00\x01\x00\x36\x00\x2c\x00\x36\x00\x5a\x00\x01\x00\x5c\x00\x30\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x41\x00\x42\x00\x43\x00\x44\x00\x43\x00\x0d\x00\x2c\x00\x30\x00\x5a\x00\x48\x00\x5c\x00\x2c\x00\x5e\x00\x5f\x00\x60\x00\x37\x00\x01\x00\x73\x00\x74\x00\x3b\x00\x3c\x00\x3d\x00\x2c\x00\x56\x00\x03\x00\x41\x00\x42\x00\x43\x00\x44\x00\x5c\x00\x5d\x00\x5e\x00\x01\x00\x73\x00\x74\x00\x2b\x00\x02\x00\x77\x00\x78\x00\x79\x00\x30\x00\x31\x00\x2c\x00\x33\x00\x02\x00\x35\x00\x5b\x00\x5e\x00\x38\x00\x01\x00\x65\x00\x3b\x00\x01\x00\x3d\x00\x3e\x00\x3f\x00\x79\x00\x4e\x00\x4f\x00\x50\x00\x44\x00\x45\x00\x01\x00\x47\x00\x04\x00\x5e\x00\x4a\x00\x4b\x00\x01\x00\x4d\x00\x4e\x00\x5e\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x77\x00\x78\x00\x79\x00\x2c\x00\x65\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x01\x00\x77\x00\x78\x00\x79\x00\x1e\x00\x65\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x01\x00\x01\x00\x10\x00\x4e\x00\x4f\x00\x50\x00\x5a\x00\x1e\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\x00\x1b\x00\x2b\x00\x38\x00\x2b\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x1e\x00\x41\x00\x42\x00\x43\x00\x44\x00\x2b\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x65\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x01\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x77\x00\x78\x00\x79\x00\x01\x00\x01\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5b\x00\x31\x00\x10\x00\x65\x00\x2a\x00\x5a\x00\x36\x00\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x1b\x00\x3e\x00\x77\x00\x78\x00\x79\x00\x1a\x00\x43\x00\x77\x00\x78\x00\x79\x00\x47\x00\x48\x00\x77\x00\x78\x00\x79\x00\x19\x00\x4d\x00\x73\x00\x74\x00\x50\x00\x2f\x00\x52\x00\x31\x00\x10\x00\x33\x00\x56\x00\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x5e\x00\x3d\x00\x3e\x00\x3f\x00\x4e\x00\x4f\x00\x50\x00\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x4e\x00\x4f\x00\x50\x00\xff\xff\x36\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x47\x00\x19\x00\xff\xff\x1b\x00\x1b\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x2f\x00\xff\xff\x31\x00\x33\x00\x33\x00\xff\xff\x35\x00\x37\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x4e\x00\x4f\x00\x50\x00\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x78\x00\x79\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x77\x00\x78\x00\x79\x00\xff\xff\x37\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x77\x00\x78\x00\x79\x00\x01\x00\x02\x00\x03\x00\x01\x00\x02\x00\x03\x00\x1b\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x01\x00\x02\x00\x03\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x2c\x00\xff\xff\xff\xff\x2f\x00\x42\x00\x43\x00\x44\x00\x33\x00\x01\x00\x35\x00\x03\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x0d\x00\x01\x00\x02\x00\x03\x00\x44\x00\x45\x00\x77\x00\x78\x00\x79\x00\xff\xff\x4a\x00\x4b\x00\x4c\x00\x04\x00\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x78\x00\x79\x00\xff\xff\x36\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x01\x00\x43\x00\x03\x00\xff\xff\x05\x00\x06\x00\x48\x00\xff\xff\x09\x00\x0a\x00\x1b\x00\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x56\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x2f\x00\x01\x00\x02\x00\x03\x00\x33\x00\x01\x00\x35\x00\x03\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x0d\x00\x0d\x00\x0e\x00\x0f\x00\x44\x00\x45\x00\x01\x00\x02\x00\x03\x00\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x36\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x43\x00\x36\x00\xff\xff\xff\xff\xff\xff\x48\x00\x3b\x00\x3c\x00\x3d\x00\x1b\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x5a\x00\x56\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x2b\x00\x2c\x00\x5e\x00\xff\xff\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\xff\xff\xff\xff\x37\x00\xff\xff\x39\x00\x3a\x00\x37\x00\xff\xff\x73\x00\x74\x00\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x49\x00\x46\x00\x47\x00\x4c\x00\xff\xff\xff\xff\x4f\x00\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x78\x00\x79\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x0d\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\x1b\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\x2f\x00\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\x36\x00\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x43\x00\x01\x00\xff\xff\x03\x00\xff\xff\x48\x00\x5c\x00\x5d\x00\x5e\x00\x4c\x00\x4d\x00\xff\xff\x5a\x00\x0d\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x1b\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\x2f\x00\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x43\x00\x03\x00\xff\xff\x01\x00\xff\xff\x48\x00\x01\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x0d\x00\x42\x00\x43\x00\x44\x00\x0d\x00\x46\x00\x47\x00\x0d\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\x36\x00\x5a\x00\xff\xff\x5c\x00\x36\x00\x5e\x00\x5f\x00\x36\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\x78\x00\x79\x00\xff\xff\x43\x00\x48\x00\xff\xff\x43\x00\xff\xff\x48\x00\xff\xff\xff\xff\x48\x00\x73\x00\x74\x00\x2f\x00\x5a\x00\xff\xff\x5c\x00\x56\x00\x5e\x00\x5f\x00\x36\x00\x56\x00\xff\xff\x5c\x00\x56\x00\x5e\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5c\x00\x5d\x00\x5e\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\x73\x00\x74\x00\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\x03\x00\xff\xff\x0d\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x01\x00\x1b\x00\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x73\x00\x74\x00\x2c\x00\x2d\x00\x36\x00\x2f\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\xff\xff\x2f\x00\xff\xff\x73\x00\x74\x00\x4c\x00\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x1b\x00\x46\x00\x47\x00\x5a\x00\x01\x00\x5c\x00\x03\x00\x5e\x00\x5f\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x73\x00\x74\x00\x1b\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\x2c\x00\xff\xff\x4c\x00\x2f\x00\x78\x00\x79\x00\xff\xff\x01\x00\xff\xff\x03\x00\x73\x00\x74\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x0d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x73\x00\x74\x00\x36\x00\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5e\x00\xff\xff\x10\x00\x2f\x00\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x5a\x00\x1b\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\x2c\x00\xff\xff\x4c\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x02\x00\xff\xff\xff\xff\x0d\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x01\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x79\x00\xff\xff\x10\x00\x73\x00\x74\x00\xff\xff\xff\xff\x36\x00\x2f\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x1b\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\x2f\x00\xff\xff\x73\x00\x74\x00\x4c\x00\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x1b\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2c\x00\xff\xff\x5a\x00\x2f\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\xff\xff\x1b\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x73\x00\x74\x00\xff\xff\x2f\x00\xff\xff\x4c\x00\x78\x00\x79\x00\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\x1e\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x2f\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x4c\x00\x73\x00\x74\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x78\x00\x79\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2f\x00\x37\x00\xff\xff\xff\xff\x4c\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x1b\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x01\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x4c\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x0d\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x0d\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x01\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x43\x00\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x1b\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x56\x00\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\x5e\x00\xff\xff\x2f\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x4c\x00\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xff\xff\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x01\x00\x31\x00\x03\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x31\x00\xff\xff\x33\x00\x0d\x00\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x5d\x00\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x0d\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x0d\x00\x38\x00\xff\xff\x01\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x0d\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x1e\x00\x03\x00\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x36\x00\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x43\x00\x35\x00\xff\xff\xff\xff\x38\x00\x48\x00\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x56\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x5c\x00\x4e\x00\x5e\x00\xff\xff\x51\x00\x36\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x43\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x48\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x5c\x00\xff\xff\x5e\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3c\x00\x3d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x33\x00\x42\x00\x43\x00\x44\x00\x37\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x78\x00\x79\x00\x37\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x33\x00\x42\x00\x43\x00\x44\x00\x37\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x21\x00\x36\x00\x23\x00\xff\xff\x77\x00\x78\x00\x79\x00\x4a\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x79\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x36\x00\xff\xff\x3c\x00\x3d\x00\xff\xff\xff\xff\x78\x00\x79\x00\x42\x00\x43\x00\x44\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x33\x00\x79\x00\xff\xff\x36\x00\x78\x00\x79\x00\x33\x00\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x33\x00\x25\x00\xff\xff\x27\x00\x37\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x5a\x00\x4c\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x4c\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x5a\x00\x37\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x4c\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x5a\x00\x37\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\x4c\x00\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x22\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\x30\x00\x22\x00\x23\x00\x33\x00\x25\x00\xff\xff\x27\x00\x37\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\x30\x00\x22\x00\x23\x00\x33\x00\x25\x00\xff\xff\x27\x00\x37\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x22\x00\x23\x00\x37\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\x22\x00\x23\x00\x4c\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\x77\x00\x78\x00\x79\x00\xff\xff\x23\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\x37\x00\x2a\x00\x2b\x00\x2c\x00\x36\x00\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x33\x00\xff\xff\xff\xff\x36\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x23\x00\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x36\x00\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\x73\x00\x74\x00\xff\xff\x37\x00\x77\x00\x78\x00\x79\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x47\x00\xff\xff\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x37\x00\xff\xff\xff\xff\x36\x00\x71\x00\xff\xff\x73\x00\x74\x00\x3b\x00\x3c\x00\x3d\x00\xff\xff\x79\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\x77\x00\x78\x00\x79\x00\x37\x00\x77\x00\x78\x00\x79\x00\x3b\x00\x3c\x00\x3d\x00\x37\x00\x36\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\x73\x00\x74\x00\x77\x00\x78\x00\x79\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x5d\x00\x5e\x00\x5f\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\x2b\x00\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x5d\x00\x5e\x00\x5f\x00\x2b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\xff\xff\x31\x00\xff\xff\x43\x00\xff\xff\xff\xff\x36\x00\x47\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x3e\x00\xff\xff\x50\x00\xff\xff\x52\x00\x43\x00\xff\xff\xff\xff\x56\x00\x47\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\x5e\x00\xff\xff\x50\x00\xff\xff\x52\x00\x2c\x00\xff\xff\xff\xff\x56\x00\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x5d\x00\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x5d\x00\x5e\x00\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\x4e\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\x47\x00\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\x4d\x00\xff\xff\xff\xff\x50\x00\xff\xff\x52\x00\xff\xff\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\xff\xff\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x5e\x00\x5f\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\x56\x00\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\x33\x00\xff\xff\x35\x00\x36\x00\xff\xff\x38\x00\x5d\x00\x5e\x00\x3b\x00\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\x5e\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x53\x00\x76\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x53\x00\x76\x00\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\x76\x00\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\x73\x00\x74\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x79\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x3b\x00\x3c\x00\x3d\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x3b\x00\x3c\x00\x3d\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x31\x00\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x38\x00\xff\xff\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x88\x00\x4c\x00\x4d\x00\xa2\x01\x7b\x03\x5e\x03\x12\x03\x13\x03\x11\x03\x12\x03\x13\x03\x60\x03\x3d\xfe\xe6\x02\x25\x02\x8d\x01\x72\x03\xaa\x00\xcb\x01\x35\x03\x25\x03\x1a\x02\x7a\x03\x4e\x00\x69\x03\x4f\x00\x26\x02\x50\x00\x51\x00\x52\x00\xcc\x01\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xd4\x02\x16\x03\xf8\x00\x7b\x02\x82\x02\xef\x00\x5f\x00\x84\x01\xc7\x00\xb9\x00\x60\x00\xc8\x00\xf7\x01\xbc\x00\x3d\x01\x4c\x00\x4d\x00\x75\x01\x36\x03\x7b\x03\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9c\x00\x25\x02\x4f\x03\xba\x00\x83\x02\xcb\x01\x76\x01\xbd\x00\xe2\x01\xf9\x00\x4e\x00\x71\x03\x4f\x00\x26\x02\x50\x00\x51\x00\x52\x00\xcc\x01\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x14\x03\x97\x01\x86\x00\x14\x03\x14\x03\x84\x00\x5f\x00\x86\x00\x73\x03\x84\x00\x60\x00\x86\x00\x86\x00\xd6\x00\x4b\x00\x4c\x00\x4d\x00\x68\x00\x69\x00\x6a\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xf0\x00\x4b\x00\xc8\x01\x63\x00\xc9\x01\x2a\x00\xb6\x00\x84\x00\x98\x01\x86\x00\x4e\x00\x86\x00\x4f\x00\xc9\x00\x50\x00\x51\x00\x52\x00\xbe\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xaa\x00\xcb\x01\x06\x02\x4f\x03\xaa\x00\x84\x00\x5f\x00\x86\x00\x6a\x03\x84\x00\x60\x00\x86\x00\x55\x03\xcc\x01\x07\x02\xdd\x01\xbd\x00\x68\x00\x69\x00\x6a\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9c\x00\x39\x03\xab\x00\xfb\x02\xac\x00\xc4\x00\x25\x02\x3b\x03\x84\x00\x98\x01\x86\x00\xad\x00\x5d\x00\x5e\x00\xd7\x00\xe1\x02\xb7\x00\xd3\x02\x26\x02\xe0\x02\x5f\x00\x25\x02\x9d\x01\xae\x00\xc5\x00\x56\x03\xde\x01\x0a\x03\x3c\xfe\xf7\x01\x6d\x03\x0b\x03\xf6\x01\x26\x02\xaf\x00\x62\x00\x63\x00\x64\x00\xb0\x00\x66\x00\x67\x00\x3c\xfe\xd8\x00\xb9\x00\xf7\x01\xd9\x00\x3c\xfe\x68\x00\x69\x00\x6a\x00\xcb\x01\xb5\x00\xda\x00\x5d\x00\x5e\x00\x9e\x01\xbe\x00\xd4\x02\x6e\x03\xe1\x02\x3c\xfe\x5f\x00\xcc\x01\x60\x02\xba\x00\x84\x00\x84\x00\xd7\x00\x86\x00\xf7\x01\xf0\x00\x4b\x00\xb6\x00\xd5\x00\xa1\x00\xdb\x00\x62\x00\x63\x00\x64\x00\xdc\x00\x66\x00\x67\x00\x54\x03\x41\x03\x9f\x01\xd6\x00\xa0\x01\xa2\x00\xae\x00\xb1\x00\x6a\x00\xc6\x00\xa3\x00\xa1\x01\x5d\x00\x5e\x00\x96\x00\x84\x00\xd7\x00\x86\x00\xf9\x01\x19\x03\x5f\x00\xec\x02\xe8\x02\xa2\x01\xa4\x00\x1a\x03\x84\x00\xd7\x00\x86\x00\x42\x03\x84\x00\xd7\x00\x86\x00\xf7\x01\xa3\x01\x62\x00\x63\x00\x64\x00\xa4\x01\x66\x00\x67\x00\x84\x00\xd7\x00\x97\x00\xc3\x00\x98\x00\xc4\x00\xf0\x00\x4b\x00\xdd\x00\x1b\x03\x6c\x00\x99\x00\x5d\x00\x5e\x00\x86\x02\x1d\x03\xb7\x00\xfa\x01\x84\x00\x89\x02\x5f\x00\x28\x03\x6d\x00\x0c\x02\xc5\x00\x84\x00\x98\x01\x86\x00\xf0\x00\x4b\x00\xc1\x02\x80\x02\x6a\x00\xa1\x00\x9a\x00\x62\x00\x63\x00\x64\x00\x9b\x00\x66\x00\x67\x00\x84\x00\xd7\x00\xab\x00\xcb\x01\xac\x00\xa2\x00\xd8\x00\xb9\x00\x9c\x00\xd9\x00\xa3\x00\xad\x00\x5d\x00\x5e\x00\x1c\x03\xcc\x01\xda\x00\x5d\x00\x5e\x00\x67\x02\x5f\x00\x60\x02\x98\x02\xae\x00\xa4\x00\x5f\x00\xda\x01\xdb\x01\xba\x00\x99\x02\x84\x00\xd7\x00\x86\x00\x8c\x02\xaf\x00\x62\x00\x63\x00\xd0\x01\x9a\x02\xdb\x00\x62\x00\x63\x00\xd0\x01\x9f\x01\xa8\x02\xa0\x01\x0d\x02\x8c\x00\x6a\x00\x9c\x00\xc6\x00\x84\x01\xa1\x01\x5d\x00\x5e\x00\x97\x01\xa1\x00\xb4\x02\x84\x01\x68\x02\x84\x00\x5f\x00\x86\x00\xa8\xfe\xa2\x01\xbc\x00\xa8\xfe\xd6\x00\xec\x01\xa2\x00\x6e\x03\x32\x00\x33\x00\xd7\x01\xa3\x00\xa3\x01\x62\x00\x63\x00\xd0\x01\x90\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x25\x02\xbd\x00\x16\x02\xa4\x00\x87\x02\x6a\x00\xa8\xfe\xda\x02\xe1\x01\x84\x00\xdd\x00\x86\x00\x26\x02\xc0\x00\xb9\x00\x37\x03\xb8\x00\xb9\x00\x38\x03\x46\x02\x32\x00\x33\x00\x91\x02\x8d\x02\x19\x02\x48\x02\x49\x02\x4a\x02\x1b\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x1e\x02\xba\x00\xf0\x00\x4b\x00\xba\x00\x4b\x02\xa9\x00\x4f\x00\xaa\x00\x50\x00\x4c\x02\x4d\x02\x9c\x00\x53\x00\x4e\x02\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xe0\x01\xe1\x01\x84\x00\x98\x01\x86\x00\x42\x02\x5f\x00\x20\x02\x70\x01\xbe\x00\x4f\x02\x06\x00\x71\x01\x07\x00\xe2\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x2f\x02\x39\x00\x84\x00\xd7\x00\x86\x00\x89\x01\x18\x00\x19\x00\xa8\x01\x3a\x00\x92\x00\x63\x00\xe9\x01\xc1\x00\xe5\xff\x06\x00\xbb\x00\x07\x00\x86\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x84\x01\x39\x00\xe2\x01\x84\x01\x35\x02\xc6\x01\x18\x00\x19\x00\x43\x02\x3a\x00\x68\x00\xc3\x01\x6a\x00\x46\x02\x32\x00\x33\x00\x44\x02\x47\x02\x60\x02\x48\x02\x49\x02\x4a\x02\x3f\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x92\x01\x1a\x02\x95\x00\x6a\x00\x83\x01\x4b\x02\x84\x01\x4f\x00\x40\x01\x50\x00\x4c\x02\x4d\x02\xd6\x00\x53\x00\x4e\x02\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x0d\x01\x70\x03\x8c\x00\x6a\x00\x89\x01\x84\x01\x5f\x00\x86\x01\x84\x01\x99\x01\x4f\x02\xa8\x01\xc6\x01\x97\x01\x82\x01\xea\x02\x23\x02\xcf\x00\xeb\x02\x06\x02\x88\x01\xaa\x00\xc8\x01\x63\x00\xc9\x01\xd6\x00\x8a\x01\x0e\x01\x55\x00\x98\x01\x0f\x01\x07\x02\x10\x01\x84\x01\x11\x01\x5c\x00\x5d\x00\x5e\x00\x84\x01\x9a\x01\x84\x01\x84\x01\xc0\x00\xb9\x00\x5f\x00\x06\x00\x9b\x01\x07\x00\x12\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xba\x00\x39\x00\x84\x00\xd7\x00\x86\x00\x68\x01\x18\x00\x19\x00\xa7\x01\x3a\x00\x68\x00\xc3\x01\x6a\x00\x9c\x00\xa9\x01\xcf\x01\x62\x00\x63\x00\xd0\x01\x06\x00\xbc\x01\x07\x00\xc5\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0d\x01\x14\x01\x84\x00\x98\x01\x86\x00\xc7\x01\x18\x00\x19\x00\x84\x00\xd7\x00\x68\x00\x15\x01\x6a\x00\xf6\x01\x9c\x00\x7d\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x30\x03\xd4\x01\x75\x02\x31\x03\xf7\x01\x76\x02\x0e\x01\x55\x00\xc1\x00\x0f\x01\xd5\x01\x10\x01\x9c\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x0d\x01\x20\x03\x21\x03\x9f\x00\x04\x03\x22\x03\x5f\x00\x2b\x03\x2c\x03\xdd\x02\x12\x01\xae\x00\xde\x02\x2e\x03\xa4\x00\xae\x00\x2b\x02\xce\x00\xcf\x00\x2c\x02\xd1\x00\x9c\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\xe7\x00\x0e\x01\x55\x00\xed\x00\x0f\x01\x69\x01\x10\x01\xfa\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x7e\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x5f\x00\x06\x00\x04\x01\x07\x00\x12\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0a\x01\x14\x01\x84\x00\xd7\x00\x2b\x01\x6b\x01\x18\x00\x19\x00\x87\x00\x05\x00\x68\x00\x15\x01\x6a\x00\x2d\x02\x6a\x00\x05\x00\x7f\x02\x80\x02\x6a\x00\x06\x00\x7d\x03\x07\x00\x2a\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0d\x01\x14\x01\x38\x02\x62\x00\x63\x00\xd0\x01\x18\x00\x19\x00\xae\x00\x7e\x03\x68\x00\x15\x01\x6a\x00\x2b\x02\xce\x00\xcf\x00\x2c\x02\xd1\x00\x2a\x00\xd1\x01\x62\x00\x63\x00\x64\x00\xb5\x02\xd2\x01\x67\x00\x7f\x03\x0e\x01\x55\x00\x75\x03\x0f\x01\x76\x03\x10\x01\x77\x03\x11\x01\x5c\x00\x5d\x00\x5e\x00\x38\x03\xa6\x00\xa7\x00\xbe\x01\x69\x03\x4f\x00\x5f\x00\x50\x00\xbf\x01\xc0\x01\x12\x01\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5a\x03\x20\x01\x21\x01\x22\x01\x23\x01\x2a\x00\x5f\x00\x65\x01\x13\x01\xaa\x00\xc2\x01\xf0\x00\x4b\x00\x2d\x02\x6a\x00\xf9\x02\x62\x00\x63\x00\xd0\x01\x66\x01\x3d\x03\x3e\x03\x06\x00\x86\x00\x07\x00\x6c\x03\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x06\x00\x14\x01\x07\x00\x58\x03\x00\x01\x09\x00\x18\x00\x19\x00\xfe\x02\xff\x02\x68\x00\x15\x01\x6a\x00\x97\x00\x86\x00\x98\x00\x00\x03\x01\x03\xee\x01\xfa\x01\x19\x03\x98\x00\x99\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x5d\x03\x99\x00\x5d\x00\x5e\x00\x5f\x00\x5e\x03\x68\x00\xc3\x01\x6a\x00\xbe\x01\x5f\x00\x4f\x00\x60\x03\x50\x00\xbf\x01\xc0\x01\x63\x03\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x17\x02\xfa\x01\x8f\x02\xa2\x01\xf0\x00\x4b\x00\x5f\x00\x26\x02\xa6\x00\xa7\x00\xc2\x01\x49\x03\x8c\x00\x6a\x00\xe5\x01\x62\x00\x63\x00\xd0\x01\xbe\x01\x64\x03\x4f\x00\x65\x03\x50\x00\xbf\x01\xc0\x01\x3d\x00\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x06\x00\x40\x03\x07\x00\x3f\x03\x02\x01\x09\x00\x5f\x00\x9c\x00\x43\x03\x9f\x01\xc2\x01\xa0\x01\x49\x03\x9c\x00\x86\x00\xac\x00\xf0\x00\x4b\x00\xa1\x01\x5d\x00\x5e\x00\x21\x02\xad\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x5f\x00\x1e\x01\x1f\x01\xa2\x01\x5f\x00\x9c\x00\x4f\x03\xae\x00\x86\x00\x68\x00\xc3\x01\x6a\x00\xbe\x01\x51\x03\x4f\x00\x53\x03\x50\x00\xbf\x01\xc0\x01\x86\x01\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x30\x02\x92\x01\xcf\x00\x93\x01\xd1\x00\x9d\x02\x5f\x00\x92\x00\x63\x00\x93\x00\xc2\x01\x94\x00\x67\x00\x24\x01\x25\x01\x68\x00\xc3\x01\x6a\x00\xbe\x01\xe3\x02\x4f\x00\x86\x00\x50\x00\xbf\x01\xc0\x01\xf0\x02\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x9c\x00\xae\x00\xfb\x02\xfc\x02\x6a\x00\xf1\x02\x5f\x00\x4a\x03\x8c\x00\x6a\x00\xc2\x01\xa0\x01\xd1\x01\x62\x00\x63\x00\xd0\x01\x4c\x03\xf4\x02\xa1\x01\x5d\x00\x5e\x00\x36\x02\xf5\x02\x95\x01\x6a\x00\xf0\x00\x4b\x00\x5f\x00\x26\x01\x27\x01\xa2\x01\xf9\x02\x62\x00\x63\x00\xd0\x01\xf6\x02\x68\x00\xc3\x01\x6a\x00\xbe\x01\xf7\x02\x4f\x00\x0a\x03\x50\x00\xbf\x01\xc0\x01\xee\x01\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xbd\x01\x06\x02\x18\x03\xaa\x00\xe4\x00\xe5\x00\x5f\x00\x0d\x03\xd3\x01\x6a\x00\xc2\x01\xe6\x00\xe7\x00\x07\x02\x0e\x03\x68\x00\xc3\x01\x6a\x00\xbe\x01\x0f\x03\x4f\x00\x10\x03\x50\x00\xbf\x01\xc0\x01\x17\x03\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x9c\x00\x6f\x03\x32\x00\x33\x00\xf0\x00\x4b\x00\x5f\x00\xa1\x00\x18\x01\x19\x01\xc2\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xa1\x00\x97\x00\x3d\x00\x98\x00\xa2\x00\x4b\x03\x8c\x00\x6a\x00\x2b\x03\xa3\x00\x99\x00\x5d\x00\x5e\x00\xa2\x00\x45\x03\x32\x00\x33\x00\x1f\x03\xa3\x00\x5f\x00\x68\x00\xc3\x01\x6a\x00\xa4\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x1e\x01\x1f\x01\x86\x00\xa4\x00\x23\x03\xc8\x01\x63\x00\xc9\x01\x26\x03\x84\x00\xd7\x00\x86\x00\x10\x03\x32\x00\x33\x00\x24\x01\x25\x01\x77\x02\xa6\x00\xa7\x00\x78\x02\x79\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xe8\x01\x27\x03\x68\x00\xc3\x01\x6a\x00\xf1\x02\x8c\x00\x6a\x00\x26\x01\x27\x01\x8f\x00\x62\x00\x63\x00\xd0\x01\x06\x00\x7c\x02\x07\x00\x7d\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x9c\x00\x39\x00\xf2\x02\x8c\x00\x6a\x00\x63\x02\x18\x00\x19\x00\x3e\xfe\x3a\x00\x06\x00\xbc\x01\x07\x00\x8c\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x92\x02\x39\x00\x68\x00\x91\x00\x6a\x00\x86\x01\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x2a\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x9c\x02\x39\x00\x95\x02\x32\x00\x33\x00\xa1\x00\x18\x00\x19\x00\x9d\x02\x3a\x00\xa5\x02\xa7\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xee\x01\xa2\x00\xca\x00\xb3\x02\xa2\x01\xb4\x02\xa3\x00\xbc\x02\xbd\x02\x9e\x02\xce\x00\xcf\x00\x96\x02\x32\x00\x33\x00\xe5\x01\x62\x00\x63\x00\xd0\x01\xbf\x02\xa4\x00\xc0\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x2a\x02\xce\x00\xcf\x00\x05\x03\xa6\x00\xa7\x00\xcf\x01\x62\x00\x63\x00\xd0\x01\x86\x00\xd1\x02\x97\x02\x32\x00\x33\x00\x66\x01\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x86\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xcb\x00\xd6\x02\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd7\x02\xd2\x00\x62\x00\x63\x00\x64\x00\xd3\x00\x66\x00\x67\x00\x06\x00\x9c\x00\x07\x00\xda\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x9c\x00\x39\x00\x26\x02\xa6\x00\xa7\x00\xdc\x02\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\xdf\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xdf\x01\x39\x00\x23\x03\xa6\x00\xa7\x00\xe0\x01\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\xe5\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xec\x01\x39\x00\x41\x02\x32\x00\x33\x00\xe4\x01\x18\x00\x19\x00\xee\x01\x3a\x00\xfb\x01\xfc\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x86\x00\x12\x02\xe0\x00\x26\x02\xa6\x00\xa7\x00\xa2\x02\xa6\x00\xa7\x00\x2a\x02\xce\x00\xcf\x00\x52\x02\x32\x00\x33\x00\xcf\x01\x62\x00\x63\x00\xd0\x01\xa3\x02\xa6\x00\xa7\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x7d\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x26\x02\xa6\x00\xa7\x00\xb8\x02\x8c\x00\x6a\x00\x76\x01\x32\x00\x33\x00\xbd\x02\x8c\x00\x6a\x00\xc2\x02\x8c\x00\x6a\x00\xee\x01\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xe1\x00\x19\x02\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x3d\x00\xd2\x00\x62\x00\x63\x00\x64\x00\xe2\x00\x66\x00\x67\x00\x06\x00\x9c\x00\x07\x00\x20\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xee\x01\x39\x00\xc3\x02\x8c\x00\x6a\x00\x28\x02\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x29\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x78\x01\x39\x00\xc4\x02\x8c\x00\x6a\x00\xee\x01\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x34\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x86\x00\x39\x00\xf1\x00\x32\x00\x33\x00\xee\x01\x18\x00\x19\x00\x3a\x02\x3a\x00\x3b\x02\x3c\x02\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x40\x02\x92\x01\xcf\x00\x93\x01\xd1\x00\x9d\x02\x3d\x02\x92\x00\x63\x00\xe9\x01\x3e\x02\x2a\x00\x31\x00\x32\x00\x33\x00\xcf\x01\x62\x00\x63\x00\xd0\x01\xc8\x02\x8c\x00\x6a\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x7d\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\xc9\x02\x8c\x00\x6a\x00\xbc\x01\x54\x02\x06\x00\x46\x02\x07\x00\x57\x02\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x55\x02\xea\x00\x56\x02\x79\x01\x95\x01\x6a\x00\x18\x00\x19\x00\xcd\x02\x8c\x00\x6a\x00\x58\x02\x59\x02\x06\x00\x9c\x00\x07\x00\x86\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x64\x02\x39\x00\xd8\x02\xa6\x00\xa7\x00\x66\x02\x18\x00\x19\x00\x06\x00\x3a\x00\x07\x00\x1b\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x1a\x01\x39\x00\x85\x02\x4a\x02\x1c\x01\x1d\x01\x18\x00\x19\x00\x69\x02\x3a\x00\x06\x02\x6b\x01\xaa\x00\x5d\x01\x5e\x01\x4b\x02\x68\x01\x4f\x00\x86\x00\x50\x00\x4c\x02\x4d\x02\x07\x02\x53\x00\x4e\x02\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xa5\x00\xa6\x00\xa7\x00\x74\x01\xd8\x00\xb9\x00\x5f\x00\xd9\x00\x78\x01\x7c\x01\x4f\x02\xe6\x01\xa6\x00\xa7\x00\xda\x00\x5d\x00\x5e\x00\x73\x01\xe7\x01\xa6\x00\xa7\x00\x7e\x01\x86\x00\x5f\x00\x3d\x00\x88\x01\xba\x00\x3d\x00\x3d\xfe\x06\x00\x6c\x00\x07\x00\x86\x01\xf4\x00\x09\x00\x0a\x00\x49\x01\xf7\x01\x62\x00\x63\x00\xd0\x01\x3d\xfe\x6d\x00\xe5\xff\x86\x01\x06\x00\x3d\xfe\x07\x00\x3d\x00\xf4\x00\x09\x00\x03\x01\xa5\x02\x9e\x01\x18\x00\x19\x00\x8e\x01\xce\x00\xcf\x00\x3d\x00\x3d\xfe\xaa\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x84\x00\xd7\x00\x86\x00\xc5\x01\x18\x00\x19\x00\x3f\x01\xcd\x01\x68\x00\xc3\x01\x6a\x00\x6e\x00\x6f\x00\x3d\x00\x70\x00\xcf\x01\x71\x00\x2a\x00\x86\x00\x72\x00\xda\x01\xff\xff\x73\x00\x8a\x00\x74\x00\x75\x00\x76\x00\xdd\x00\xa5\x00\xa6\x00\xa7\x00\x77\x00\x78\x00\x8b\x00\x79\x00\x88\x02\x86\x00\x7a\x00\x7b\x00\x8e\x00\x7c\x00\x7d\x00\x86\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\xe9\x00\x68\x00\x90\x01\x6a\x00\x3d\x00\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x1b\x00\x0e\x02\x8c\x00\x6a\x00\x3f\xfe\xfb\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xea\x00\xed\x00\x23\x00\x26\x02\xa6\x00\xa7\x00\x06\x00\xf3\x00\x07\x00\xf1\x00\xf4\x00\x09\x00\x61\x02\x24\x00\xf4\x00\xcb\x00\xf8\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xfc\x00\xd2\x00\x62\x00\x63\x00\xd0\x01\xfd\x00\x3c\x00\x3d\x00\x18\x00\x19\x00\x25\x00\x3e\x00\x6f\x00\x3f\x00\x70\x00\x40\x00\x71\x00\x3d\xfe\x41\x00\x72\x00\x42\x00\x43\x00\x73\x00\xff\xff\x74\x00\x75\x00\x76\x00\x44\x00\x45\x00\x46\x00\x3d\xfe\x77\x00\x78\x00\xfe\x00\x79\x00\x3d\xfe\x47\x00\x7a\x00\x7b\x00\x26\x00\x7c\x00\x7d\x00\x48\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x49\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x51\x02\x86\x00\x52\x02\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x34\x02\x8c\x00\x6a\x00\xff\x00\x00\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x06\x01\x6f\x00\x23\x00\xff\xff\x17\x01\x06\x00\xa1\x00\x07\x00\x1a\x01\xf4\x00\x09\x00\x0a\x00\x4a\x01\x24\x00\x75\x00\x6f\x01\x8c\x00\x6a\x00\x1b\x01\xa2\x00\x80\x01\x8c\x00\x6a\x00\x79\x00\xa3\x00\x81\x01\x8c\x00\x6a\x00\x1c\x01\x7c\x00\x18\x00\x19\x00\x7e\x00\x25\x00\x80\x00\xd7\xff\x1d\x01\xd7\xff\xa4\x00\xd7\xff\xd7\xff\x00\x00\xd7\xff\x00\x00\x00\x00\xd7\xff\x86\x00\xd7\xff\xd7\xff\xd7\xff\x8b\x01\xa6\x00\xa7\x00\xd7\xff\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\x26\x00\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xd7\xff\xd7\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\xa5\x00\xa6\x00\xa7\x00\x00\x00\xae\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\xd1\x01\x62\x00\x63\x00\x64\x00\x00\x00\xd2\x01\x67\x00\x3e\x02\x00\x00\x4f\x00\x24\x00\x50\x00\xbf\x01\xc0\x01\x00\x00\x53\x00\xc1\x01\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x8b\x00\x8c\x00\x6a\x00\x25\x00\x00\x00\x6f\x00\x5f\x00\x70\x00\x00\x00\x71\x00\xc2\x01\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\xa5\x00\xa6\x00\xa7\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\xd3\x01\x6a\x00\x7a\x00\x7b\x00\x26\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x85\x00\x86\x00\x52\x02\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\xb4\x00\x8c\x00\x6a\x00\x00\x00\x59\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x68\x00\xc3\x01\x6a\x00\x8d\x01\x47\x03\xaa\x00\x8d\x01\x09\x03\xaa\x00\x24\x00\x5a\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x8d\x01\xa2\x02\xaa\x00\x8d\x01\xa8\x02\xaa\x00\x00\x00\x00\x00\x92\x01\xcf\x00\x3d\x00\x00\x00\x00\x00\x25\x00\x92\x00\x63\x00\xe9\x01\x70\x00\x01\x02\x71\x00\xaa\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x02\x02\x8d\x01\xce\x01\xaa\x00\x77\x00\x78\x00\x68\x00\x5b\x02\x6a\x00\x00\x00\x7a\x00\x7b\x00\x26\x00\x8a\x02\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x85\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x95\x01\x6a\x00\x00\x00\x3c\xfe\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x38\x01\x3c\xfe\x39\x01\x00\x00\x3a\x01\x3b\x01\x3c\xfe\x00\x00\x3c\x01\x3d\x01\x24\x00\x00\x00\xe1\x00\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x3c\xfe\xd2\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x25\x00\x8d\x01\xeb\x01\xaa\x00\x70\x00\x65\x01\x71\x00\xaa\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x66\x01\x28\x01\x29\x01\x2a\x01\x77\x00\x78\x00\xa9\x00\xce\x01\xaa\x00\x00\x00\x7a\x00\x7b\x00\x26\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x85\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x28\x01\x29\x01\x2a\x01\x3c\xfe\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x3c\xfe\xae\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x2b\x02\xce\x00\xcf\x00\x24\x00\x00\x00\x00\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x06\x00\x3c\xfe\x07\x00\x00\x00\xf4\x00\x09\x00\x46\x01\x3c\x00\x3d\x00\x86\x00\x00\x00\x25\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x42\x00\x43\x00\x8e\x00\x00\x00\x18\x00\x19\x00\x00\x00\x44\x00\x45\x00\x46\x00\x00\x00\x00\x00\x8f\x00\x62\x00\x63\x00\x64\x00\x47\x00\x90\x00\x67\x00\x26\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x01\x02\x00\x00\xaa\x00\x06\x03\x6a\x00\x49\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x02\x02\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xbb\x02\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x91\x00\x6a\x00\x00\x00\x24\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x25\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\xa1\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa2\x00\x65\x01\x00\x00\xaa\x00\x00\x00\xa3\x00\x84\x00\x9f\x00\x86\x00\x26\x00\x3c\xfe\x00\x00\x06\x00\x66\x01\x07\x00\x00\x00\xf4\x00\x09\x00\x47\x01\xa4\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x16\x02\x00\x00\x00\x00\x23\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x24\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x25\x00\xb3\x00\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\xa2\x00\xaa\x00\x00\x00\x25\x02\x00\x00\xa3\x00\xa1\x02\x00\x00\x00\x00\x26\x00\x3d\xfe\x02\x02\x92\x00\x63\x00\x93\x00\x26\x02\x94\x00\x67\x00\xf7\x01\xa4\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xaf\x01\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\xa1\x00\x06\x00\x00\x00\x07\x00\xa1\x00\x06\x01\x09\x00\xa1\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x95\x00\x6a\x00\x00\x00\xa2\x00\xa3\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa3\x00\x18\x00\x19\x00\x25\x00\x06\x00\x00\x00\x07\x00\xa4\x00\x08\x01\x09\x00\x3d\xfe\xa4\x00\x00\x00\x84\x00\xa4\x00\x86\x00\x00\x00\x84\x00\xd7\x00\x86\x00\x84\x00\xd7\x00\x86\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x18\x00\x19\x00\x00\x00\x26\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2f\x02\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x75\x02\x00\x00\xd6\x00\x76\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x4b\x01\x1b\x00\x24\x00\x75\x02\x00\x00\x00\x00\x76\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x18\x00\x19\x00\x77\x02\x66\x03\xa1\x00\x25\x00\x00\x00\x06\x00\x00\x00\x07\x00\x24\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4d\x01\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\x34\x03\x00\x00\x25\x00\x00\x00\x18\x00\x19\x00\x26\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xd7\x00\x86\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x51\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x11\x02\x00\x00\x00\x00\x23\x00\x00\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x22\x02\x00\x00\x92\x00\x63\x00\x93\x00\x24\x00\x94\x00\x67\x00\x06\x00\x1b\x00\x07\x00\x75\x02\x0b\x01\x09\x00\x76\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x18\x00\x19\x00\x24\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x48\x01\x00\x00\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3c\xfe\x00\x00\x77\x02\x00\x00\x26\x00\x25\x00\x95\x01\x6a\x00\x00\x00\x65\x01\x00\x00\xaa\x00\x18\x00\x19\x00\x3c\xfe\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x66\x01\x86\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x52\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x4b\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x18\x00\x19\x00\xa1\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x06\x00\x00\x00\x07\x00\x24\x00\xf4\x00\x09\x00\x03\x01\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x86\x00\x00\x00\x23\x00\x25\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x06\x00\x24\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4e\x01\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x77\x02\x00\x00\x26\x00\x25\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\x26\x00\x9e\x02\xce\x00\xcf\x00\x9f\x02\xd1\x00\x00\x00\xe5\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xcb\x01\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\xe6\x02\x00\x00\x00\x00\xcc\x01\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x4c\x01\x1b\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x9c\x00\x00\x00\x23\x00\x18\x00\x19\x00\x00\x00\x00\x00\xa1\x00\x25\x00\x00\x00\x06\x00\x00\x00\x07\x00\x24\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x4f\x01\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\x00\x00\x00\x00\x25\x00\x00\x00\x18\x00\x19\x00\x26\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x50\x01\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x22\x02\x00\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x24\x00\x1b\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x63\x02\x00\x00\x06\x00\x25\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x2a\x01\x00\x00\x24\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x18\x00\x19\x00\x00\x00\x25\x00\x00\x00\x26\x00\x95\x01\x6a\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x59\x01\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x0c\x01\x09\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x26\x00\x18\x00\x19\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x29\x02\x00\x00\x92\x00\x63\x00\xe9\x01\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x95\x01\x6a\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x25\x00\xd1\x02\x00\x00\x00\x00\x26\x00\x8e\x01\xce\x00\xcf\x00\x8f\x01\xd1\x00\x24\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x90\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x07\x03\x00\x00\x92\x00\x63\x00\xe9\x01\x0a\x01\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x95\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x26\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x66\x01\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x6d\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x24\x00\x6e\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x3d\xfe\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x86\x00\x00\x00\x25\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x06\x02\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x84\x00\x85\x00\x86\x00\x87\x00\x26\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x37\x01\x00\x00\x01\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x02\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x85\x00\x86\x00\x01\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x02\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x85\x00\x86\x00\x01\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x02\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xa7\x01\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xa7\x01\x86\x00\xcb\x01\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\xcc\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\x65\x01\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x66\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xa7\x01\x86\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xb3\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xb4\x00\x86\x00\x06\x02\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x07\x02\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xdf\x00\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\xe0\x00\x86\x00\x65\x01\x6f\x00\xaa\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x66\x01\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x00\x00\x6f\x00\x00\x00\x70\x00\xcc\x01\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x6c\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x9f\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x6d\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x6d\x00\x72\x00\x00\x00\xcb\x01\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\xcc\x01\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x01\x02\xfb\x02\xaa\x00\x00\x00\x00\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x00\x00\xa1\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\xa2\x00\x71\x00\x00\x00\x00\x00\x72\x00\xa3\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x84\x00\x7d\x00\x86\x00\x00\x00\x9e\x00\x3d\xfe\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x9f\x00\x86\x00\x3d\xfe\x00\x00\x00\x00\xb0\x01\xb1\x01\x3d\xfe\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x84\x00\x00\x00\x86\x00\xb5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x92\x01\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\x5c\x02\xa6\x00\xa7\x00\x5d\x02\x5e\x02\x00\x00\x00\x00\x00\x00\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x29\x02\x5f\x00\x92\x00\x63\x00\x93\x00\xb5\x01\x94\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\xc7\x02\x6a\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\x5c\x02\xa6\x00\xa7\x00\x5d\x02\x5e\x02\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x95\x01\x6a\x00\xb5\x01\x92\x01\xcf\x00\x93\x01\xd1\x00\x94\x01\x00\x00\x92\x00\x63\x00\xe9\x01\x00\x00\x68\x00\xcc\x02\x6a\x00\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\x5c\x02\xa6\x00\xa7\x00\x5d\x02\x5e\x02\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x92\x01\xcf\x00\x93\x01\xd1\x00\x94\x01\x5f\x00\x92\x00\x63\x00\x93\x00\xb5\x01\x94\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x01\x6a\x00\x00\x00\x68\x00\x5f\x02\x6a\x00\x00\x00\x00\x00\x00\x00\xb6\x01\xb7\x01\xb8\x01\xb9\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\xb5\x01\x95\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\xba\x01\x6a\x00\xb6\x01\xb7\x01\xb8\x01\x00\x00\x00\x00\x00\x00\xb0\x01\xb1\x01\x00\x00\x53\x00\xb2\x01\x55\x00\x56\x00\x57\x00\xb3\x01\xb4\x01\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\xd8\x00\xb9\x00\x00\x00\xd9\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\xb5\x01\xda\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\xab\x00\xba\x00\xac\x00\x00\x00\x68\x00\xba\x01\x6a\x00\xce\x02\x00\x00\xad\x00\x5d\x00\x5e\x00\x07\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x08\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\xfc\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x68\x00\xba\x01\x6a\x00\x00\x00\x97\x00\x00\x00\x98\x00\x00\x00\xab\x00\x00\x00\xac\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\xdd\x00\xad\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\xae\x00\x00\x00\x23\x02\xcf\x00\x00\x00\x00\x00\xfe\x01\xff\x01\xc8\x01\x63\x00\xc9\x01\xf2\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\xa6\x00\xa7\x00\x78\x02\x79\x02\x97\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x9f\x01\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x98\x00\xa1\x01\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\x5f\x00\x9c\x00\x00\x00\xa2\x01\xf3\x01\x6a\x00\x5f\x00\x00\x00\x77\x02\xa6\x00\xa7\x00\x78\x02\x79\x02\x00\x00\xd4\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\xf1\x01\x62\x00\x63\x00\xd0\x01\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x55\x00\x5f\x00\x0f\x01\x00\x00\x10\x01\x12\x01\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x06\x00\x81\x02\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x55\x01\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\xef\x01\x11\x01\x5c\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x06\x00\x12\x01\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xf0\x01\x00\x00\x1c\x02\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x54\x01\x00\x00\x0e\x01\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x31\x02\x11\x01\x5c\x00\x5d\x00\x5e\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x06\x00\x12\x01\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x32\x02\x00\x00\xd7\x01\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\xa9\x02\x55\x00\x00\x00\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\xf7\x02\xab\x02\xac\x02\xa9\x02\x55\x00\x5f\x00\x0f\x01\x00\x00\x10\x01\xad\x02\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\xaa\x02\xab\x02\xac\x02\x0e\x01\x55\x00\x5f\x00\x0f\x01\x00\x00\x10\x01\xad\x02\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x0e\x01\x55\x00\x12\x01\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\xae\x02\x6a\x00\x00\x00\x0e\x01\x55\x00\x6d\x01\x0f\x01\x00\x00\x10\x01\x00\x00\x11\x01\x5c\x00\x5d\x00\x5e\x00\x68\x00\xae\x02\x6a\x00\x00\x00\xac\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x12\x01\xad\x00\x5d\x00\x5e\x00\xae\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\xae\x00\x00\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x6e\x01\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x7e\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x00\x00\x5e\x01\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x98\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\x99\x00\x5d\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x02\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x15\x01\x6a\x00\x00\x00\x00\x00\x7f\x02\xec\x02\x6a\x00\xf9\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x62\x01\x63\x01\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xab\x01\xa2\x01\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x18\x00\x19\x00\x00\x00\x8d\x01\x13\x02\x14\x02\x6a\x00\x8e\x01\xce\x00\xcf\x00\x8f\x01\xd1\x00\x00\x00\x8f\x00\x62\x00\x63\x00\x64\x00\x00\x00\x90\x00\x67\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xab\x01\xaa\x01\x00\x00\x00\x00\xae\x00\xb9\x02\x00\x00\x18\x00\x19\x00\x2b\x02\xce\x00\xcf\x00\x00\x00\x9c\x00\x00\x00\xd1\x01\x62\x00\x63\x00\xd0\x01\x68\x00\x90\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x68\x00\xad\x01\x6a\x00\xc5\x02\x7f\x02\xed\x02\x6a\x00\x8e\x01\xce\x00\xcf\x00\xca\x02\x9f\x00\x00\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x8f\x00\x62\x00\x63\x00\xd0\x01\x00\x00\x5a\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x5a\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xc0\x02\x00\x00\x68\x00\xc6\x02\x6a\x00\x00\x00\x00\x00\x18\x00\x19\x00\x68\x00\xcb\x02\x6a\x00\xb0\x02\x00\x00\x05\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\xb0\x02\x00\x00\xb1\x02\x00\x00\x00\x00\x85\x00\x86\x00\xb2\x02\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\xc0\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x85\x00\x86\x00\xb2\x02\xc3\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x6f\x00\x00\x00\xa2\x00\x00\x00\x00\x00\xa1\x00\x79\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x75\x00\x00\x00\x7e\x00\x00\x00\x80\x00\xa2\x00\x00\x00\x00\x00\xa4\x00\x79\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x86\x00\x00\x00\x7e\x00\x00\x00\x80\x00\x3d\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x85\x00\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x85\x00\x86\x00\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\xfe\x3b\xfe\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\xa6\x01\x80\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x01\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x3d\xfe\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x3d\xfe\x77\x00\x78\x00\x00\x00\x79\x00\x3d\xfe\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x3d\xfe\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x85\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x9e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x9f\x00\x86\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x79\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x7d\x00\x00\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x79\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x80\x00\x00\x00\x82\x00\x83\x00\xa4\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x00\x00\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x86\x00\xb2\x02\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\xa7\x01\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x3b\xfe\xb4\x00\x86\x00\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x00\x00\x00\x00\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x00\x00\x3b\xfe\x00\x00\x3b\xfe\x3b\xfe\x3b\xfe\x3b\xfe\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x3b\xfe\x3b\xfe\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x81\x00\x82\x00\x83\x00\xa4\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\xa7\x01\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x85\x00\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x00\x00\x72\x00\x9f\x00\x86\x00\x73\x00\x00\x00\x74\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x70\x00\x00\x00\x71\x00\xa1\x00\x00\x00\x72\x00\x85\x00\x86\x00\x73\x00\x00\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x77\x00\x78\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x02\x86\x00\x27\x03\x6e\x02\x6f\x02\x70\x02\x71\x02\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x6c\x02\x73\x02\x6d\x02\x6e\x02\x6f\x02\x70\x02\x71\x02\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x31\x03\x73\x02\x00\x00\x32\x03\x6f\x02\x70\x02\x71\x02\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x73\x02\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x02\x18\x00\x19\x00\x00\x00\x67\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x02\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x72\x02\x00\x00\x2e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x72\x02\x00\x00\xd7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x18\x00\x19\x00\x00\x00\x06\x00\x00\x00\x07\x00\x9c\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xea\x00\x00\x00\x43\x03\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xea\x00\x00\x00\x44\x03\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xea\x00\x00\x00\x93\x02\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xea\x00\x00\x00\x94\x02\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\xea\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x77\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x78\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x61\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x3a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x42\x01\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x43\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x57\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x5a\x01\x00\x00\x00\x00\x5b\x01\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x7c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x7e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x51\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x02\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\xee\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x03\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x69\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x6b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x02\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x6c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x64\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x59\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x56\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x07\x00\x00\x00\xf4\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x53\x01\x02\x02\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x03\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x04\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x09\x02\xce\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x0a\x02\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x03\x0b\x02\x5f\x01\xa6\x00\xa7\x00\x60\x01\x61\x01\x02\x03\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x01\x03\xf4\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x02\x03\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\x01\xcb\x00\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\x01\xe1\x00\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\x01\x37\x02\x00\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\xf4\x01\x62\x00\x63\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyReduceArr = array (4, 463) [- (4 , happyReduce_4),- (5 , happyReduce_5),- (6 , happyReduce_6),- (7 , happyReduce_7),- (8 , happyReduce_8),- (9 , happyReduce_9),- (10 , happyReduce_10),- (11 , happyReduce_11),- (12 , happyReduce_12),- (13 , happyReduce_13),- (14 , happyReduce_14),- (15 , happyReduce_15),- (16 , happyReduce_16),- (17 , happyReduce_17),- (18 , happyReduce_18),- (19 , happyReduce_19),- (20 , happyReduce_20),- (21 , happyReduce_21),- (22 , happyReduce_22),- (23 , happyReduce_23),- (24 , happyReduce_24),- (25 , happyReduce_25),- (26 , happyReduce_26),- (27 , happyReduce_27),- (28 , happyReduce_28),- (29 , happyReduce_29),- (30 , happyReduce_30),- (31 , happyReduce_31),- (32 , happyReduce_32),- (33 , happyReduce_33),- (34 , happyReduce_34),- (35 , happyReduce_35),- (36 , happyReduce_36),- (37 , happyReduce_37),- (38 , happyReduce_38),- (39 , happyReduce_39),- (40 , happyReduce_40),- (41 , happyReduce_41),- (42 , happyReduce_42),- (43 , happyReduce_43),- (44 , happyReduce_44),- (45 , happyReduce_45),- (46 , happyReduce_46),- (47 , happyReduce_47),- (48 , happyReduce_48),- (49 , happyReduce_49),- (50 , happyReduce_50),- (51 , happyReduce_51),- (52 , happyReduce_52),- (53 , happyReduce_53),- (54 , happyReduce_54),- (55 , happyReduce_55),- (56 , happyReduce_56),- (57 , happyReduce_57),- (58 , happyReduce_58),- (59 , happyReduce_59),- (60 , happyReduce_60),- (61 , happyReduce_61),- (62 , happyReduce_62),- (63 , happyReduce_63),- (64 , happyReduce_64),- (65 , happyReduce_65),- (66 , happyReduce_66),- (67 , happyReduce_67),- (68 , happyReduce_68),- (69 , happyReduce_69),- (70 , happyReduce_70),- (71 , happyReduce_71),- (72 , happyReduce_72),- (73 , happyReduce_73),- (74 , happyReduce_74),- (75 , happyReduce_75),- (76 , happyReduce_76),- (77 , happyReduce_77),- (78 , happyReduce_78),- (79 , happyReduce_79),- (80 , happyReduce_80),- (81 , happyReduce_81),- (82 , happyReduce_82),- (83 , happyReduce_83),- (84 , happyReduce_84),- (85 , happyReduce_85),- (86 , happyReduce_86),- (87 , happyReduce_87),- (88 , happyReduce_88),- (89 , happyReduce_89),- (90 , happyReduce_90),- (91 , happyReduce_91),- (92 , happyReduce_92),- (93 , happyReduce_93),- (94 , happyReduce_94),- (95 , happyReduce_95),- (96 , happyReduce_96),- (97 , happyReduce_97),- (98 , happyReduce_98),- (99 , happyReduce_99),- (100 , happyReduce_100),- (101 , happyReduce_101),- (102 , happyReduce_102),- (103 , happyReduce_103),- (104 , happyReduce_104),- (105 , happyReduce_105),- (106 , happyReduce_106),- (107 , happyReduce_107),- (108 , happyReduce_108),- (109 , happyReduce_109),- (110 , happyReduce_110),- (111 , happyReduce_111),- (112 , happyReduce_112),- (113 , happyReduce_113),- (114 , happyReduce_114),- (115 , happyReduce_115),- (116 , happyReduce_116),- (117 , happyReduce_117),- (118 , happyReduce_118),- (119 , happyReduce_119),- (120 , happyReduce_120),- (121 , happyReduce_121),- (122 , happyReduce_122),- (123 , happyReduce_123),- (124 , happyReduce_124),- (125 , happyReduce_125),- (126 , happyReduce_126),- (127 , happyReduce_127),- (128 , happyReduce_128),- (129 , happyReduce_129),- (130 , happyReduce_130),- (131 , happyReduce_131),- (132 , happyReduce_132),- (133 , happyReduce_133),- (134 , happyReduce_134),- (135 , happyReduce_135),- (136 , happyReduce_136),- (137 , happyReduce_137),- (138 , happyReduce_138),- (139 , happyReduce_139),- (140 , happyReduce_140),- (141 , happyReduce_141),- (142 , happyReduce_142),- (143 , happyReduce_143),- (144 , happyReduce_144),- (145 , happyReduce_145),- (146 , happyReduce_146),- (147 , happyReduce_147),- (148 , happyReduce_148),- (149 , happyReduce_149),- (150 , happyReduce_150),- (151 , happyReduce_151),- (152 , happyReduce_152),- (153 , happyReduce_153),- (154 , happyReduce_154),- (155 , happyReduce_155),- (156 , happyReduce_156),- (157 , happyReduce_157),- (158 , happyReduce_158),- (159 , happyReduce_159),- (160 , happyReduce_160),- (161 , happyReduce_161),- (162 , happyReduce_162),- (163 , happyReduce_163),- (164 , happyReduce_164),- (165 , happyReduce_165),- (166 , happyReduce_166),- (167 , happyReduce_167),- (168 , happyReduce_168),- (169 , happyReduce_169),- (170 , happyReduce_170),- (171 , happyReduce_171),- (172 , happyReduce_172),- (173 , happyReduce_173),- (174 , happyReduce_174),- (175 , happyReduce_175),- (176 , happyReduce_176),- (177 , happyReduce_177),- (178 , happyReduce_178),- (179 , happyReduce_179),- (180 , happyReduce_180),- (181 , happyReduce_181),- (182 , happyReduce_182),- (183 , happyReduce_183),- (184 , happyReduce_184),- (185 , happyReduce_185),- (186 , happyReduce_186),- (187 , happyReduce_187),- (188 , happyReduce_188),- (189 , happyReduce_189),- (190 , happyReduce_190),- (191 , happyReduce_191),- (192 , happyReduce_192),- (193 , happyReduce_193),- (194 , happyReduce_194),- (195 , happyReduce_195),- (196 , happyReduce_196),- (197 , happyReduce_197),- (198 , happyReduce_198),- (199 , happyReduce_199),- (200 , happyReduce_200),- (201 , happyReduce_201),- (202 , happyReduce_202),- (203 , happyReduce_203),- (204 , happyReduce_204),- (205 , happyReduce_205),- (206 , happyReduce_206),- (207 , happyReduce_207),- (208 , happyReduce_208),- (209 , happyReduce_209),- (210 , happyReduce_210),- (211 , happyReduce_211),- (212 , happyReduce_212),- (213 , happyReduce_213),- (214 , happyReduce_214),- (215 , happyReduce_215),- (216 , happyReduce_216),- (217 , happyReduce_217),- (218 , happyReduce_218),- (219 , happyReduce_219),- (220 , happyReduce_220),- (221 , happyReduce_221),- (222 , happyReduce_222),- (223 , happyReduce_223),- (224 , happyReduce_224),- (225 , happyReduce_225),- (226 , happyReduce_226),- (227 , happyReduce_227),- (228 , happyReduce_228),- (229 , happyReduce_229),- (230 , happyReduce_230),- (231 , happyReduce_231),- (232 , happyReduce_232),- (233 , happyReduce_233),- (234 , happyReduce_234),- (235 , happyReduce_235),- (236 , happyReduce_236),- (237 , happyReduce_237),- (238 , happyReduce_238),- (239 , happyReduce_239),- (240 , happyReduce_240),- (241 , happyReduce_241),- (242 , happyReduce_242),- (243 , happyReduce_243),- (244 , happyReduce_244),- (245 , happyReduce_245),- (246 , happyReduce_246),- (247 , happyReduce_247),- (248 , happyReduce_248),- (249 , happyReduce_249),- (250 , happyReduce_250),- (251 , happyReduce_251),- (252 , happyReduce_252),- (253 , happyReduce_253),- (254 , happyReduce_254),- (255 , happyReduce_255),- (256 , happyReduce_256),- (257 , happyReduce_257),- (258 , happyReduce_258),- (259 , happyReduce_259),- (260 , happyReduce_260),- (261 , happyReduce_261),- (262 , happyReduce_262),- (263 , happyReduce_263),- (264 , happyReduce_264),- (265 , happyReduce_265),- (266 , happyReduce_266),- (267 , happyReduce_267),- (268 , happyReduce_268),- (269 , happyReduce_269),- (270 , happyReduce_270),- (271 , happyReduce_271),- (272 , happyReduce_272),- (273 , happyReduce_273),- (274 , happyReduce_274),- (275 , happyReduce_275),- (276 , happyReduce_276),- (277 , happyReduce_277),- (278 , happyReduce_278),- (279 , happyReduce_279),- (280 , happyReduce_280),- (281 , happyReduce_281),- (282 , happyReduce_282),- (283 , happyReduce_283),- (284 , happyReduce_284),- (285 , happyReduce_285),- (286 , happyReduce_286),- (287 , happyReduce_287),- (288 , happyReduce_288),- (289 , happyReduce_289),- (290 , happyReduce_290),- (291 , happyReduce_291),- (292 , happyReduce_292),- (293 , happyReduce_293),- (294 , happyReduce_294),- (295 , happyReduce_295),- (296 , happyReduce_296),- (297 , happyReduce_297),- (298 , happyReduce_298),- (299 , happyReduce_299),- (300 , happyReduce_300),- (301 , happyReduce_301),- (302 , happyReduce_302),- (303 , happyReduce_303),- (304 , happyReduce_304),- (305 , happyReduce_305),- (306 , happyReduce_306),- (307 , happyReduce_307),- (308 , happyReduce_308),- (309 , happyReduce_309),- (310 , happyReduce_310),- (311 , happyReduce_311),- (312 , happyReduce_312),- (313 , happyReduce_313),- (314 , happyReduce_314),- (315 , happyReduce_315),- (316 , happyReduce_316),- (317 , happyReduce_317),- (318 , happyReduce_318),- (319 , happyReduce_319),- (320 , happyReduce_320),- (321 , happyReduce_321),- (322 , happyReduce_322),- (323 , happyReduce_323),- (324 , happyReduce_324),- (325 , happyReduce_325),- (326 , happyReduce_326),- (327 , happyReduce_327),- (328 , happyReduce_328),- (329 , happyReduce_329),- (330 , happyReduce_330),- (331 , happyReduce_331),- (332 , happyReduce_332),- (333 , happyReduce_333),- (334 , happyReduce_334),- (335 , happyReduce_335),- (336 , happyReduce_336),- (337 , happyReduce_337),- (338 , happyReduce_338),- (339 , happyReduce_339),- (340 , happyReduce_340),- (341 , happyReduce_341),- (342 , happyReduce_342),- (343 , happyReduce_343),- (344 , happyReduce_344),- (345 , happyReduce_345),- (346 , happyReduce_346),- (347 , happyReduce_347),- (348 , happyReduce_348),- (349 , happyReduce_349),- (350 , happyReduce_350),- (351 , happyReduce_351),- (352 , happyReduce_352),- (353 , happyReduce_353),- (354 , happyReduce_354),- (355 , happyReduce_355),- (356 , happyReduce_356),- (357 , happyReduce_357),- (358 , happyReduce_358),- (359 , happyReduce_359),- (360 , happyReduce_360),- (361 , happyReduce_361),- (362 , happyReduce_362),- (363 , happyReduce_363),- (364 , happyReduce_364),- (365 , happyReduce_365),- (366 , happyReduce_366),- (367 , happyReduce_367),- (368 , happyReduce_368),- (369 , happyReduce_369),- (370 , happyReduce_370),- (371 , happyReduce_371),- (372 , happyReduce_372),- (373 , happyReduce_373),- (374 , happyReduce_374),- (375 , happyReduce_375),- (376 , happyReduce_376),- (377 , happyReduce_377),- (378 , happyReduce_378),- (379 , happyReduce_379),- (380 , happyReduce_380),- (381 , happyReduce_381),- (382 , happyReduce_382),- (383 , happyReduce_383),- (384 , happyReduce_384),- (385 , happyReduce_385),- (386 , happyReduce_386),- (387 , happyReduce_387),- (388 , happyReduce_388),- (389 , happyReduce_389),- (390 , happyReduce_390),- (391 , happyReduce_391),- (392 , happyReduce_392),- (393 , happyReduce_393),- (394 , happyReduce_394),- (395 , happyReduce_395),- (396 , happyReduce_396),- (397 , happyReduce_397),- (398 , happyReduce_398),- (399 , happyReduce_399),- (400 , happyReduce_400),- (401 , happyReduce_401),- (402 , happyReduce_402),- (403 , happyReduce_403),- (404 , happyReduce_404),- (405 , happyReduce_405),- (406 , happyReduce_406),- (407 , happyReduce_407),- (408 , happyReduce_408),- (409 , happyReduce_409),- (410 , happyReduce_410),- (411 , happyReduce_411),- (412 , happyReduce_412),- (413 , happyReduce_413),- (414 , happyReduce_414),- (415 , happyReduce_415),- (416 , happyReduce_416),- (417 , happyReduce_417),- (418 , happyReduce_418),- (419 , happyReduce_419),- (420 , happyReduce_420),- (421 , happyReduce_421),- (422 , happyReduce_422),- (423 , happyReduce_423),- (424 , happyReduce_424),- (425 , happyReduce_425),- (426 , happyReduce_426),- (427 , happyReduce_427),- (428 , happyReduce_428),- (429 , happyReduce_429),- (430 , happyReduce_430),- (431 , happyReduce_431),- (432 , happyReduce_432),- (433 , happyReduce_433),- (434 , happyReduce_434),- (435 , happyReduce_435),- (436 , happyReduce_436),- (437 , happyReduce_437),- (438 , happyReduce_438),- (439 , happyReduce_439),- (440 , happyReduce_440),- (441 , happyReduce_441),- (442 , happyReduce_442),- (443 , happyReduce_443),- (444 , happyReduce_444),- (445 , happyReduce_445),- (446 , happyReduce_446),- (447 , happyReduce_447),- (448 , happyReduce_448),- (449 , happyReduce_449),- (450 , happyReduce_450),- (451 , happyReduce_451),- (452 , happyReduce_452),- (453 , happyReduce_453),- (454 , happyReduce_454),- (455 , happyReduce_455),- (456 , happyReduce_456),- (457 , happyReduce_457),- (458 , happyReduce_458),- (459 , happyReduce_459),- (460 , happyReduce_460),- (461 , happyReduce_461),- (462 , happyReduce_462),- (463 , happyReduce_463)- ]--happy_n_terms = 102 :: Int-happy_n_nonterms = 125 :: Int--happyReduce_4 = happyMonadReduce 1# 0# happyReduction_4-happyReduction_4 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut8 happy_x_1 of { happy_var_1 ->- ( let decls = reverse happy_var_1 in- case decls of- [] -> do{ n <- getNewName; p <- getCurrentPosition; return $ CTranslUnit decls (mkNodeInfo' p (p,0) n) }- (d:ds) -> withNodeInfo d $ CTranslUnit decls)}- ) (\r -> happyReturn (happyIn7 r))--happyReduce_5 = happySpecReduce_0 1# happyReduction_5-happyReduction_5 = happyIn8- (empty- )--happyReduce_6 = happySpecReduce_2 1# happyReduction_6-happyReduction_6 happy_x_2- happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 ->- happyIn8- (happy_var_1- )}--happyReduce_7 = happySpecReduce_2 1# happyReduction_7-happyReduction_7 happy_x_2- happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 ->- case happyOut9 happy_x_2 of { happy_var_2 ->- happyIn8- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_8 = happySpecReduce_1 2# happyReduction_8-happyReduction_8 happy_x_1- = case happyOut10 happy_x_1 of { happy_var_1 ->- happyIn9- (CFDefExt happy_var_1- )}--happyReduce_9 = happySpecReduce_1 2# happyReduction_9-happyReduction_9 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 ->- happyIn9- (CDeclExt happy_var_1- )}--happyReduce_10 = happySpecReduce_2 2# happyReduction_10-happyReduction_10 happy_x_2- happy_x_1- = case happyOut9 happy_x_2 of { happy_var_2 ->- happyIn9- (happy_var_2- )}--happyReduce_11 = happyMonadReduce 5# 2# happyReduction_11-happyReduction_11 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut123 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CAsmExt happy_var_3)}}- ) (\r -> happyReturn (happyIn9 r))--happyReduce_12 = happyMonadReduce 2# 3# happyReduction_12-happyReduction_12 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut11 happy_x_1 of { happy_var_1 ->- case happyOut14 happy_x_2 of { happy_var_2 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef [] happy_var_1 [] happy_var_2))}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_13 = happyMonadReduce 3# 3# happyReduction_13-happyReduction_13 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftCAttrs happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_14 = happyMonadReduce 3# 3# happyReduction_14-happyReduction_14 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_15 = happyMonadReduce 3# 3# happyReduction_15-happyReduction_15 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_16 = happyMonadReduce 3# 3# happyReduction_16-happyReduction_16 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_17 = happyMonadReduce 3# 3# happyReduction_17-happyReduction_17 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_18 = happyMonadReduce 4# 3# happyReduction_18-happyReduction_18 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut11 happy_x_3 of { happy_var_3 ->- case happyOut14 happy_x_4 of { happy_var_4 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 [] happy_var_4))}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_19 = happyMonadReduce 3# 3# happyReduction_19-happyReduction_19 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut76 happy_x_1 of { happy_var_1 ->- case happyOut33 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CFunDef [] happy_var_1 (reverse happy_var_2) happy_var_3)}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_20 = happyMonadReduce 4# 3# happyReduction_20-happyReduction_20 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut76 happy_x_2 of { happy_var_2 ->- case happyOut33 happy_x_3 of { happy_var_3 ->- case happyOut14 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_2 $ CFunDef (liftCAttrs happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_21 = happyMonadReduce 4# 3# happyReduction_21-happyReduction_21 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- case happyOut76 happy_x_2 of { happy_var_2 ->- case happyOut33 happy_x_3 of { happy_var_3 ->- case happyOut14 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_22 = happyMonadReduce 4# 3# happyReduction_22-happyReduction_22 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut76 happy_x_2 of { happy_var_2 ->- case happyOut33 happy_x_3 of { happy_var_3 ->- case happyOut14 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_23 = happyMonadReduce 4# 3# happyReduction_23-happyReduction_23 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut76 happy_x_2 of { happy_var_2 ->- case happyOut33 happy_x_3 of { happy_var_3 ->- case happyOut14 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_24 = happyMonadReduce 4# 3# happyReduction_24-happyReduction_24 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut76 happy_x_2 of { happy_var_2 ->- case happyOut33 happy_x_3 of { happy_var_3 ->- case happyOut14 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_25 = happyMonadReduce 5# 3# happyReduction_25-happyReduction_25 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut76 happy_x_3 of { happy_var_3 ->- case happyOut33 happy_x_4 of { happy_var_4 ->- case happyOut14 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 (reverse happy_var_4) happy_var_5)}}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_26 = happyMonadReduce 1# 4# happyReduction_26-happyReduction_26 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut72 happy_x_1 of { happy_var_1 ->- ( let declr = reverseDeclr happy_var_1 in- enterScope >> doFuncParamDeclIdent declr >> return declr)}- ) (\r -> happyReturn (happyIn11 r))--happyReduce_27 = happySpecReduce_1 5# happyReduction_27-happyReduction_27 happy_x_1- = case happyOut13 happy_x_1 of { happy_var_1 ->- happyIn12- (happy_var_1- )}--happyReduce_28 = happySpecReduce_1 5# happyReduction_28-happyReduction_28 happy_x_1- = case happyOut14 happy_x_1 of { happy_var_1 ->- happyIn12- (happy_var_1- )}--happyReduce_29 = happySpecReduce_1 5# happyReduction_29-happyReduction_29 happy_x_1- = case happyOut22 happy_x_1 of { happy_var_1 ->- happyIn12- (happy_var_1- )}--happyReduce_30 = happySpecReduce_1 5# happyReduction_30-happyReduction_30 happy_x_1- = case happyOut23 happy_x_1 of { happy_var_1 ->- happyIn12- (happy_var_1- )}--happyReduce_31 = happySpecReduce_1 5# happyReduction_31-happyReduction_31 happy_x_1- = case happyOut24 happy_x_1 of { happy_var_1 ->- happyIn12- (happy_var_1- )}--happyReduce_32 = happySpecReduce_1 5# happyReduction_32-happyReduction_32 happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 ->- happyIn12- (happy_var_1- )}--happyReduce_33 = happyMonadReduce 1# 5# happyReduction_33-happyReduction_33 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut26 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 (CAsm happy_var_1))}- ) (\r -> happyReturn (happyIn12 r))--happyReduce_34 = happyMonadReduce 4# 6# happyReduction_34-happyReduction_34 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut125 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- case happyOut12 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CLabel happy_var_1 happy_var_4 happy_var_3)}}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_35 = happyMonadReduce 4# 6# happyReduction_35-happyReduction_35 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_2 of { happy_var_2 ->- case happyOut12 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CCase happy_var_2 happy_var_4)}}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_36 = happyMonadReduce 3# 6# happyReduction_36-happyReduction_36 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut12 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CDefault happy_var_3)}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_37 = happyMonadReduce 6# 6# happyReduction_37-happyReduction_37 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_2 of { happy_var_2 ->- case happyOut121 happy_x_4 of { happy_var_4 ->- case happyOut12 happy_x_6 of { happy_var_6 ->- ( withNodeInfo happy_var_1 $ CCases happy_var_2 happy_var_4 happy_var_6)}}}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_38 = happyMonadReduce 5# 7# happyReduction_38-happyReduction_38 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut17 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CCompound [] (reverse happy_var_3))}}- ) (\r -> happyReturn (happyIn14 r))--happyReduce_39 = happyMonadReduce 6# 7# happyReduction_39-happyReduction_39 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut21 happy_x_3 of { happy_var_3 ->- case happyOut17 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CCompound (reverse happy_var_3) (reverse happy_var_4))}}}- ) (\r -> happyReturn (happyIn14 r))--happyReduce_40 = happyMonadReduce 0# 8# happyReduction_40-happyReduction_40 (happyRest) tk- = happyThen (( enterScope)- ) (\r -> happyReturn (happyIn15 r))--happyReduce_41 = happyMonadReduce 0# 9# happyReduction_41-happyReduction_41 (happyRest) tk- = happyThen (( leaveScope)- ) (\r -> happyReturn (happyIn16 r))--happyReduce_42 = happySpecReduce_0 10# happyReduction_42-happyReduction_42 = happyIn17- (empty- )--happyReduce_43 = happySpecReduce_2 10# happyReduction_43-happyReduction_43 happy_x_2- happy_x_1- = case happyOut17 happy_x_1 of { happy_var_1 ->- case happyOut18 happy_x_2 of { happy_var_2 ->- happyIn17- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_44 = happySpecReduce_1 11# happyReduction_44-happyReduction_44 happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 ->- happyIn18- (CBlockStmt happy_var_1- )}--happyReduce_45 = happySpecReduce_1 11# happyReduction_45-happyReduction_45 happy_x_1- = case happyOut19 happy_x_1 of { happy_var_1 ->- happyIn18- (happy_var_1- )}--happyReduce_46 = happySpecReduce_1 12# happyReduction_46-happyReduction_46 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 ->- happyIn19- (CBlockDecl happy_var_1- )}--happyReduce_47 = happySpecReduce_1 12# happyReduction_47-happyReduction_47 happy_x_1- = case happyOut20 happy_x_1 of { happy_var_1 ->- happyIn19- (CNestedFunDef happy_var_1- )}--happyReduce_48 = happySpecReduce_2 12# happyReduction_48-happyReduction_48 happy_x_2- happy_x_1- = case happyOut19 happy_x_2 of { happy_var_2 ->- happyIn19- (happy_var_2- )}--happyReduce_49 = happyMonadReduce 3# 13# happyReduction_49-happyReduction_49 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_50 = happyMonadReduce 3# 13# happyReduction_50-happyReduction_50 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_51 = happyMonadReduce 3# 13# happyReduction_51-happyReduction_51 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_52 = happyMonadReduce 3# 13# happyReduction_52-happyReduction_52 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut11 happy_x_2 of { happy_var_2 ->- case happyOut14 happy_x_3 of { happy_var_3 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_53 = happyMonadReduce 4# 13# happyReduction_53-happyReduction_53 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut11 happy_x_3 of { happy_var_3 ->- case happyOut14 happy_x_4 of { happy_var_4 ->- ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 [] happy_var_4))}}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_54 = happySpecReduce_3 14# happyReduction_54-happyReduction_54 happy_x_3- happy_x_2- happy_x_1- = case happyOut82 happy_x_2 of { happy_var_2 ->- happyIn21- (happy_var_2- )}--happyReduce_55 = happyReduce 4# 14# happyReduction_55-happyReduction_55 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut21 happy_x_1 of { happy_var_1 ->- case happyOut82 happy_x_3 of { happy_var_3 ->- happyIn21- (happy_var_1 `rappendr` happy_var_3- ) `HappyStk` happyRest}}--happyReduce_56 = happyMonadReduce 1# 15# happyReduction_56-happyReduction_56 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CExpr Nothing)}- ) (\r -> happyReturn (happyIn22 r))--happyReduce_57 = happyMonadReduce 2# 15# happyReduction_57-happyReduction_57 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut117 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CExpr (Just happy_var_1))}- ) (\r -> happyReturn (happyIn22 r))--happyReduce_58 = happyMonadReduce 5# 16# happyReduction_58-happyReduction_58 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- case happyOut12 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CIf happy_var_3 happy_var_5 Nothing)}}}- ) (\r -> happyReturn (happyIn23 r))--happyReduce_59 = happyMonadReduce 7# 16# happyReduction_59-happyReduction_59 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- case happyOut12 happy_x_5 of { happy_var_5 ->- case happyOut12 happy_x_7 of { happy_var_7 ->- ( withNodeInfo happy_var_1 $ CIf happy_var_3 happy_var_5 (Just happy_var_7))}}}}- ) (\r -> happyReturn (happyIn23 r))--happyReduce_60 = happyMonadReduce 5# 16# happyReduction_60-happyReduction_60 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- case happyOut12 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CSwitch happy_var_3 happy_var_5)}}}- ) (\r -> happyReturn (happyIn23 r))--happyReduce_61 = happyMonadReduce 5# 17# happyReduction_61-happyReduction_61 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- case happyOut12 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CWhile happy_var_3 happy_var_5 False)}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_62 = happyMonadReduce 7# 17# happyReduction_62-happyReduction_62 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut12 happy_x_2 of { happy_var_2 ->- case happyOut117 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CWhile happy_var_5 happy_var_2 True)}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_63 = happyMonadReduce 9# 17# happyReduction_63-happyReduction_63 (happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut119 happy_x_3 of { happy_var_3 ->- case happyOut119 happy_x_5 of { happy_var_5 ->- case happyOut119 happy_x_7 of { happy_var_7 ->- case happyOut12 happy_x_9 of { happy_var_9 ->- ( withNodeInfo happy_var_1 $ CFor (Left happy_var_3) happy_var_5 happy_var_7 happy_var_9)}}}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_64 = happyMonadReduce 10# 17# happyReduction_64-happyReduction_64 (happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut32 happy_x_4 of { happy_var_4 ->- case happyOut119 happy_x_5 of { happy_var_5 ->- case happyOut119 happy_x_7 of { happy_var_7 ->- case happyOut12 happy_x_9 of { happy_var_9 ->- ( withNodeInfo happy_var_1 $ CFor (Right happy_var_4) happy_var_5 happy_var_7 happy_var_9)}}}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_65 = happyMonadReduce 3# 18# happyReduction_65-happyReduction_65 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut125 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CGoto happy_var_2)}}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_66 = happyMonadReduce 4# 18# happyReduction_66-happyReduction_66 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CGotoPtr happy_var_3)}}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_67 = happyMonadReduce 2# 18# happyReduction_67-happyReduction_67 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CCont)}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_68 = happyMonadReduce 2# 18# happyReduction_68-happyReduction_68 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CBreak)}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_69 = happyMonadReduce 3# 18# happyReduction_69-happyReduction_69 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut119 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CReturn happy_var_2)}}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_70 = happyMonadReduce 6# 19# happyReduction_70-happyReduction_70 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut27 happy_x_2 of { happy_var_2 ->- case happyOut123 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 [] [] [])}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_71 = happyMonadReduce 8# 19# happyReduction_71-happyReduction_71 (happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut27 happy_x_2 of { happy_var_2 ->- case happyOut123 happy_x_4 of { happy_var_4 ->- case happyOut28 happy_x_6 of { happy_var_6 ->- ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 [] [])}}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_72 = happyMonadReduce 10# 19# happyReduction_72-happyReduction_72 (happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut27 happy_x_2 of { happy_var_2 ->- case happyOut123 happy_x_4 of { happy_var_4 ->- case happyOut28 happy_x_6 of { happy_var_6 ->- case happyOut28 happy_x_8 of { happy_var_8 ->- ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 happy_var_8 [])}}}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_73 = happyMonadReduce 12# 19# happyReduction_73-happyReduction_73 (happy_x_12 `HappyStk`- happy_x_11 `HappyStk`- happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut27 happy_x_2 of { happy_var_2 ->- case happyOut123 happy_x_4 of { happy_var_4 ->- case happyOut28 happy_x_6 of { happy_var_6 ->- case happyOut28 happy_x_8 of { happy_var_8 ->- case happyOut31 happy_x_10 of { happy_var_10 ->- ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 happy_var_8 (reverse happy_var_10))}}}}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_74 = happySpecReduce_0 20# happyReduction_74-happyReduction_74 = happyIn27- (Nothing- )--happyReduce_75 = happySpecReduce_1 20# happyReduction_75-happyReduction_75 happy_x_1- = case happyOut61 happy_x_1 of { happy_var_1 ->- happyIn27- (Just happy_var_1- )}--happyReduce_76 = happySpecReduce_0 21# happyReduction_76-happyReduction_76 = happyIn28- ([]- )--happyReduce_77 = happySpecReduce_1 21# happyReduction_77-happyReduction_77 happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 ->- happyIn28- (reverse happy_var_1- )}--happyReduce_78 = happySpecReduce_1 22# happyReduction_78-happyReduction_78 happy_x_1- = case happyOut30 happy_x_1 of { happy_var_1 ->- happyIn29- (singleton happy_var_1- )}--happyReduce_79 = happySpecReduce_3 22# happyReduction_79-happyReduction_79 happy_x_3- happy_x_2- happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 ->- case happyOut30 happy_x_3 of { happy_var_3 ->- happyIn29- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_80 = happyMonadReduce 4# 23# happyReduction_80-happyReduction_80 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut123 happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CAsmOperand Nothing happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn30 r))--happyReduce_81 = happyMonadReduce 7# 23# happyReduction_81-happyReduction_81 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { (CTokIdent _ happy_var_2) ->- case happyOut123 happy_x_4 of { happy_var_4 ->- case happyOut117 happy_x_6 of { happy_var_6 ->- ( withNodeInfo happy_var_1 $ CAsmOperand (Just happy_var_2) happy_var_4 happy_var_6)}}}}- ) (\r -> happyReturn (happyIn30 r))--happyReduce_82 = happyMonadReduce 7# 23# happyReduction_82-happyReduction_82 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) ->- case happyOut123 happy_x_4 of { happy_var_4 ->- case happyOut117 happy_x_6 of { happy_var_6 ->- ( withNodeInfo happy_var_1 $ CAsmOperand (Just happy_var_2) happy_var_4 happy_var_6)}}}}- ) (\r -> happyReturn (happyIn30 r))--happyReduce_83 = happySpecReduce_1 24# happyReduction_83-happyReduction_83 happy_x_1- = case happyOut123 happy_x_1 of { happy_var_1 ->- happyIn31- (singleton happy_var_1- )}--happyReduce_84 = happySpecReduce_3 24# happyReduction_84-happyReduction_84 happy_x_3- happy_x_2- happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 ->- case happyOut123 happy_x_3 of { happy_var_3 ->- happyIn31- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_85 = happyMonadReduce 2# 25# happyReduction_85-happyReduction_85 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut45 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_86 = happyMonadReduce 2# 25# happyReduction_86-happyReduction_86 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut46 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_87 = happyMonadReduce 2# 25# happyReduction_87-happyReduction_87 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut36 happy_x_1 of { happy_var_1 ->- ( case happy_var_1 of CDecl declspecs dies at -> withLength at (CDecl declspecs (List.reverse dies)))}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_88 = happyMonadReduce 2# 25# happyReduction_88-happyReduction_88 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut34 happy_x_1 of { happy_var_1 ->- ( case happy_var_1 of CDecl declspecs dies at -> withLength at (CDecl declspecs (List.reverse dies)))}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_89 = happySpecReduce_0 26# happyReduction_89-happyReduction_89 = happyIn33- (empty- )--happyReduce_90 = happySpecReduce_2 26# happyReduction_90-happyReduction_90 happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 ->- case happyOut32 happy_x_2 of { happy_var_2 ->- happyIn33- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_91 = happyMonadReduce 4# 27# happyReduction_91-happyReduction_91 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- case happyOut35 happy_x_3 of { happy_var_3 ->- case happyOut91 happy_x_4 of { happy_var_4 ->- ( let declspecs = reverse happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $- CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_92 = happyMonadReduce 4# 27# happyReduction_92-happyReduction_92 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- case happyOut35 happy_x_3 of { happy_var_3 ->- case happyOut91 happy_x_4 of { happy_var_4 ->- ( let declspecs = liftTypeQuals happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $ CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_93 = happyMonadReduce 5# 27# happyReduction_93-happyReduction_93 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut72 happy_x_3 of { happy_var_3 ->- case happyOut35 happy_x_4 of { happy_var_4 ->- case happyOut91 happy_x_5 of { happy_var_5 ->- ( let declspecs = liftTypeQuals happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_4 happy_var_3- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $ CDecl (declspecs ++ liftCAttrs happy_var_2) [(Just (reverseDeclr declr), happy_var_5, Nothing)] })}}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_94 = happyMonadReduce 4# 27# happyReduction_94-happyReduction_94 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- case happyOut35 happy_x_3 of { happy_var_3 ->- case happyOut91 happy_x_4 of { happy_var_4 ->- ( let declspecs = liftCAttrs happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $ CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_95 = happyMonadReduce 6# 27# happyReduction_95-happyReduction_95 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut34 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- case happyOut72 happy_x_4 of { happy_var_4 ->- case happyOut35 happy_x_5 of { happy_var_5 ->- case happyOut91 happy_x_6 of { happy_var_6 ->- ( case happy_var_1 of- CDecl declspecs dies at -> do- declr <- withAsmNameAttrs (fst happy_var_5, snd happy_var_5 ++ happy_var_3) happy_var_4- doDeclIdent declspecs declr- withLength at $ CDecl declspecs ((Just (reverseDeclr declr), happy_var_6, Nothing) : dies))}}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_96 = happySpecReduce_2 28# happyReduction_96-happyReduction_96 happy_x_2- happy_x_1- = case happyOut64 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- happyIn35- ((happy_var_1,happy_var_2)- )}}--happyReduce_97 = happyMonadReduce 4# 29# happyReduction_97-happyReduction_97 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- case happyOut63 happy_x_2 of { happy_var_2 ->- case happyOut35 happy_x_3 of { happy_var_3 ->- case happyOut91 happy_x_4 of { happy_var_4 ->- ( do{- declr <- withAsmNameAttrs happy_var_3 happy_var_2;- doDeclIdent happy_var_1 declr;- withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn36 r))--happyReduce_98 = happyMonadReduce 4# 29# happyReduction_98-happyReduction_98 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut63 happy_x_2 of { happy_var_2 ->- case happyOut35 happy_x_3 of { happy_var_3 ->- case happyOut91 happy_x_4 of { happy_var_4 ->- ( do{- declr <- withAsmNameAttrs happy_var_3 happy_var_2;- doDeclIdent happy_var_1 declr;- withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn36 r))--happyReduce_99 = happyMonadReduce 6# 29# happyReduction_99-happyReduction_99 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut36 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- case happyOut63 happy_x_4 of { happy_var_4 ->- case happyOut35 happy_x_5 of { happy_var_5 ->- case happyOut91 happy_x_6 of { happy_var_6 ->- ( case happy_var_1 of- CDecl declspecs dies at -> do- declr <- withAsmNameAttrs (fst happy_var_5, snd happy_var_5 ++ happy_var_3) happy_var_4- doDeclIdent declspecs declr- return (CDecl declspecs ((Just (reverseDeclr declr), happy_var_6, Nothing) : dies) at))}}}}}- ) (\r -> happyReturn (happyIn36 r))--happyReduce_100 = happySpecReduce_1 30# happyReduction_100-happyReduction_100 happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 ->- happyIn37- (reverse happy_var_1- )}--happyReduce_101 = happySpecReduce_1 30# happyReduction_101-happyReduction_101 happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 ->- happyIn37- (reverse happy_var_1- )}--happyReduce_102 = happySpecReduce_1 30# happyReduction_102-happyReduction_102 happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 ->- happyIn37- (reverse happy_var_1- )}--happyReduce_103 = happySpecReduce_1 31# happyReduction_103-happyReduction_103 happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 ->- happyIn38- (singleton (CStorageSpec happy_var_1)- )}--happyReduce_104 = happySpecReduce_2 31# happyReduction_104-happyReduction_104 happy_x_2- happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut40 happy_x_2 of { happy_var_2 ->- happyIn38- (reverseList (liftCAttrs happy_var_1) `snoc` (CStorageSpec happy_var_2)- )}}--happyReduce_105 = happySpecReduce_2 31# happyReduction_105-happyReduction_105 happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut40 happy_x_2 of { happy_var_2 ->- happyIn38- (rmap CTypeQual happy_var_1 `snoc` CStorageSpec happy_var_2- )}}--happyReduce_106 = happySpecReduce_3 31# happyReduction_106-happyReduction_106 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut40 happy_x_3 of { happy_var_3 ->- happyIn38- ((rmap CTypeQual happy_var_1 `rappend` liftCAttrs happy_var_2) `snoc` CStorageSpec happy_var_3- )}}}--happyReduce_107 = happySpecReduce_2 31# happyReduction_107-happyReduction_107 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut39 happy_x_2 of { happy_var_2 ->- happyIn38- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_108 = happySpecReduce_2 31# happyReduction_108-happyReduction_108 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn38- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_109 = happySpecReduce_1 32# happyReduction_109-happyReduction_109 happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 ->- happyIn39- (CStorageSpec happy_var_1- )}--happyReduce_110 = happySpecReduce_1 32# happyReduction_110-happyReduction_110 happy_x_1- = case happyOut61 happy_x_1 of { happy_var_1 ->- happyIn39- (CTypeQual happy_var_1- )}--happyReduce_111 = happyMonadReduce 1# 33# happyReduction_111-happyReduction_111 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CTypedef)}- ) (\r -> happyReturn (happyIn40 r))--happyReduce_112 = happyMonadReduce 1# 33# happyReduction_112-happyReduction_112 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CExtern)}- ) (\r -> happyReturn (happyIn40 r))--happyReduce_113 = happyMonadReduce 1# 33# happyReduction_113-happyReduction_113 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CStatic)}- ) (\r -> happyReturn (happyIn40 r))--happyReduce_114 = happyMonadReduce 1# 33# happyReduction_114-happyReduction_114 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CAuto)}- ) (\r -> happyReturn (happyIn40 r))--happyReduce_115 = happyMonadReduce 1# 33# happyReduction_115-happyReduction_115 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CRegister)}- ) (\r -> happyReturn (happyIn40 r))--happyReduce_116 = happyMonadReduce 1# 33# happyReduction_116-happyReduction_116 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CThread)}- ) (\r -> happyReturn (happyIn40 r))--happyReduce_117 = happySpecReduce_1 34# happyReduction_117-happyReduction_117 happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 ->- happyIn41- (reverse happy_var_1- )}--happyReduce_118 = happySpecReduce_1 34# happyReduction_118-happyReduction_118 happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 ->- happyIn41- (reverse happy_var_1- )}--happyReduce_119 = happySpecReduce_1 34# happyReduction_119-happyReduction_119 happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 ->- happyIn41- (reverse happy_var_1- )}--happyReduce_120 = happyMonadReduce 1# 35# happyReduction_120-happyReduction_120 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CVoidType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_121 = happyMonadReduce 1# 35# happyReduction_121-happyReduction_121 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CCharType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_122 = happyMonadReduce 1# 35# happyReduction_122-happyReduction_122 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CShortType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_123 = happyMonadReduce 1# 35# happyReduction_123-happyReduction_123 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CIntType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_124 = happyMonadReduce 1# 35# happyReduction_124-happyReduction_124 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CLongType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_125 = happyMonadReduce 1# 35# happyReduction_125-happyReduction_125 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CFloatType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_126 = happyMonadReduce 1# 35# happyReduction_126-happyReduction_126 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDoubleType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_127 = happyMonadReduce 1# 35# happyReduction_127-happyReduction_127 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CSignedType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_128 = happyMonadReduce 1# 35# happyReduction_128-happyReduction_128 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CUnsigType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_129 = happyMonadReduce 1# 35# happyReduction_129-happyReduction_129 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CBoolType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_130 = happyMonadReduce 1# 35# happyReduction_130-happyReduction_130 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CComplexType)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_131 = happySpecReduce_2 36# happyReduction_131-happyReduction_131 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut42 happy_x_2 of { happy_var_2 ->- happyIn43- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_132 = happySpecReduce_2 36# happyReduction_132-happyReduction_132 happy_x_2- happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 ->- case happyOut40 happy_x_2 of { happy_var_2 ->- happyIn43- (happy_var_1 `snoc` CStorageSpec happy_var_2- )}}--happyReduce_133 = happySpecReduce_2 36# happyReduction_133-happyReduction_133 happy_x_2- happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 ->- case happyOut39 happy_x_2 of { happy_var_2 ->- happyIn43- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_134 = happySpecReduce_2 36# happyReduction_134-happyReduction_134 happy_x_2- happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 ->- case happyOut42 happy_x_2 of { happy_var_2 ->- happyIn43- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_135 = happySpecReduce_2 36# happyReduction_135-happyReduction_135 happy_x_2- happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn43- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_136 = happySpecReduce_1 37# happyReduction_136-happyReduction_136 happy_x_1- = case happyOut42 happy_x_1 of { happy_var_1 ->- happyIn44- (singleton (CTypeSpec happy_var_1)- )}--happyReduce_137 = happySpecReduce_2 37# happyReduction_137-happyReduction_137 happy_x_2- happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut42 happy_x_2 of { happy_var_2 ->- happyIn44- ((reverseList $ liftCAttrs happy_var_1) `snoc` (CTypeSpec happy_var_2)- )}}--happyReduce_138 = happySpecReduce_2 37# happyReduction_138-happyReduction_138 happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut42 happy_x_2 of { happy_var_2 ->- happyIn44- (rmap CTypeQual happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_139 = happySpecReduce_3 37# happyReduction_139-happyReduction_139 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut42 happy_x_3 of { happy_var_3 ->- happyIn44- (rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec happy_var_3- )}}}--happyReduce_140 = happySpecReduce_2 37# happyReduction_140-happyReduction_140 happy_x_2- happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 ->- case happyOut61 happy_x_2 of { happy_var_2 ->- happyIn44- (happy_var_1 `snoc` CTypeQual happy_var_2- )}}--happyReduce_141 = happySpecReduce_2 37# happyReduction_141-happyReduction_141 happy_x_2- happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 ->- case happyOut42 happy_x_2 of { happy_var_2 ->- happyIn44- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_142 = happySpecReduce_2 37# happyReduction_142-happyReduction_142 happy_x_2- happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn44- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_143 = happySpecReduce_2 38# happyReduction_143-happyReduction_143 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut49 happy_x_2 of { happy_var_2 ->- happyIn45- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_144 = happySpecReduce_2 38# happyReduction_144-happyReduction_144 happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 ->- case happyOut40 happy_x_2 of { happy_var_2 ->- happyIn45- (happy_var_1 `snoc` CStorageSpec happy_var_2- )}}--happyReduce_145 = happySpecReduce_2 38# happyReduction_145-happyReduction_145 happy_x_2- happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 ->- case happyOut39 happy_x_2 of { happy_var_2 ->- happyIn45- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_146 = happySpecReduce_2 38# happyReduction_146-happyReduction_146 happy_x_2- happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn45- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_147 = happySpecReduce_1 39# happyReduction_147-happyReduction_147 happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 ->- happyIn46- (singleton (CTypeSpec happy_var_1)- )}--happyReduce_148 = happySpecReduce_2 39# happyReduction_148-happyReduction_148 happy_x_2- happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut49 happy_x_2 of { happy_var_2 ->- happyIn46- ((reverseList $ liftCAttrs happy_var_1) `snoc` (CTypeSpec happy_var_2)- )}}--happyReduce_149 = happySpecReduce_2 39# happyReduction_149-happyReduction_149 happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut49 happy_x_2 of { happy_var_2 ->- happyIn46- (rmap CTypeQual happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_150 = happySpecReduce_3 39# happyReduction_150-happyReduction_150 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut49 happy_x_3 of { happy_var_3 ->- happyIn46- (rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec happy_var_3- )}}}--happyReduce_151 = happySpecReduce_2 39# happyReduction_151-happyReduction_151 happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 ->- case happyOut61 happy_x_2 of { happy_var_2 ->- happyIn46- (happy_var_1 `snoc` CTypeQual happy_var_2- )}}--happyReduce_152 = happySpecReduce_2 39# happyReduction_152-happyReduction_152 happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn46- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_153 = happySpecReduce_2 40# happyReduction_153-happyReduction_153 happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 ->- case happyOut40 happy_x_2 of { happy_var_2 ->- happyIn47- (happy_var_1 `snoc` CStorageSpec happy_var_2- )}}--happyReduce_154 = happyMonadReduce 2# 40# happyReduction_154-happyReduction_154 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) ->- ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeDef happy_var_2 at))}}- ) (\r -> happyReturn (happyIn47 r))--happyReduce_155 = happyMonadReduce 5# 40# happyReduction_155-happyReduction_155 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { happy_var_2 ->- case happyOut117 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeOfExpr happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn47 r))--happyReduce_156 = happyMonadReduce 5# 40# happyReduction_156-happyReduction_156 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { happy_var_2 ->- case happyOut83 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeOfType happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn47 r))--happyReduce_157 = happySpecReduce_2 40# happyReduction_157-happyReduction_157 happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 ->- case happyOut39 happy_x_2 of { happy_var_2 ->- happyIn47- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_158 = happySpecReduce_2 40# happyReduction_158-happyReduction_158 happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn47- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_159 = happyMonadReduce 1# 41# happyReduction_159-happyReduction_159 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) ->- ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeDef happy_var_1 at)))}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_160 = happyMonadReduce 4# 41# happyReduction_160-happyReduction_160 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeOfExpr happy_var_3 at)))}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_161 = happyMonadReduce 4# 41# happyReduction_161-happyReduction_161 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeOfType happy_var_3 at)))}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_162 = happyMonadReduce 2# 41# happyReduction_162-happyReduction_162 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) ->- ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeDef happy_var_2 at))}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_163 = happyMonadReduce 5# 41# happyReduction_163-happyReduction_163 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { happy_var_2 ->- case happyOut117 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeOfExpr happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_164 = happyMonadReduce 5# 41# happyReduction_164-happyReduction_164 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { happy_var_2 ->- case happyOut83 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeOfType happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_165 = happyMonadReduce 2# 41# happyReduction_165-happyReduction_165 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) ->- ( withNodeInfo happy_var_2 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeDef happy_var_2 at)))}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_166 = happyMonadReduce 5# 41# happyReduction_166-happyReduction_166 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeOfExpr happy_var_4 at)))}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_167 = happyMonadReduce 5# 41# happyReduction_167-happyReduction_167 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { happy_var_2 ->- case happyOut83 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_2 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeOfType happy_var_4 at)))}}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_168 = happyMonadReduce 3# 41# happyReduction_168-happyReduction_168 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOutTok happy_x_3 of { (CTokTyIdent _ happy_var_3) ->- ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeDef happy_var_3 at))}}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_169 = happyMonadReduce 6# 41# happyReduction_169-happyReduction_169 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOutTok happy_x_3 of { happy_var_3 ->- case happyOut117 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeOfExpr happy_var_5 at))}}}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_170 = happyMonadReduce 6# 41# happyReduction_170-happyReduction_170 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOutTok happy_x_3 of { happy_var_3 ->- case happyOut83 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeOfType happy_var_5 at))}}}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_171 = happySpecReduce_2 41# happyReduction_171-happyReduction_171 happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 ->- case happyOut61 happy_x_2 of { happy_var_2 ->- happyIn48- (happy_var_1 `snoc` CTypeQual happy_var_2- )}}--happyReduce_172 = happySpecReduce_2 41# happyReduction_172-happyReduction_172 happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn48- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_173 = happyMonadReduce 1# 42# happyReduction_173-happyReduction_173 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut50 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CSUType happy_var_1)}- ) (\r -> happyReturn (happyIn49 r))--happyReduce_174 = happyMonadReduce 1# 42# happyReduction_174-happyReduction_174 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut58 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CEnumType happy_var_1)}- ) (\r -> happyReturn (happyIn49 r))--happyReduce_175 = happyMonadReduce 6# 43# happyReduction_175-happyReduction_175 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- case happyOut52 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_176 = happyMonadReduce 5# 43# happyReduction_176-happyReduction_176 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut52 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) Nothing (Just$ reverse happy_var_4) happy_var_2)}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_177 = happyMonadReduce 3# 43# happyReduction_177-happyReduction_177 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) (Just happy_var_3) Nothing happy_var_2)}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_178 = happySpecReduce_1 44# happyReduction_178-happyReduction_178 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn51- (L CStructTag (posOf happy_var_1)- )}--happyReduce_179 = happySpecReduce_1 44# happyReduction_179-happyReduction_179 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn51- (L CUnionTag (posOf happy_var_1)- )}--happyReduce_180 = happySpecReduce_0 45# happyReduction_180-happyReduction_180 = happyIn52- (empty- )--happyReduce_181 = happySpecReduce_2 45# happyReduction_181-happyReduction_181 happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { happy_var_1 ->- happyIn52- (happy_var_1- )}--happyReduce_182 = happySpecReduce_2 45# happyReduction_182-happyReduction_182 happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { happy_var_1 ->- case happyOut53 happy_x_2 of { happy_var_2 ->- happyIn52- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_183 = happySpecReduce_2 46# happyReduction_183-happyReduction_183 happy_x_2- happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 ->- happyIn53- (case happy_var_1 of CDecl declspecs dies at -> CDecl declspecs (List.reverse dies) at- )}--happyReduce_184 = happySpecReduce_2 46# happyReduction_184-happyReduction_184 happy_x_2- happy_x_1- = case happyOut54 happy_x_1 of { happy_var_1 ->- happyIn53- (case happy_var_1 of CDecl declspecs dies at -> CDecl declspecs (List.reverse dies) at- )}--happyReduce_185 = happySpecReduce_2 46# happyReduction_185-happyReduction_185 happy_x_2- happy_x_1- = case happyOut53 happy_x_2 of { happy_var_2 ->- happyIn53- (happy_var_2- )}--happyReduce_186 = happyMonadReduce 3# 47# happyReduction_186-happyReduction_186 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut57 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ case happy_var_3 of (d,s) -> CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [(d,Nothing,s)])}}}- ) (\r -> happyReturn (happyIn54 r))--happyReduce_187 = happyMonadReduce 2# 47# happyReduction_187-happyReduction_187 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut57 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ case happy_var_2 of (d,s) -> CDecl (liftCAttrs happy_var_1) [(d,Nothing,s)])}}- ) (\r -> happyReturn (happyIn54 r))--happyReduce_188 = happyReduce 4# 47# happyReduction_188-happyReduction_188 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut54 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- case happyOut57 happy_x_4 of { happy_var_4 ->- happyIn54- (case happy_var_1 of- CDecl declspecs dies at ->- case happy_var_4 of- (Just d,s) -> CDecl declspecs ((Just $ appendObjAttrs happy_var_3 d,Nothing,s) : dies) at- (Nothing,s) -> CDecl declspecs ((Nothing,Nothing,s) : dies) at- ) `HappyStk` happyRest}}}--happyReduce_189 = happyMonadReduce 3# 48# happyReduction_189-happyReduction_189 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut56 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ case happy_var_2 of { (Just d,s) -> CDecl happy_var_1 [(Just $! appendObjAttrs happy_var_3 d,Nothing,s)]- ; (Nothing,s) -> CDecl happy_var_1 [(Nothing,Nothing,s)] })}}}- ) (\r -> happyReturn (happyIn55 r))--happyReduce_190 = happyReduce 5# 48# happyReduction_190-happyReduction_190 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut55 happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- case happyOut56 happy_x_4 of { happy_var_4 ->- case happyOut126 happy_x_5 of { happy_var_5 ->- happyIn55- (case happy_var_1 of- CDecl declspecs dies attr ->- case happy_var_4 of- (Just d,s) -> CDecl declspecs ((Just$ appendObjAttrs (happy_var_3++happy_var_5) d,Nothing,s) : dies) attr- (Nothing,s) -> CDecl declspecs ((Nothing,Nothing,s) : dies) attr- ) `HappyStk` happyRest}}}}--happyReduce_191 = happyMonadReduce 1# 48# happyReduction_191-happyReduction_191 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn55 r))--happyReduce_192 = happySpecReduce_1 49# happyReduction_192-happyReduction_192 happy_x_1- = case happyOut63 happy_x_1 of { happy_var_1 ->- happyIn56- ((Just (reverseDeclr happy_var_1), Nothing)- )}--happyReduce_193 = happySpecReduce_2 49# happyReduction_193-happyReduction_193 happy_x_2- happy_x_1- = case happyOut121 happy_x_2 of { happy_var_2 ->- happyIn56- ((Nothing, Just happy_var_2)- )}--happyReduce_194 = happySpecReduce_3 49# happyReduction_194-happyReduction_194 happy_x_3- happy_x_2- happy_x_1- = case happyOut63 happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_3 of { happy_var_3 ->- happyIn56- ((Just (reverseDeclr happy_var_1), Just happy_var_3)- )}}--happyReduce_195 = happySpecReduce_1 50# happyReduction_195-happyReduction_195 happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 ->- happyIn57- ((Just (reverseDeclr happy_var_1), Nothing)- )}--happyReduce_196 = happySpecReduce_2 50# happyReduction_196-happyReduction_196 happy_x_2- happy_x_1- = case happyOut121 happy_x_2 of { happy_var_2 ->- happyIn57- ((Nothing, Just happy_var_2)- )}--happyReduce_197 = happySpecReduce_3 50# happyReduction_197-happyReduction_197 happy_x_3- happy_x_2- happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_3 of { happy_var_3 ->- happyIn57- ((Just (reverseDeclr happy_var_1), Just happy_var_3)- )}}--happyReduce_198 = happySpecReduce_2 50# happyReduction_198-happyReduction_198 happy_x_2- happy_x_1- = case happyOut57 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn57- (case happy_var_1 of { (Nothing,expr) -> (Nothing,expr) {- FIXME -}- ; (Just (CDeclr name derived asmname attrs node), bsz) ->- (Just (CDeclr name derived asmname (attrs++happy_var_2) node),bsz)- }- )}}--happyReduce_199 = happyMonadReduce 5# 51# happyReduction_199-happyReduction_199 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut59 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CEnum Nothing (Just$ reverse happy_var_4) happy_var_2)}}}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_200 = happyMonadReduce 6# 51# happyReduction_200-happyReduction_200 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut59 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CEnum Nothing (Just$ reverse happy_var_4) happy_var_2)}}}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_201 = happyMonadReduce 6# 51# happyReduction_201-happyReduction_201 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- case happyOut59 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_202 = happyMonadReduce 7# 51# happyReduction_202-happyReduction_202 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- case happyOut59 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_203 = happyMonadReduce 3# 51# happyReduction_203-happyReduction_203 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_2 of { happy_var_2 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) Nothing happy_var_2)}}}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_204 = happySpecReduce_1 52# happyReduction_204-happyReduction_204 happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 ->- happyIn59- (singleton happy_var_1- )}--happyReduce_205 = happySpecReduce_3 52# happyReduction_205-happyReduction_205 happy_x_3- happy_x_2- happy_x_1- = case happyOut59 happy_x_1 of { happy_var_1 ->- case happyOut60 happy_x_3 of { happy_var_3 ->- happyIn59- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_206 = happySpecReduce_1 53# happyReduction_206-happyReduction_206 happy_x_1- = case happyOut125 happy_x_1 of { happy_var_1 ->- happyIn60- ((happy_var_1, Nothing)- )}--happyReduce_207 = happySpecReduce_3 53# happyReduction_207-happyReduction_207 happy_x_3- happy_x_2- happy_x_1- = case happyOut125 happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_3 of { happy_var_3 ->- happyIn60- ((happy_var_1, Just happy_var_3)- )}}--happyReduce_208 = happyMonadReduce 1# 54# happyReduction_208-happyReduction_208 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CConstQual)}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_209 = happyMonadReduce 1# 54# happyReduction_209-happyReduction_209 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CVolatQual)}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_210 = happyMonadReduce 1# 54# happyReduction_210-happyReduction_210 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CRestrQual)}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_211 = happyMonadReduce 1# 54# happyReduction_211-happyReduction_211 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CInlineQual)}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_212 = happySpecReduce_2 55# happyReduction_212-happyReduction_212 happy_x_2- happy_x_1- = case happyOut126 happy_x_1 of { happy_var_1 ->- case happyOut61 happy_x_2 of { happy_var_2 ->- happyIn62- (reverseList (map CAttrQual happy_var_1) `snoc` happy_var_2- )}}--happyReduce_213 = happySpecReduce_2 55# happyReduction_213-happyReduction_213 happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut61 happy_x_2 of { happy_var_2 ->- happyIn62- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_214 = happySpecReduce_3 55# happyReduction_214-happyReduction_214 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut61 happy_x_3 of { happy_var_3 ->- happyIn62- ((happy_var_1 `rappend` map CAttrQual happy_var_2) `snoc` happy_var_3- )}}}--happyReduce_215 = happySpecReduce_1 56# happyReduction_215-happyReduction_215 happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 ->- happyIn63- (happy_var_1- )}--happyReduce_216 = happySpecReduce_1 56# happyReduction_216-happyReduction_216 happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 ->- happyIn63- (happy_var_1- )}--happyReduce_217 = happySpecReduce_0 57# happyReduction_217-happyReduction_217 = happyIn64- (Nothing- )--happyReduce_218 = happyReduce 4# 57# happyReduction_218-happyReduction_218 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut123 happy_x_3 of { happy_var_3 ->- happyIn64- (Just happy_var_3- ) `HappyStk` happyRest}--happyReduce_219 = happySpecReduce_1 58# happyReduction_219-happyReduction_219 happy_x_1- = case happyOut69 happy_x_1 of { happy_var_1 ->- happyIn65- (happy_var_1- )}--happyReduce_220 = happySpecReduce_1 58# happyReduction_220-happyReduction_220 happy_x_1- = case happyOut66 happy_x_1 of { happy_var_1 ->- happyIn65- (happy_var_1- )}--happyReduce_221 = happyMonadReduce 1# 59# happyReduction_221-happyReduction_221 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) ->- ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)}- ) (\r -> happyReturn (happyIn66 r))--happyReduce_222 = happyMonadReduce 2# 59# happyReduction_222-happyReduction_222 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) ->- case happyOut85 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ \at -> happy_var_2 (mkVarDeclr happy_var_1 at))}}- ) (\r -> happyReturn (happyIn66 r))--happyReduce_223 = happySpecReduce_1 59# happyReduction_223-happyReduction_223 happy_x_1- = case happyOut67 happy_x_1 of { happy_var_1 ->- happyIn66- (happy_var_1- )}--happyReduce_224 = happySpecReduce_1 60# happyReduction_224-happyReduction_224 happy_x_1- = case happyOut68 happy_x_1 of { happy_var_1 ->- happyIn67- (happy_var_1- )}--happyReduce_225 = happyMonadReduce 2# 60# happyReduction_225-happyReduction_225 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut66 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn67 r))--happyReduce_226 = happyMonadReduce 3# 60# happyReduction_226-happyReduction_226 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut66 happy_x_3 of { happy_var_3 ->- ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}}- ) (\r -> happyReturn (happyIn67 r))--happyReduce_227 = happyMonadReduce 3# 60# happyReduction_227-happyReduction_227 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut66 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn67 r))--happyReduce_228 = happyMonadReduce 4# 60# happyReduction_228-happyReduction_228 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut127 happy_x_3 of { happy_var_3 ->- case happyOut66 happy_x_4 of { happy_var_4 ->- ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn67 r))--happyReduce_229 = happySpecReduce_3 61# happyReduction_229-happyReduction_229 happy_x_3- happy_x_2- happy_x_1- = case happyOut67 happy_x_2 of { happy_var_2 ->- happyIn68- (happy_var_2- )}--happyReduce_230 = happyReduce 4# 61# happyReduction_230-happyReduction_230 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut67 happy_x_2 of { happy_var_2 ->- case happyOut85 happy_x_4 of { happy_var_4 ->- happyIn68- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_231 = happyReduce 4# 61# happyReduction_231-happyReduction_231 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut67 happy_x_3 of { happy_var_3 ->- happyIn68- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_232 = happyReduce 5# 61# happyReduction_232-happyReduction_232 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut67 happy_x_3 of { happy_var_3 ->- case happyOut85 happy_x_5 of { happy_var_5 ->- happyIn68- (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3)- ) `HappyStk` happyRest}}}--happyReduce_233 = happySpecReduce_1 62# happyReduction_233-happyReduction_233 happy_x_1- = case happyOut70 happy_x_1 of { happy_var_1 ->- happyIn69- (happy_var_1- )}--happyReduce_234 = happyMonadReduce 4# 62# happyReduction_234-happyReduction_234 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut71 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 [])}}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_235 = happyMonadReduce 5# 62# happyReduction_235-happyReduction_235 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut71 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_236 = happyMonadReduce 6# 62# happyReduction_236-happyReduction_236 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut127 happy_x_3 of { happy_var_3 ->- case happyOut71 happy_x_5 of { happy_var_5 ->- ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_5 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_237 = happyMonadReduce 2# 62# happyReduction_237-happyReduction_237 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut69 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_238 = happyMonadReduce 3# 62# happyReduction_238-happyReduction_238 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut69 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_239 = happyMonadReduce 4# 62# happyReduction_239-happyReduction_239 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut127 happy_x_3 of { happy_var_3 ->- case happyOut69 happy_x_4 of { happy_var_4 ->- ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_240 = happySpecReduce_3 63# happyReduction_240-happyReduction_240 happy_x_3- happy_x_2- happy_x_1- = case happyOut69 happy_x_2 of { happy_var_2 ->- happyIn70- (happy_var_2- )}--happyReduce_241 = happyReduce 4# 63# happyReduction_241-happyReduction_241 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut71 happy_x_2 of { happy_var_2 ->- case happyOut85 happy_x_3 of { happy_var_3 ->- happyIn70- (happy_var_3 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_242 = happyReduce 4# 63# happyReduction_242-happyReduction_242 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut69 happy_x_2 of { happy_var_2 ->- case happyOut85 happy_x_4 of { happy_var_4 ->- happyIn70- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_243 = happyMonadReduce 1# 64# happyReduction_243-happyReduction_243 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) ->- ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)}- ) (\r -> happyReturn (happyIn71 r))--happyReduce_244 = happySpecReduce_3 64# happyReduction_244-happyReduction_244 happy_x_3- happy_x_2- happy_x_1- = case happyOut71 happy_x_2 of { happy_var_2 ->- happyIn71- (happy_var_2- )}--happyReduce_245 = happySpecReduce_1 65# happyReduction_245-happyReduction_245 happy_x_1- = case happyOut73 happy_x_1 of { happy_var_1 ->- happyIn72- (happy_var_1- )}--happyReduce_246 = happySpecReduce_1 65# happyReduction_246-happyReduction_246 happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 ->- happyIn72- (happy_var_1- )}--happyReduce_247 = happySpecReduce_1 66# happyReduction_247-happyReduction_247 happy_x_1- = case happyOut74 happy_x_1 of { happy_var_1 ->- happyIn73- (happy_var_1- )}--happyReduce_248 = happyMonadReduce 2# 66# happyReduction_248-happyReduction_248 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn73 r))--happyReduce_249 = happyMonadReduce 3# 66# happyReduction_249-happyReduction_249 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut72 happy_x_3 of { happy_var_3 ->- ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}}- ) (\r -> happyReturn (happyIn73 r))--happyReduce_250 = happyMonadReduce 3# 66# happyReduction_250-happyReduction_250 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut72 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn73 r))--happyReduce_251 = happyMonadReduce 4# 66# happyReduction_251-happyReduction_251 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut127 happy_x_3 of { happy_var_3 ->- case happyOut72 happy_x_4 of { happy_var_4 ->- ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn73 r))--happyReduce_252 = happySpecReduce_2 67# happyReduction_252-happyReduction_252 happy_x_2- happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 ->- case happyOut85 happy_x_2 of { happy_var_2 ->- happyIn74- (happy_var_2 happy_var_1- )}}--happyReduce_253 = happySpecReduce_3 67# happyReduction_253-happyReduction_253 happy_x_3- happy_x_2- happy_x_1- = case happyOut73 happy_x_2 of { happy_var_2 ->- happyIn74- (happy_var_2- )}--happyReduce_254 = happyReduce 4# 67# happyReduction_254-happyReduction_254 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut73 happy_x_2 of { happy_var_2 ->- case happyOut85 happy_x_4 of { happy_var_4 ->- happyIn74- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_255 = happyReduce 4# 67# happyReduction_255-happyReduction_255 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut73 happy_x_3 of { happy_var_3 ->- happyIn74- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_256 = happyReduce 5# 67# happyReduction_256-happyReduction_256 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut73 happy_x_3 of { happy_var_3 ->- case happyOut85 happy_x_5 of { happy_var_5 ->- happyIn74- (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3)- ) `HappyStk` happyRest}}}--happyReduce_257 = happyMonadReduce 1# 68# happyReduction_257-happyReduction_257 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) ->- ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)}- ) (\r -> happyReturn (happyIn75 r))--happyReduce_258 = happySpecReduce_3 68# happyReduction_258-happyReduction_258 happy_x_3- happy_x_2- happy_x_1- = case happyOut75 happy_x_2 of { happy_var_2 ->- happyIn75- (happy_var_2- )}--happyReduce_259 = happyReduce 4# 68# happyReduction_259-happyReduction_259 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut75 happy_x_3 of { happy_var_3 ->- happyIn75- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_260 = happySpecReduce_1 69# happyReduction_260-happyReduction_260 happy_x_1- = case happyOut77 happy_x_1 of { happy_var_1 ->- happyIn76- (reverseDeclr happy_var_1- )}--happyReduce_261 = happySpecReduce_1 70# happyReduction_261-happyReduction_261 happy_x_1- = case happyOut78 happy_x_1 of { happy_var_1 ->- happyIn77- (happy_var_1- )}--happyReduce_262 = happyMonadReduce 2# 70# happyReduction_262-happyReduction_262 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut77 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn77 r))--happyReduce_263 = happyMonadReduce 3# 70# happyReduction_263-happyReduction_263 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut77 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn77 r))--happyReduce_264 = happyMonadReduce 4# 71# happyReduction_264-happyReduction_264 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut75 happy_x_1 of { happy_var_1 ->- case happyOut82 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ funDeclr happy_var_1 (Left $ reverse happy_var_3) [])}}- ) (\r -> happyReturn (happyIn78 r))--happyReduce_265 = happySpecReduce_3 71# happyReduction_265-happyReduction_265 happy_x_3- happy_x_2- happy_x_1- = case happyOut77 happy_x_2 of { happy_var_2 ->- happyIn78- (happy_var_2- )}--happyReduce_266 = happyReduce 4# 71# happyReduction_266-happyReduction_266 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut77 happy_x_2 of { happy_var_2 ->- case happyOut85 happy_x_4 of { happy_var_4 ->- happyIn78- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_267 = happySpecReduce_0 72# happyReduction_267-happyReduction_267 = happyIn79- (([], False)- )--happyReduce_268 = happySpecReduce_1 72# happyReduction_268-happyReduction_268 happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 ->- happyIn79- ((reverse happy_var_1, False)- )}--happyReduce_269 = happySpecReduce_3 72# happyReduction_269-happyReduction_269 happy_x_3- happy_x_2- happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 ->- happyIn79- ((reverse happy_var_1, True)- )}--happyReduce_270 = happySpecReduce_1 73# happyReduction_270-happyReduction_270 happy_x_1- = case happyOut81 happy_x_1 of { happy_var_1 ->- happyIn80- (singleton happy_var_1- )}--happyReduce_271 = happySpecReduce_3 73# happyReduction_271-happyReduction_271 happy_x_3- happy_x_2- happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 ->- case happyOut81 happy_x_3 of { happy_var_3 ->- happyIn80- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_272 = happyMonadReduce 1# 74# happyReduction_272-happyReduction_272 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_273 = happyMonadReduce 2# 74# happyReduction_273-happyReduction_273 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- case happyOut84 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_274 = happyMonadReduce 3# 74# happyReduction_274-happyReduction_274 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_275 = happyMonadReduce 3# 74# happyReduction_275-happyReduction_275 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->- case happyOut66 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_276 = happyMonadReduce 1# 74# happyReduction_276-happyReduction_276 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_277 = happyMonadReduce 2# 74# happyReduction_277-happyReduction_277 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut84 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_278 = happyMonadReduce 3# 74# happyReduction_278-happyReduction_278 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_279 = happyMonadReduce 1# 74# happyReduction_279-happyReduction_279 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_280 = happyMonadReduce 2# 74# happyReduction_280-happyReduction_280 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut84 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_281 = happyMonadReduce 3# 74# happyReduction_281-happyReduction_281 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_282 = happyMonadReduce 3# 74# happyReduction_282-happyReduction_282 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut66 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_283 = happyMonadReduce 1# 74# happyReduction_283-happyReduction_283 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [])}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_284 = happyMonadReduce 2# 74# happyReduction_284-happyReduction_284 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [])}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_285 = happyMonadReduce 2# 74# happyReduction_285-happyReduction_285 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut84 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_286 = happyMonadReduce 3# 74# happyReduction_286-happyReduction_286 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut72 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr$ appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_287 = happySpecReduce_1 75# happyReduction_287-happyReduction_287 happy_x_1- = case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) ->- happyIn82- (singleton happy_var_1- )}--happyReduce_288 = happySpecReduce_3 75# happyReduction_288-happyReduction_288 happy_x_3- happy_x_2- happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_3 of { (CTokIdent _ happy_var_3) ->- happyIn82- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_289 = happyMonadReduce 1# 76# happyReduction_289-happyReduction_289 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn83 r))--happyReduce_290 = happyMonadReduce 2# 76# happyReduction_290-happyReduction_290 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut41 happy_x_1 of { happy_var_1 ->- case happyOut84 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn83 r))--happyReduce_291 = happyMonadReduce 2# 76# happyReduction_291-happyReduction_291 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [])}}- ) (\r -> happyReturn (happyIn83 r))--happyReduce_292 = happyMonadReduce 2# 76# happyReduction_292-happyReduction_292 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut62 happy_x_1 of { happy_var_1 ->- case happyOut84 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn83 r))--happyReduce_293 = happySpecReduce_1 77# happyReduction_293-happyReduction_293 happy_x_1- = case happyOut88 happy_x_1 of { happy_var_1 ->- happyIn84- (happy_var_1- )}--happyReduce_294 = happySpecReduce_1 77# happyReduction_294-happyReduction_294 happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 ->- happyIn84- (happy_var_1- )}--happyReduce_295 = happySpecReduce_1 77# happyReduction_295-happyReduction_295 happy_x_1- = case happyOut85 happy_x_1 of { happy_var_1 ->- happyIn84- (happy_var_1 emptyDeclr- )}--happyReduce_296 = happySpecReduce_1 78# happyReduction_296-happyReduction_296 happy_x_1- = case happyOut86 happy_x_1 of { happy_var_1 ->- happyIn85- (happy_var_1- )}--happyReduce_297 = happyMonadReduce 3# 78# happyReduction_297-happyReduction_297 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut79 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ \at declr -> case happy_var_2 of- (params, variadic) -> funDeclr declr (Right (params,variadic)) [] at)}}- ) (\r -> happyReturn (happyIn85 r))--happyReduce_298 = happySpecReduce_1 79# happyReduction_298-happyReduction_298 happy_x_1- = case happyOut87 happy_x_1 of { happy_var_1 ->- happyIn86- (happy_var_1- )}--happyReduce_299 = happySpecReduce_2 79# happyReduction_299-happyReduction_299 happy_x_2- happy_x_1- = case happyOut86 happy_x_1 of { happy_var_1 ->- case happyOut87 happy_x_2 of { happy_var_2 ->- happyIn86- (\decl -> happy_var_2 (happy_var_1 decl)- )}}--happyReduce_300 = happyMonadReduce 3# 80# happyReduction_300-happyReduction_300 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut120 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ \at declr -> arrDeclr declr [] False False happy_var_2 at)}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_301 = happyMonadReduce 4# 80# happyReduction_301-happyReduction_301 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut120 happy_x_3 of { happy_var_3 ->- ( withAttributePF happy_var_1 happy_var_2 $ \at declr -> arrDeclr declr [] False False happy_var_3 at)}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_302 = happyMonadReduce 4# 80# happyReduction_302-happyReduction_302 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut120 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ \at declr -> arrDeclr declr (reverse happy_var_2) False False happy_var_3 at)}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_303 = happyMonadReduce 5# 80# happyReduction_303-happyReduction_303 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut127 happy_x_3 of { happy_var_3 ->- case happyOut120 happy_x_4 of { happy_var_4 ->- ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr (reverse happy_var_2) False False happy_var_4 at)}}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_304 = happyMonadReduce 5# 80# happyReduction_304-happyReduction_304 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- case happyOut115 happy_x_4 of { happy_var_4 ->- ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr [] False True (Just happy_var_4) at)}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_305 = happyMonadReduce 6# 80# happyReduction_305-happyReduction_305 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_3 of { happy_var_3 ->- case happyOut126 happy_x_4 of { happy_var_4 ->- case happyOut115 happy_x_5 of { happy_var_5 ->- ( withAttributePF happy_var_1 happy_var_4 $ \at declr -> arrDeclr declr (reverse happy_var_3) False True (Just happy_var_5) at)}}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_306 = happyMonadReduce 7# 80# happyReduction_306-happyReduction_306 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- case happyOut126 happy_x_5 of { happy_var_5 ->- case happyOut115 happy_x_6 of { happy_var_6 ->- ( withAttributePF happy_var_1 (happy_var_3 ++ happy_var_5) $ \at declr -> arrDeclr declr (reverse happy_var_2) False True (Just happy_var_6) at)}}}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_307 = happyMonadReduce 4# 80# happyReduction_307-happyReduction_307 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr [] True False Nothing at)}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_308 = happyMonadReduce 5# 80# happyReduction_308-happyReduction_308 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_4 of { happy_var_4 ->- ( withAttributePF happy_var_1 (happy_var_2 ++ happy_var_4) $ \at declr -> arrDeclr declr [] True False Nothing at)}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_309 = happyMonadReduce 5# 80# happyReduction_309-happyReduction_309 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_4 of { happy_var_4 ->- ( withAttributePF happy_var_1 happy_var_4 $ \at declr -> arrDeclr declr (reverse happy_var_2) True False Nothing at)}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_310 = happyMonadReduce 6# 80# happyReduction_310-happyReduction_310 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut127 happy_x_3 of { happy_var_3 ->- case happyOut126 happy_x_5 of { happy_var_5 ->- ( withAttributePF happy_var_1 (happy_var_3 ++ happy_var_5) $ \at declr -> arrDeclr declr (reverse happy_var_2) True False Nothing at)}}}}- ) (\r -> happyReturn (happyIn87 r))--happyReduce_311 = happyMonadReduce 1# 81# happyReduction_311-happyReduction_311 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ ptrDeclr emptyDeclr [])}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_312 = happyMonadReduce 3# 81# happyReduction_312-happyReduction_312 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut126 happy_x_3 of { happy_var_3 ->- ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr emptyDeclr (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_313 = happyMonadReduce 2# 81# happyReduction_313-happyReduction_313 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut84 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_314 = happyMonadReduce 3# 81# happyReduction_314-happyReduction_314 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut62 happy_x_2 of { happy_var_2 ->- case happyOut84 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_315 = happyMonadReduce 2# 81# happyReduction_315-happyReduction_315 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr emptyDeclr [])}}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_316 = happyMonadReduce 3# 81# happyReduction_316-happyReduction_316 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut84 happy_x_3 of { happy_var_3 ->- ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_317 = happySpecReduce_3 82# happyReduction_317-happyReduction_317 happy_x_3- happy_x_2- happy_x_1- = case happyOut88 happy_x_2 of { happy_var_2 ->- happyIn89- (happy_var_2- )}--happyReduce_318 = happySpecReduce_3 82# happyReduction_318-happyReduction_318 happy_x_3- happy_x_2- happy_x_1- = case happyOut89 happy_x_2 of { happy_var_2 ->- happyIn89- (happy_var_2- )}--happyReduce_319 = happySpecReduce_3 82# happyReduction_319-happyReduction_319 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_2 of { happy_var_2 ->- happyIn89- (happy_var_2 emptyDeclr- )}--happyReduce_320 = happyReduce 4# 82# happyReduction_320-happyReduction_320 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut88 happy_x_2 of { happy_var_2 ->- case happyOut85 happy_x_4 of { happy_var_4 ->- happyIn89- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_321 = happyReduce 4# 82# happyReduction_321-happyReduction_321 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut88 happy_x_3 of { happy_var_3 ->- happyIn89- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_322 = happyReduce 4# 82# happyReduction_322-happyReduction_322 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut89 happy_x_3 of { happy_var_3 ->- happyIn89- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_323 = happyReduce 4# 82# happyReduction_323-happyReduction_323 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut85 happy_x_3 of { happy_var_3 ->- happyIn89- (appendDeclrAttrs happy_var_2 (happy_var_3 emptyDeclr)- ) `HappyStk` happyRest}}--happyReduce_324 = happyReduce 5# 82# happyReduction_324-happyReduction_324 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut127 happy_x_2 of { happy_var_2 ->- case happyOut88 happy_x_3 of { happy_var_3 ->- case happyOut85 happy_x_5 of { happy_var_5 ->- happyIn89- (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3)- ) `HappyStk` happyRest}}}--happyReduce_325 = happySpecReduce_2 82# happyReduction_325-happyReduction_325 happy_x_2- happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn89- (appendDeclrAttrs happy_var_2 happy_var_1- )}}--happyReduce_326 = happyMonadReduce 1# 83# happyReduction_326-happyReduction_326 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut115 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CInitExpr happy_var_1)}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_327 = happyMonadReduce 3# 83# happyReduction_327-happyReduction_327 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut92 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CInitList (reverse happy_var_2))}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_328 = happyMonadReduce 4# 83# happyReduction_328-happyReduction_328 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut92 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CInitList (reverse happy_var_2))}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_329 = happySpecReduce_0 84# happyReduction_329-happyReduction_329 = happyIn91- (Nothing- )--happyReduce_330 = happySpecReduce_2 84# happyReduction_330-happyReduction_330 happy_x_2- happy_x_1- = case happyOut90 happy_x_2 of { happy_var_2 ->- happyIn91- (Just happy_var_2- )}--happyReduce_331 = happySpecReduce_0 85# happyReduction_331-happyReduction_331 = happyIn92- (empty- )--happyReduce_332 = happySpecReduce_1 85# happyReduction_332-happyReduction_332 happy_x_1- = case happyOut90 happy_x_1 of { happy_var_1 ->- happyIn92- (singleton ([],happy_var_1)- )}--happyReduce_333 = happySpecReduce_2 85# happyReduction_333-happyReduction_333 happy_x_2- happy_x_1- = case happyOut93 happy_x_1 of { happy_var_1 ->- case happyOut90 happy_x_2 of { happy_var_2 ->- happyIn92- (singleton (happy_var_1,happy_var_2)- )}}--happyReduce_334 = happySpecReduce_3 85# happyReduction_334-happyReduction_334 happy_x_3- happy_x_2- happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 ->- case happyOut90 happy_x_3 of { happy_var_3 ->- happyIn92- (happy_var_1 `snoc` ([],happy_var_3)- )}}--happyReduce_335 = happyReduce 4# 85# happyReduction_335-happyReduction_335 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut92 happy_x_1 of { happy_var_1 ->- case happyOut93 happy_x_3 of { happy_var_3 ->- case happyOut90 happy_x_4 of { happy_var_4 ->- happyIn92- (happy_var_1 `snoc` (happy_var_3,happy_var_4)- ) `HappyStk` happyRest}}}--happyReduce_336 = happySpecReduce_2 86# happyReduction_336-happyReduction_336 happy_x_2- happy_x_1- = case happyOut94 happy_x_1 of { happy_var_1 ->- happyIn93- (reverse happy_var_1- )}--happyReduce_337 = happyMonadReduce 2# 86# happyReduction_337-happyReduction_337 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut125 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ \at -> [CMemberDesig happy_var_1 at])}- ) (\r -> happyReturn (happyIn93 r))--happyReduce_338 = happySpecReduce_1 86# happyReduction_338-happyReduction_338 happy_x_1- = case happyOut96 happy_x_1 of { happy_var_1 ->- happyIn93- ([happy_var_1]- )}--happyReduce_339 = happySpecReduce_1 87# happyReduction_339-happyReduction_339 happy_x_1- = case happyOut95 happy_x_1 of { happy_var_1 ->- happyIn94- (singleton happy_var_1- )}--happyReduce_340 = happySpecReduce_2 87# happyReduction_340-happyReduction_340 happy_x_2- happy_x_1- = case happyOut94 happy_x_1 of { happy_var_1 ->- case happyOut95 happy_x_2 of { happy_var_2 ->- happyIn94- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_341 = happyMonadReduce 3# 88# happyReduction_341-happyReduction_341 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CArrDesig happy_var_2)}}- ) (\r -> happyReturn (happyIn95 r))--happyReduce_342 = happyMonadReduce 2# 88# happyReduction_342-happyReduction_342 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut125 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CMemberDesig happy_var_2)}}- ) (\r -> happyReturn (happyIn95 r))--happyReduce_343 = happySpecReduce_1 88# happyReduction_343-happyReduction_343 happy_x_1- = case happyOut96 happy_x_1 of { happy_var_1 ->- happyIn95- (happy_var_1- )}--happyReduce_344 = happyMonadReduce 5# 89# happyReduction_344-happyReduction_344 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_2 of { happy_var_2 ->- case happyOut121 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CRangeDesig happy_var_2 happy_var_4)}}}- ) (\r -> happyReturn (happyIn96 r))--happyReduce_345 = happyMonadReduce 1# 90# happyReduction_345-happyReduction_345 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) ->- ( withNodeInfo happy_var_1 $ CVar happy_var_1)}- ) (\r -> happyReturn (happyIn97 r))--happyReduce_346 = happySpecReduce_1 90# happyReduction_346-happyReduction_346 happy_x_1- = case happyOut122 happy_x_1 of { happy_var_1 ->- happyIn97- (CConst happy_var_1- )}--happyReduce_347 = happySpecReduce_1 90# happyReduction_347-happyReduction_347 happy_x_1- = case happyOut123 happy_x_1 of { happy_var_1 ->- happyIn97- (CConst (liftStrLit happy_var_1)- )}--happyReduce_348 = happySpecReduce_3 90# happyReduction_348-happyReduction_348 happy_x_3- happy_x_2- happy_x_1- = case happyOut117 happy_x_2 of { happy_var_2 ->- happyIn97- (happy_var_2- )}--happyReduce_349 = happyMonadReduce 3# 90# happyReduction_349-happyReduction_349 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut14 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CStatExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn97 r))--happyReduce_350 = happyMonadReduce 6# 90# happyReduction_350-happyReduction_350 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut115 happy_x_3 of { happy_var_3 ->- case happyOut83 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinVaArg happy_var_3 happy_var_5)}}}- ) (\r -> happyReturn (happyIn97 r))--happyReduce_351 = happyMonadReduce 6# 90# happyReduction_351-happyReduction_351 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_3 of { happy_var_3 ->- case happyOut98 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinOffsetOf happy_var_3 (reverse happy_var_5))}}}- ) (\r -> happyReturn (happyIn97 r))--happyReduce_352 = happyMonadReduce 6# 90# happyReduction_352-happyReduction_352 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_3 of { happy_var_3 ->- case happyOut83 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinTypesCompatible happy_var_3 happy_var_5)}}}- ) (\r -> happyReturn (happyIn97 r))--happyReduce_353 = happyMonadReduce 1# 91# happyReduction_353-happyReduction_353 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut125 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ singleton . CMemberDesig happy_var_1)}- ) (\r -> happyReturn (happyIn98 r))--happyReduce_354 = happyMonadReduce 3# 91# happyReduction_354-happyReduction_354 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut98 happy_x_1 of { happy_var_1 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_3 $ (happy_var_1 `snoc`) . CMemberDesig happy_var_3)}}- ) (\r -> happyReturn (happyIn98 r))--happyReduce_355 = happyMonadReduce 4# 91# happyReduction_355-happyReduction_355 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut98 happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_3 $ (happy_var_1 `snoc`) . CArrDesig happy_var_3)}}- ) (\r -> happyReturn (happyIn98 r))--happyReduce_356 = happySpecReduce_1 92# happyReduction_356-happyReduction_356 happy_x_1- = case happyOut97 happy_x_1 of { happy_var_1 ->- happyIn99- (happy_var_1- )}--happyReduce_357 = happyMonadReduce 4# 92# happyReduction_357-happyReduction_357 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut99 happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CIndex happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_358 = happyMonadReduce 3# 92# happyReduction_358-happyReduction_358 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut99 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CCall happy_var_1 [])}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_359 = happyMonadReduce 4# 92# happyReduction_359-happyReduction_359 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut99 happy_x_1 of { happy_var_1 ->- case happyOut100 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CCall happy_var_1 (reverse happy_var_3))}}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_360 = happyMonadReduce 3# 92# happyReduction_360-happyReduction_360 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut99 happy_x_1 of { happy_var_1 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CMember happy_var_1 happy_var_3 False)}}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_361 = happyMonadReduce 3# 92# happyReduction_361-happyReduction_361 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut99 happy_x_1 of { happy_var_1 ->- case happyOut125 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CMember happy_var_1 happy_var_3 True)}}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_362 = happyMonadReduce 2# 92# happyReduction_362-happyReduction_362 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut99 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CUnary CPostIncOp happy_var_1)}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_363 = happyMonadReduce 2# 92# happyReduction_363-happyReduction_363 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut99 happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ CUnary CPostDecOp happy_var_1)}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_364 = happyMonadReduce 6# 92# happyReduction_364-happyReduction_364 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_2 of { happy_var_2 ->- case happyOut92 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CCompoundLit happy_var_2 (reverse happy_var_5))}}}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_365 = happyMonadReduce 7# 92# happyReduction_365-happyReduction_365 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_2 of { happy_var_2 ->- case happyOut92 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CCompoundLit happy_var_2 (reverse happy_var_5))}}}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_366 = happySpecReduce_1 93# happyReduction_366-happyReduction_366 happy_x_1- = case happyOut115 happy_x_1 of { happy_var_1 ->- happyIn100- (singleton happy_var_1- )}--happyReduce_367 = happySpecReduce_3 93# happyReduction_367-happyReduction_367 happy_x_3- happy_x_2- happy_x_1- = case happyOut100 happy_x_1 of { happy_var_1 ->- case happyOut115 happy_x_3 of { happy_var_3 ->- happyIn100- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_368 = happySpecReduce_1 94# happyReduction_368-happyReduction_368 happy_x_1- = case happyOut99 happy_x_1 of { happy_var_1 ->- happyIn101- (happy_var_1- )}--happyReduce_369 = happyMonadReduce 2# 94# happyReduction_369-happyReduction_369 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut101 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CUnary CPreIncOp happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_370 = happyMonadReduce 2# 94# happyReduction_370-happyReduction_370 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut101 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CUnary CPreDecOp happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_371 = happySpecReduce_2 94# happyReduction_371-happyReduction_371 happy_x_2- happy_x_1- = case happyOut103 happy_x_2 of { happy_var_2 ->- happyIn101- (happy_var_2- )}--happyReduce_372 = happyMonadReduce 2# 94# happyReduction_372-happyReduction_372 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut102 happy_x_1 of { happy_var_1 ->- case happyOut103 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CUnary (unL happy_var_1) happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_373 = happyMonadReduce 2# 94# happyReduction_373-happyReduction_373 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut101 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CSizeofExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_374 = happyMonadReduce 4# 94# happyReduction_374-happyReduction_374 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CSizeofType happy_var_3)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_375 = happyMonadReduce 2# 94# happyReduction_375-happyReduction_375 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut101 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CAlignofExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_376 = happyMonadReduce 4# 94# happyReduction_376-happyReduction_376 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CAlignofType happy_var_3)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_377 = happyMonadReduce 2# 94# happyReduction_377-happyReduction_377 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut101 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CComplexReal happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_378 = happyMonadReduce 2# 94# happyReduction_378-happyReduction_378 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut101 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CComplexImag happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_379 = happyMonadReduce 2# 94# happyReduction_379-happyReduction_379 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut125 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ CLabAddrExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn101 r))--happyReduce_380 = happySpecReduce_1 95# happyReduction_380-happyReduction_380 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn102- (L CAdrOp (posOf happy_var_1)- )}--happyReduce_381 = happySpecReduce_1 95# happyReduction_381-happyReduction_381 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn102- (L CIndOp (posOf happy_var_1)- )}--happyReduce_382 = happySpecReduce_1 95# happyReduction_382-happyReduction_382 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn102- (L CPlusOp (posOf happy_var_1)- )}--happyReduce_383 = happySpecReduce_1 95# happyReduction_383-happyReduction_383 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn102- (L CMinOp (posOf happy_var_1)- )}--happyReduce_384 = happySpecReduce_1 95# happyReduction_384-happyReduction_384 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn102- (L CCompOp (posOf happy_var_1)- )}--happyReduce_385 = happySpecReduce_1 95# happyReduction_385-happyReduction_385 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn102- (L CNegOp (posOf happy_var_1)- )}--happyReduce_386 = happySpecReduce_1 96# happyReduction_386-happyReduction_386 happy_x_1- = case happyOut101 happy_x_1 of { happy_var_1 ->- happyIn103- (happy_var_1- )}--happyReduce_387 = happyMonadReduce 4# 96# happyReduction_387-happyReduction_387 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut83 happy_x_2 of { happy_var_2 ->- case happyOut103 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CCast happy_var_2 happy_var_4)}}}- ) (\r -> happyReturn (happyIn103 r))--happyReduce_388 = happySpecReduce_1 97# happyReduction_388-happyReduction_388 happy_x_1- = case happyOut103 happy_x_1 of { happy_var_1 ->- happyIn104- (happy_var_1- )}--happyReduce_389 = happyMonadReduce 3# 97# happyReduction_389-happyReduction_389 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 ->- case happyOut103 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CMulOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_390 = happyMonadReduce 3# 97# happyReduction_390-happyReduction_390 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 ->- case happyOut103 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CDivOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_391 = happyMonadReduce 3# 97# happyReduction_391-happyReduction_391 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 ->- case happyOut103 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CRmdOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_392 = happySpecReduce_1 98# happyReduction_392-happyReduction_392 happy_x_1- = case happyOut104 happy_x_1 of { happy_var_1 ->- happyIn105- (happy_var_1- )}--happyReduce_393 = happyMonadReduce 3# 98# happyReduction_393-happyReduction_393 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut105 happy_x_1 of { happy_var_1 ->- case happyOut104 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CAddOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn105 r))--happyReduce_394 = happyMonadReduce 3# 98# happyReduction_394-happyReduction_394 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut105 happy_x_1 of { happy_var_1 ->- case happyOut104 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CSubOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn105 r))--happyReduce_395 = happySpecReduce_1 99# happyReduction_395-happyReduction_395 happy_x_1- = case happyOut105 happy_x_1 of { happy_var_1 ->- happyIn106- (happy_var_1- )}--happyReduce_396 = happyMonadReduce 3# 99# happyReduction_396-happyReduction_396 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut106 happy_x_1 of { happy_var_1 ->- case happyOut105 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CShlOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_397 = happyMonadReduce 3# 99# happyReduction_397-happyReduction_397 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut106 happy_x_1 of { happy_var_1 ->- case happyOut105 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CShrOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_398 = happySpecReduce_1 100# happyReduction_398-happyReduction_398 happy_x_1- = case happyOut106 happy_x_1 of { happy_var_1 ->- happyIn107- (happy_var_1- )}--happyReduce_399 = happyMonadReduce 3# 100# happyReduction_399-happyReduction_399 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut107 happy_x_1 of { happy_var_1 ->- case happyOut106 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CLeOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn107 r))--happyReduce_400 = happyMonadReduce 3# 100# happyReduction_400-happyReduction_400 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut107 happy_x_1 of { happy_var_1 ->- case happyOut106 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CGrOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn107 r))--happyReduce_401 = happyMonadReduce 3# 100# happyReduction_401-happyReduction_401 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut107 happy_x_1 of { happy_var_1 ->- case happyOut106 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CLeqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn107 r))--happyReduce_402 = happyMonadReduce 3# 100# happyReduction_402-happyReduction_402 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut107 happy_x_1 of { happy_var_1 ->- case happyOut106 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CGeqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn107 r))--happyReduce_403 = happySpecReduce_1 101# happyReduction_403-happyReduction_403 happy_x_1- = case happyOut107 happy_x_1 of { happy_var_1 ->- happyIn108- (happy_var_1- )}--happyReduce_404 = happyMonadReduce 3# 101# happyReduction_404-happyReduction_404 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut108 happy_x_1 of { happy_var_1 ->- case happyOut107 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CEqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn108 r))--happyReduce_405 = happyMonadReduce 3# 101# happyReduction_405-happyReduction_405 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut108 happy_x_1 of { happy_var_1 ->- case happyOut107 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CNeqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn108 r))--happyReduce_406 = happySpecReduce_1 102# happyReduction_406-happyReduction_406 happy_x_1- = case happyOut108 happy_x_1 of { happy_var_1 ->- happyIn109- (happy_var_1- )}--happyReduce_407 = happyMonadReduce 3# 102# happyReduction_407-happyReduction_407 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut109 happy_x_1 of { happy_var_1 ->- case happyOut108 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CAndOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn109 r))--happyReduce_408 = happySpecReduce_1 103# happyReduction_408-happyReduction_408 happy_x_1- = case happyOut109 happy_x_1 of { happy_var_1 ->- happyIn110- (happy_var_1- )}--happyReduce_409 = happyMonadReduce 3# 103# happyReduction_409-happyReduction_409 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut110 happy_x_1 of { happy_var_1 ->- case happyOut109 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CXorOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn110 r))--happyReduce_410 = happySpecReduce_1 104# happyReduction_410-happyReduction_410 happy_x_1- = case happyOut110 happy_x_1 of { happy_var_1 ->- happyIn111- (happy_var_1- )}--happyReduce_411 = happyMonadReduce 3# 104# happyReduction_411-happyReduction_411 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut111 happy_x_1 of { happy_var_1 ->- case happyOut110 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary COrOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn111 r))--happyReduce_412 = happySpecReduce_1 105# happyReduction_412-happyReduction_412 happy_x_1- = case happyOut111 happy_x_1 of { happy_var_1 ->- happyIn112- (happy_var_1- )}--happyReduce_413 = happyMonadReduce 3# 105# happyReduction_413-happyReduction_413 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut112 happy_x_1 of { happy_var_1 ->- case happyOut111 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CLndOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn112 r))--happyReduce_414 = happySpecReduce_1 106# happyReduction_414-happyReduction_414 happy_x_1- = case happyOut112 happy_x_1 of { happy_var_1 ->- happyIn113- (happy_var_1- )}--happyReduce_415 = happyMonadReduce 3# 106# happyReduction_415-happyReduction_415 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut113 happy_x_1 of { happy_var_1 ->- case happyOut112 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CBinary CLorOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn113 r))--happyReduce_416 = happySpecReduce_1 107# happyReduction_416-happyReduction_416 happy_x_1- = case happyOut113 happy_x_1 of { happy_var_1 ->- happyIn114- (happy_var_1- )}--happyReduce_417 = happyMonadReduce 5# 107# happyReduction_417-happyReduction_417 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut113 happy_x_1 of { happy_var_1 ->- case happyOut117 happy_x_3 of { happy_var_3 ->- case happyOut114 happy_x_5 of { happy_var_5 ->- ( withNodeInfo happy_var_1 $ CCond happy_var_1 (Just happy_var_3) happy_var_5)}}}- ) (\r -> happyReturn (happyIn114 r))--happyReduce_418 = happyMonadReduce 4# 107# happyReduction_418-happyReduction_418 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut113 happy_x_1 of { happy_var_1 ->- case happyOut114 happy_x_4 of { happy_var_4 ->- ( withNodeInfo happy_var_1 $ CCond happy_var_1 Nothing happy_var_4)}}- ) (\r -> happyReturn (happyIn114 r))--happyReduce_419 = happySpecReduce_1 108# happyReduction_419-happyReduction_419 happy_x_1- = case happyOut114 happy_x_1 of { happy_var_1 ->- happyIn115- (happy_var_1- )}--happyReduce_420 = happyMonadReduce 3# 108# happyReduction_420-happyReduction_420 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut101 happy_x_1 of { happy_var_1 ->- case happyOut116 happy_x_2 of { happy_var_2 ->- case happyOut115 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ CAssign (unL happy_var_2) happy_var_1 happy_var_3)}}}- ) (\r -> happyReturn (happyIn115 r))--happyReduce_421 = happySpecReduce_1 109# happyReduction_421-happyReduction_421 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CAssignOp (posOf happy_var_1)- )}--happyReduce_422 = happySpecReduce_1 109# happyReduction_422-happyReduction_422 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CMulAssOp (posOf happy_var_1)- )}--happyReduce_423 = happySpecReduce_1 109# happyReduction_423-happyReduction_423 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CDivAssOp (posOf happy_var_1)- )}--happyReduce_424 = happySpecReduce_1 109# happyReduction_424-happyReduction_424 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CRmdAssOp (posOf happy_var_1)- )}--happyReduce_425 = happySpecReduce_1 109# happyReduction_425-happyReduction_425 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CAddAssOp (posOf happy_var_1)- )}--happyReduce_426 = happySpecReduce_1 109# happyReduction_426-happyReduction_426 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CSubAssOp (posOf happy_var_1)- )}--happyReduce_427 = happySpecReduce_1 109# happyReduction_427-happyReduction_427 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CShlAssOp (posOf happy_var_1)- )}--happyReduce_428 = happySpecReduce_1 109# happyReduction_428-happyReduction_428 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CShrAssOp (posOf happy_var_1)- )}--happyReduce_429 = happySpecReduce_1 109# happyReduction_429-happyReduction_429 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CAndAssOp (posOf happy_var_1)- )}--happyReduce_430 = happySpecReduce_1 109# happyReduction_430-happyReduction_430 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L CXorAssOp (posOf happy_var_1)- )}--happyReduce_431 = happySpecReduce_1 109# happyReduction_431-happyReduction_431 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn116- (L COrAssOp (posOf happy_var_1)- )}--happyReduce_432 = happySpecReduce_1 110# happyReduction_432-happyReduction_432 happy_x_1- = case happyOut115 happy_x_1 of { happy_var_1 ->- happyIn117- (happy_var_1- )}--happyReduce_433 = happyMonadReduce 3# 110# happyReduction_433-happyReduction_433 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut115 happy_x_1 of { happy_var_1 ->- case happyOut118 happy_x_3 of { happy_var_3 ->- ( let es = reverse happy_var_3 in withNodeInfo es $ CComma (happy_var_1:es))}}- ) (\r -> happyReturn (happyIn117 r))--happyReduce_434 = happySpecReduce_1 111# happyReduction_434-happyReduction_434 happy_x_1- = case happyOut115 happy_x_1 of { happy_var_1 ->- happyIn118- (singleton happy_var_1- )}--happyReduce_435 = happySpecReduce_3 111# happyReduction_435-happyReduction_435 happy_x_3- happy_x_2- happy_x_1- = case happyOut118 happy_x_1 of { happy_var_1 ->- case happyOut115 happy_x_3 of { happy_var_3 ->- happyIn118- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_436 = happySpecReduce_0 112# happyReduction_436-happyReduction_436 = happyIn119- (Nothing- )--happyReduce_437 = happySpecReduce_1 112# happyReduction_437-happyReduction_437 happy_x_1- = case happyOut117 happy_x_1 of { happy_var_1 ->- happyIn119- (Just happy_var_1- )}--happyReduce_438 = happySpecReduce_0 113# happyReduction_438-happyReduction_438 = happyIn120- (Nothing- )--happyReduce_439 = happySpecReduce_1 113# happyReduction_439-happyReduction_439 happy_x_1- = case happyOut115 happy_x_1 of { happy_var_1 ->- happyIn120- (Just happy_var_1- )}--happyReduce_440 = happySpecReduce_1 114# happyReduction_440-happyReduction_440 happy_x_1- = case happyOut114 happy_x_1 of { happy_var_1 ->- happyIn121- (happy_var_1- )}--happyReduce_441 = happyMonadReduce 1# 115# happyReduction_441-happyReduction_441 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokILit _ i -> CIntConst i)}- ) (\r -> happyReturn (happyIn122 r))--happyReduce_442 = happyMonadReduce 1# 115# happyReduction_442-happyReduction_442 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokCLit _ c -> CCharConst c)}- ) (\r -> happyReturn (happyIn122 r))--happyReduce_443 = happyMonadReduce 1# 115# happyReduction_443-happyReduction_443 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokFLit _ f -> CFloatConst f)}- ) (\r -> happyReturn (happyIn122 r))--happyReduce_444 = happyMonadReduce 1# 116# happyReduction_444-happyReduction_444 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokSLit _ s -> CStrLit s)}- ) (\r -> happyReturn (happyIn123 r))--happyReduce_445 = happyMonadReduce 2# 116# happyReduction_445-happyReduction_445 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- case happyOut124 happy_x_2 of { happy_var_2 ->- ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokSLit _ s -> CStrLit (concatCStrings (s : reverse happy_var_2)))}}- ) (\r -> happyReturn (happyIn123 r))--happyReduce_446 = happySpecReduce_1 117# happyReduction_446-happyReduction_446 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 ->- happyIn124- (case happy_var_1 of CTokSLit _ s -> singleton s- )}--happyReduce_447 = happySpecReduce_2 117# happyReduction_447-happyReduction_447 happy_x_2- happy_x_1- = case happyOut124 happy_x_1 of { happy_var_1 ->- case happyOutTok happy_x_2 of { happy_var_2 ->- happyIn124- (case happy_var_2 of CTokSLit _ s -> happy_var_1 `snoc` s- )}}--happyReduce_448 = happySpecReduce_1 118# happyReduction_448-happyReduction_448 happy_x_1- = case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) ->- happyIn125- (happy_var_1- )}--happyReduce_449 = happySpecReduce_1 118# happyReduction_449-happyReduction_449 happy_x_1- = case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) ->- happyIn125- (happy_var_1- )}--happyReduce_450 = happySpecReduce_0 119# happyReduction_450-happyReduction_450 = happyIn126- ([]- )--happyReduce_451 = happySpecReduce_1 119# happyReduction_451-happyReduction_451 happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 ->- happyIn126- (happy_var_1- )}--happyReduce_452 = happySpecReduce_1 120# happyReduction_452-happyReduction_452 happy_x_1- = case happyOut128 happy_x_1 of { happy_var_1 ->- happyIn127- (happy_var_1- )}--happyReduce_453 = happySpecReduce_2 120# happyReduction_453-happyReduction_453 happy_x_2- happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 ->- case happyOut128 happy_x_2 of { happy_var_2 ->- happyIn127- (happy_var_1 ++ happy_var_2- )}}--happyReduce_454 = happyReduce 6# 121# happyReduction_454-happyReduction_454 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut129 happy_x_4 of { happy_var_4 ->- happyIn128- (reverse happy_var_4- ) `HappyStk` happyRest}--happyReduce_455 = happySpecReduce_1 122# happyReduction_455-happyReduction_455 happy_x_1- = case happyOut130 happy_x_1 of { happy_var_1 ->- happyIn129- (case happy_var_1 of Nothing -> empty; Just attr -> singleton attr- )}--happyReduce_456 = happySpecReduce_3 122# happyReduction_456-happyReduction_456 happy_x_3- happy_x_2- happy_x_1- = case happyOut129 happy_x_1 of { happy_var_1 ->- case happyOut130 happy_x_3 of { happy_var_3 ->- happyIn129- ((maybe id (flip snoc) happy_var_3) happy_var_1- )}}--happyReduce_457 = happySpecReduce_0 123# happyReduction_457-happyReduction_457 = happyIn130- (Nothing- )--happyReduce_458 = happyMonadReduce 1# 123# happyReduction_458-happyReduction_458 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) ->- ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 [])}- ) (\r -> happyReturn (happyIn130 r))--happyReduce_459 = happyMonadReduce 1# 123# happyReduction_459-happyReduction_459 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 ->- ( withNodeInfo happy_var_1 $ Just . CAttr (internalIdent "const") [])}- ) (\r -> happyReturn (happyIn130 r))--happyReduce_460 = happyMonadReduce 4# 123# happyReduction_460-happyReduction_460 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) ->- case happyOut131 happy_x_3 of { happy_var_3 ->- ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 (reverse happy_var_3))}}- ) (\r -> happyReturn (happyIn130 r))--happyReduce_461 = happyMonadReduce 3# 123# happyReduction_461-happyReduction_461 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) ->- ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 [])}- ) (\r -> happyReturn (happyIn130 r))--happyReduce_462 = happySpecReduce_1 124# happyReduction_462-happyReduction_462 happy_x_1- = case happyOut121 happy_x_1 of { happy_var_1 ->- happyIn131- (singleton happy_var_1- )}--happyReduce_463 = happySpecReduce_3 124# happyReduction_463-happyReduction_463 happy_x_3- happy_x_2- happy_x_1- = case happyOut131 happy_x_1 of { happy_var_1 ->- case happyOut121 happy_x_3 of { happy_var_3 ->- happyIn131- (happy_var_1 `snoc` happy_var_3- )}}--happyNewToken action sts stk- = lexC(\tk ->- let cont i = happyDoAction i tk action sts stk in- case tk of {- CTokEof -> happyDoAction 101# tk action sts stk;- CTokLParen _ -> cont 1#;- CTokRParen _ -> cont 2#;- CTokLBracket _ -> cont 3#;- CTokRBracket _ -> cont 4#;- CTokArrow _ -> cont 5#;- CTokDot _ -> cont 6#;- CTokExclam _ -> cont 7#;- CTokTilde _ -> cont 8#;- CTokInc _ -> cont 9#;- CTokDec _ -> cont 10#;- CTokPlus _ -> cont 11#;- CTokMinus _ -> cont 12#;- CTokStar _ -> cont 13#;- CTokSlash _ -> cont 14#;- CTokPercent _ -> cont 15#;- CTokAmper _ -> cont 16#;- CTokShiftL _ -> cont 17#;- CTokShiftR _ -> cont 18#;- CTokLess _ -> cont 19#;- CTokLessEq _ -> cont 20#;- CTokHigh _ -> cont 21#;- CTokHighEq _ -> cont 22#;- CTokEqual _ -> cont 23#;- CTokUnequal _ -> cont 24#;- CTokHat _ -> cont 25#;- CTokBar _ -> cont 26#;- CTokAnd _ -> cont 27#;- CTokOr _ -> cont 28#;- CTokQuest _ -> cont 29#;- CTokColon _ -> cont 30#;- CTokAssign _ -> cont 31#;- CTokPlusAss _ -> cont 32#;- CTokMinusAss _ -> cont 33#;- CTokStarAss _ -> cont 34#;- CTokSlashAss _ -> cont 35#;- CTokPercAss _ -> cont 36#;- CTokAmpAss _ -> cont 37#;- CTokHatAss _ -> cont 38#;- CTokBarAss _ -> cont 39#;- CTokSLAss _ -> cont 40#;- CTokSRAss _ -> cont 41#;- CTokComma _ -> cont 42#;- CTokSemic _ -> cont 43#;- CTokLBrace _ -> cont 44#;- CTokRBrace _ -> cont 45#;- CTokEllipsis _ -> cont 46#;- CTokAlignof _ -> cont 47#;- CTokAsm _ -> cont 48#;- CTokAuto _ -> cont 49#;- CTokBreak _ -> cont 50#;- CTokBool _ -> cont 51#;- CTokCase _ -> cont 52#;- CTokChar _ -> cont 53#;- CTokConst _ -> cont 54#;- CTokContinue _ -> cont 55#;- CTokComplex _ -> cont 56#;- CTokDefault _ -> cont 57#;- CTokDo _ -> cont 58#;- CTokDouble _ -> cont 59#;- CTokElse _ -> cont 60#;- CTokEnum _ -> cont 61#;- CTokExtern _ -> cont 62#;- CTokFloat _ -> cont 63#;- CTokFor _ -> cont 64#;- CTokGoto _ -> cont 65#;- CTokIf _ -> cont 66#;- CTokInline _ -> cont 67#;- CTokInt _ -> cont 68#;- CTokLong _ -> cont 69#;- CTokLabel _ -> cont 70#;- CTokRegister _ -> cont 71#;- CTokRestrict _ -> cont 72#;- CTokReturn _ -> cont 73#;- CTokShort _ -> cont 74#;- CTokSigned _ -> cont 75#;- CTokSizeof _ -> cont 76#;- CTokStatic _ -> cont 77#;- CTokStruct _ -> cont 78#;- CTokSwitch _ -> cont 79#;- CTokTypedef _ -> cont 80#;- CTokTypeof _ -> cont 81#;- CTokThread _ -> cont 82#;- CTokUnion _ -> cont 83#;- CTokUnsigned _ -> cont 84#;- CTokVoid _ -> cont 85#;- CTokVolatile _ -> cont 86#;- CTokWhile _ -> cont 87#;- CTokCLit _ _ -> cont 88#;- CTokILit _ _ -> cont 89#;- CTokFLit _ _ -> cont 90#;- CTokSLit _ _ -> cont 91#;- CTokIdent _ happy_dollar_dollar -> cont 92#;- CTokTyIdent _ happy_dollar_dollar -> cont 93#;- CTokGnuC GnuCAttrTok _ -> cont 94#;- CTokGnuC GnuCExtTok _ -> cont 95#;- CTokGnuC GnuCComplexReal _ -> cont 96#;- CTokGnuC GnuCComplexImag _ -> cont 97#;- CTokGnuC GnuCVaArg _ -> cont 98#;- CTokGnuC GnuCOffsetof _ -> cont 99#;- CTokGnuC GnuCTyCompat _ -> cont 100#;- _ -> happyError' tk- })--happyError_ tk = happyError' tk--happyThen :: () => P a -> (a -> P b) -> P b-happyThen = (>>=)-happyReturn :: () => a -> P a-happyReturn = (return)-happyThen1 = happyThen-happyReturn1 :: () => a -> P a-happyReturn1 = happyReturn-happyError' :: () => CToken -> P a-happyError' tk = (\token -> happyError) tk--translation_unit = happySomeParser where- happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut7 x))--external_declaration = happySomeParser where- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut9 x))--statement = happySomeParser where- happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut12 x))--expression = happySomeParser where- happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut117 x))--happySeq = happyDontSeq----- sometimes it is neccessary to reverse an unreversed list-reverseList :: [a] -> Reversed [a]-reverseList = Reversed . List.reverse---- We occasionally need things to have a location when they don't naturally--- have one built in as tokens and most AST elements do.----data Located a = L !a !Position--unL :: Located a -> a-unL (L a pos) = a--instance Pos (Located a) where- posOf (L _ pos) = pos---- FIXME: the next 3 inlines here increase the object file size by 70%--- Check whether the speed win is worth it-{-# INLINE withNodeInfo #-}-withNodeInfo :: Pos node => node -> (NodeInfo -> a) -> P a-withNodeInfo node mkAttrNode = do- name <- getNewName- lastTok <- getSavedToken- let firstPos = posOf node- let attrs = mkNodeInfo' firstPos (posLenOfTok $! lastTok) name- attrs `seq` return (mkAttrNode attrs)--{-# INLINE withLength #-}-withLength :: NodeInfo -> (NodeInfo -> a) -> P a-withLength nodeinfo mkAttrNode = do- lastTok <- getSavedToken- let firstPos = posOfNode nodeinfo- let attrs = mkNodeInfo' firstPos (posLenOfTok $! lastTok)- (maybe (error "nameOfNode") id (nameOfNode nodeinfo))- attrs `seq` return (mkAttrNode attrs)--data CDeclrR = CDeclrR (Maybe Ident) (Reversed [CDerivedDeclr]) (Maybe CStrLit) [CAttr] NodeInfo-reverseDeclr :: CDeclrR -> CDeclr-reverseDeclr (CDeclrR ide reversedDDs asmname cattrs at)- = CDeclr ide (reverse reversedDDs) asmname cattrs at-instance CNode (CDeclrR) where- nodeInfo (CDeclrR _ _ _ _ n) = n-instance Pos (CDeclrR) where- posOf (CDeclrR _ _ _ _ n) = posOf n--{-# INLINE withAttribute #-}-withAttribute :: Pos node => node -> [CAttr] -> (NodeInfo -> CDeclrR) -> P CDeclrR-withAttribute node cattrs mkDeclrNode = do- name <- getNewName- let attrs = mkNodeInfo (posOf node) name- let newDeclr = appendDeclrAttrs cattrs $ mkDeclrNode attrs- attrs `seq` newDeclr `seq` return newDeclr---- postfixing variant-{-# INLINE withAttributePF #-}-withAttributePF :: Pos node => node -> [CAttr] -> (NodeInfo -> CDeclrR -> CDeclrR) -> P (CDeclrR -> CDeclrR)-withAttributePF node cattrs mkDeclrCtor = do- name <- getNewName- let attrs = mkNodeInfo (posOf node) name- let newDeclr = appendDeclrAttrs cattrs . mkDeclrCtor attrs- attrs `seq` newDeclr `seq` return newDeclr---- add top level attributes for a declarator.------ In the following example------ > int declr1, __attribute__((a1)) * __attribute__((a2)) y() __asm__("$" "y") __attribute__((a3));------ the attributes `a1' and `a3' are top-level attributes for y.--- The (pseudo)-AST for the second declarator is------ > CDeclr "y"--- > [CFunDeclr ..., CPtrDeclr __attribute__((a2)) ... ]--- > (asm "$y")--- > [__attribute__((a1)), __attribute__((a3)) ]------ So assembler names and preceeding and trailing attributes are recorded in object declarator.----appendObjAttrs :: [CAttr] -> CDeclr -> CDeclr-appendObjAttrs newAttrs (CDeclr ident indirections asmname cAttrs at)- = CDeclr ident indirections asmname (cAttrs ++ newAttrs) at-appendObjAttrsR :: [CAttr] -> CDeclrR -> CDeclrR-appendObjAttrsR newAttrs (CDeclrR ident indirections asmname cAttrs at)- = CDeclrR ident indirections asmname (cAttrs ++ newAttrs) at--setAsmName :: Maybe CStrLit -> CDeclrR -> P CDeclrR-setAsmName mAsmName (CDeclrR ident indirections oldName cattrs at) =- case combineName mAsmName oldName of- Left (n1,n2) -> failP (posOf n2) ["Duplicate assembler name: ",showName n1,showName n2]- Right newName -> return $ CDeclrR ident indirections newName cattrs at- where- combineName Nothing Nothing = Right Nothing- combineName Nothing oldname@(Just _) = Right oldname- combineName newname@(Just _) Nothing = Right newname- combineName (Just n1) (Just n2) = Left (n1,n2)- showName (CStrLit cstr _) = show cstr--withAsmNameAttrs :: (Maybe CStrLit, [CAttr]) -> CDeclrR -> P CDeclrR-withAsmNameAttrs (mAsmName, newAttrs) declr = setAsmName mAsmName (appendObjAttrsR newAttrs declr)--appendDeclrAttrs :: [CAttr] -> CDeclrR -> CDeclrR-appendDeclrAttrs newAttrs (CDeclrR ident (Reversed []) asmname cattrs at)- = CDeclrR ident empty asmname (cattrs ++ newAttrs) at-appendDeclrAttrs newAttrs (CDeclrR ident (Reversed (x:xs)) asmname cattrs at)- = CDeclrR ident (Reversed (appendAttrs x : xs)) asmname cattrs at where- appendAttrs (CPtrDeclr typeQuals at) = CPtrDeclr (typeQuals ++ map CAttrQual newAttrs) at- appendAttrs (CArrDeclr typeQuals arraySize at) = CArrDeclr (typeQuals ++ map CAttrQual newAttrs) arraySize at- appendAttrs (CFunDeclr parameters cattrs at) = CFunDeclr parameters (cattrs ++ newAttrs) at--ptrDeclr :: CDeclrR -> [CTypeQual] -> NodeInfo -> CDeclrR-ptrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals at- = CDeclrR ident (derivedDeclrs `snoc` CPtrDeclr tyquals at) asmname cattrs dat-funDeclr :: CDeclrR -> (Either [Ident] ([CDecl],Bool)) -> [CAttr] -> NodeInfo -> CDeclrR-funDeclr (CDeclrR ident derivedDeclrs asmname dcattrs dat) params cattrs at- = CDeclrR ident (derivedDeclrs `snoc` CFunDeclr params cattrs at) asmname dcattrs dat-arrDeclr :: CDeclrR -> [CTypeQual] -> Bool -> Bool -> Maybe CExpr -> NodeInfo -> CDeclrR-arrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals var_sized static_size size_expr_opt at- = arr_sz `seq` ( CDeclrR ident (derivedDeclrs `snoc` CArrDeclr tyquals arr_sz at) asmname cattrs dat )- where- arr_sz = case size_expr_opt of- Just e -> CArrSize static_size e- Nothing -> CNoArrSize var_sized--liftTypeQuals :: Reversed [CTypeQual] -> [CDeclSpec]-liftTypeQuals = map CTypeQual . reverse---- lift CAttrs to DeclSpecs----liftCAttrs :: [CAttr] -> [CDeclSpec]-liftCAttrs = map (CTypeQual . CAttrQual)---- when we parsed (decl_spec_1,...,decl_spec_n,attrs), add the __attributes__s to the declspec list--- needs special care when @decl_spec_n@ is a SUE definition-addTrailingAttrs :: Reversed [CDeclSpec] -> [CAttr] -> Reversed [CDeclSpec]-addTrailingAttrs declspecs new_attrs =- case viewr declspecs of- (specs_init, CTypeSpec (CSUType (CStruct tag name (Just def) def_attrs su_node) node))- -> (specs_init `snoc` CTypeSpec (CSUType (CStruct tag name (Just def) (def_attrs ++ new_attrs) su_node) node))- (specs_init, CTypeSpec (CEnumType (CEnum name (Just def) def_attrs e_node) node))- -> (specs_init `snoc` CTypeSpec (CEnumType (CEnum name (Just def) (def_attrs ++ new_attrs) e_node) node))- _ -> declspecs `rappend` (liftCAttrs new_attrs)---- convenient instance, the position of a list of things is the position of--- the first thing in the list----instance Pos a => Pos [a] where- posOf (x:_) = posOf x--instance Pos a => Pos (Reversed a) where- posOf (Reversed x) = posOf x--emptyDeclr :: CDeclrR-emptyDeclr = CDeclrR Nothing empty Nothing [] undefNode-mkVarDeclr :: Ident -> NodeInfo -> CDeclrR-mkVarDeclr ident = CDeclrR (Just ident) empty Nothing []---- Take the identifiers and use them to update the typedef'ed identifier set--- if the decl is defining a typedef then we add it to the set,--- if it's a var decl then that shadows typedefed identifiers----doDeclIdent :: [CDeclSpec] -> CDeclrR -> P ()-doDeclIdent declspecs (CDeclrR mIdent _ _ _ _) =- case mIdent of- Nothing -> return ()- Just ident | any iypedef declspecs -> addTypedef ident- | otherwise -> shadowTypedef ident-- where iypedef (CStorageSpec (CTypedef _)) = True- iypedef _ = False--doFuncParamDeclIdent :: CDeclr -> P ()-doFuncParamDeclIdent (CDeclr _ (CFunDeclr params _ _ : _) _ _ _) =- sequence_- [ case getCDeclrIdent declr of- Nothing -> return ()- Just ident -> shadowTypedef ident- | CDecl _ dle _ <- either (const []) fst params- , (Just declr, _, _) <- dle ]-doFuncParamDeclIdent _ = return ()---- extract all identifiers-getCDeclrIdent :: CDeclr -> Maybe Ident-getCDeclrIdent (CDeclr mIdent _ _ _ _) = mIdent--happyError :: P a-happyError = parseError---- * public interface---- | @parseC input initialPos@ parses the given preprocessed C-source input and returns the AST or a list of parse errors.-parseC :: InputStream -> Position -> Either ParseError CTranslUnit-parseC input initialPosition =- fmap fst $ execParser translUnitP input initialPosition builtinTypeNames (namesStartingFrom 0)---- | @translUnitP@ provides a parser for a complete C translation unit, i.e. a list of external declarations.-translUnitP :: P CTranslUnit-translUnitP = translation_unit--- | @extDeclP@ provides a parser for an external (file-scope) declaration-extDeclP :: P CExtDecl-extDeclP = external_declaration--- | @statementP@ provides a parser for C statements-statementP :: P CStat-statementP = statement--- | @expressionP@ provides a parser for C expressions-expressionP :: P CExpr-expressionP = expression-{-# LINE 1 "GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command line>" #-}-{-# LINE 1 "GenericTemplate.hs" #-}--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp--{-# LINE 28 "GenericTemplate.hs" #-}---data Happy_IntList = HappyCons Int# Happy_IntList------{-# LINE 49 "GenericTemplate.hs" #-}--{-# LINE 59 "GenericTemplate.hs" #-}--{-# LINE 68 "GenericTemplate.hs" #-}--infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is 0#, it means we've just accepted a partial--- parse (a %partial parser). We must ignore the saved token on the top of--- the stack in this case.-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =- happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) =- (happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st- = {- nothing -}--- case action of- 0# -> {- nothing -}- happyFail i tk st- -1# -> {- nothing -}- happyAccept i tk st- n | (n <# (0# :: Int#)) -> {- nothing -}-- (happyReduceArr ! rule) i tk st- where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))- n -> {- nothing -}--- happyShift new_state i tk st- where new_state = (n -# (1# :: Int#))- where off = indexShortOffAddr happyActOffsets st- off_i = (off +# i)- check = if (off_i >=# (0# :: Int#))- then (indexShortOffAddr happyCheck off_i ==# i)- else False- action | check = indexShortOffAddr happyTable off_i- | otherwise = indexShortOffAddr happyDefActions st--{-# LINE 127 "GenericTemplate.hs" #-}---indexShortOffAddr (HappyA# arr) off =--- #if __GLASGOW_HASKELL__ > 500- narrow16Int# i--- #elif __GLASGOW_HASKELL__ == 500- intToInt16# i--- #else- (i `iShiftL#` 16#) `iShiftRA#` 16#--- #endif- where--- #if __GLASGOW_HASKELL__ >= 503- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)--- #else- i = word2Int# ((high `shiftL#` 8#) `or#` low)--- #endif- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- low = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 2#------data HappyAddr = HappyA# Addr#------------------------------------------------------------------------------------- HappyState data type (not arrays)--{-# LINE 170 "GenericTemplate.hs" #-}---------------------------------------------------------------------------------- Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =- let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in--- trace "shifting the error token" $- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')- = let r = fn v1 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')- = let r = fn v1 v2 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')- = let r = fn v1 v2 v3 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyReduce k nt fn j tk st sts stk- = case happyDrop (k -# (1# :: Int#)) sts of- sts1@((HappyCons (st1@(action)) (_))) ->- let r = fn stk in -- it doesn't hurt to always seq here...- happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))- where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk--happyMonad2Reduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))- where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk-- off = indexShortOffAddr happyGotoOffsets st1- off_i = (off +# nt)- new_state = indexShortOffAddr happyTable off_i-----happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st =- {- nothing -}- happyDoAction j tk new_state- where off = indexShortOffAddr happyGotoOffsets st- off_i = (off +# nt)- new_state = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (0# is the error token)---- parse error if we are in recovery and we fail again-happyFail 0# tk old_st _ stk =--- trace "failing" $- happyError_ tk--{- We don't need state discarding for our restricted implementation of- "error". In fact, it can cause some bogus parses, so I've disabled it- for now --SDM---- discard a state-happyFail 0# tk old_st (HappyCons ((action)) (sts))- (saved_tok `HappyStk` _ `HappyStk` stk) =--- trace ("discarding state, depth " ++ show (length stk)) $- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,--- save the old token and carry on.-happyFail i tk (action) sts stk =--- trace "entering error recovery" $- happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll = error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Int# -> a -> a-happyTcHack x y = y-{-# INLINE happyTcHack #-}----------------------------------------------------------------------------------- Seq-ing. If the --strict flag is given, then Happy emits--- happySeq = happyDoSeq--- otherwise it emits--- happySeq = happyDontSeq--happyDoSeq, happyDontSeq :: a -> b -> b-happyDoSeq a b = a `seq` b-happyDontSeq a b = b---------------------------------------------------------------------------------- Don't inline any functions from the template. GHC has a nasty habit--- of deciding to inline happyGoto everywhere, which increases the size of--- the generated parser quite a bit.---{-# NOINLINE happyDoAction #-}-{-# NOINLINE happyTable #-}-{-# NOINLINE happyCheck #-}-{-# NOINLINE happyActOffsets #-}-{-# NOINLINE happyGotoOffsets #-}-{-# NOINLINE happyDefActions #-}--{-# NOINLINE happyShift #-}-{-# NOINLINE happySpecReduce_0 #-}-{-# NOINLINE happySpecReduce_1 #-}-{-# NOINLINE happySpecReduce_2 #-}-{-# NOINLINE happySpecReduce_3 #-}-{-# NOINLINE happyReduce #-}-{-# NOINLINE happyMonadReduce #-}-{-# NOINLINE happyGoto #-}-{-# NOINLINE happyFail #-}---- end of Happy Template.
− Test/examples/ClassInstType.hs
@@ -1,17 +0,0 @@-module ClassInstType where - -class Dir d where - localDir :: d -> IO FilePath - -instance Dir Directory where - localDir (Local f) = return f - - localDir (Darcs {url=url,darcsVersion=Patch patch,subDirectory=subDir}) = do - tmp <- createTempDir 0 "haskelld" - darcsOut <- runDarcsCommand tmp "get" ["--lazy","--to-match","hash "++ patch,url,"fs"] - print darcsOut - let (ExitSuccess,"",out) = darcsOut - print out - return $ tmp </> "fs" </> subDir - -type URL = String
− Test/examples/DataHeadParen.hs
@@ -1,4 +0,0 @@-{-# LANGUAGE TypeOperators #-} -module DataHeadParen where - -data (a1 :< a2) = Foo
− Test/examples/Directory.hs
@@ -1,913 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}---------------------------------------------------------------------------------- |--- Module : System.Directory--- Copyright : (c) The University of Glasgow 2001--- License : BSD-style (see the file libraries/base/LICENSE)--- --- Maintainer : libraries@haskell.org--- Stability : stable--- Portability : portable------ System-independent interface to directory manipulation.-----------------------------------------------------------------------------------module System.Directory - ( - -- $intro-- -- * Actions on directories- createDirectory -- :: FilePath -> IO ()- , createDirectoryIfMissing -- :: Bool -> FilePath -> IO ()- , removeDirectory -- :: FilePath -> IO ()- , removeDirectoryRecursive -- :: FilePath -> IO ()- , renameDirectory -- :: FilePath -> FilePath -> IO ()-- , getDirectoryContents -- :: FilePath -> IO [FilePath]- , getCurrentDirectory -- :: IO FilePath- , setCurrentDirectory -- :: FilePath -> IO ()-- -- * Pre-defined directories- , getHomeDirectory- , getAppUserDataDirectory- , getUserDocumentsDirectory- , getTemporaryDirectory-- -- * Actions on files- , removeFile -- :: FilePath -> IO ()- , renameFile -- :: FilePath -> FilePath -> IO ()- , copyFile -- :: FilePath -> FilePath -> IO ()- - , canonicalizePath- , makeRelativeToCurrentDirectory- , findExecutable-- -- * Existence tests- , doesFileExist -- :: FilePath -> IO Bool- , doesDirectoryExist -- :: FilePath -> IO Bool-- -- * Permissions-- -- $permissions-- , Permissions(- Permissions,- readable, -- :: Permissions -> Bool- writable, -- :: Permissions -> Bool- executable, -- :: Permissions -> Bool- searchable -- :: Permissions -> Bool- )-- , getPermissions -- :: FilePath -> IO Permissions- , setPermissions -- :: FilePath -> Permissions -> IO ()- , copyPermissions-- -- * Timestamps-- , getModificationTime -- :: FilePath -> IO ClockTime- ) where--import Prelude hiding ( catch )-import qualified Prelude--import Control.Monad (guard)-import System.Environment ( getEnv )-import System.FilePath-import System.IO-import System.IO.Error hiding ( catch, try )-import Control.Monad ( when, unless )-import Control.Exception.Base--import Foreign-import Foreign.C--{-# CFILES cbits/directory.c #-}--import System.Time ( ClockTime(..) )--import GHC.IO.Exception ( IOException(..), IOErrorType(..), ioException )--import System.Posix.Types-import System.Posix.Internals-import qualified System.Win32 as Win32--{- $intro-A directory contains a series of entries, each of which is a named-reference to a file system object (file, directory etc.). Some-entries may be hidden, inaccessible, or have some administrative-function (e.g. `.' or `..' under POSIX-<http://www.opengroup.org/onlinepubs/009695399/>), but in -this standard all such entries are considered to form part of the-directory contents. Entries in sub-directories are not, however,-considered to form part of the directory contents.--Each file system object is referenced by a /path/. There is-normally at least one absolute path to each file system object. In-some operating systems, it may also be possible to have paths which-are relative to the current directory.--}---------------------------------------------------------------------------------- Permissions--{- $permissions-- The 'Permissions' type is used to record whether certain operations are- permissible on a file\/directory. 'getPermissions' and 'setPermissions'- get and set these permissions, respectively. Permissions apply both to- files and directories. For directories, the executable field will be- 'False', and for files the searchable field will be 'False'. Note that- directories may be searchable without being readable, if permission has- been given to use them as part of a path, but not to examine the - directory contents.--Note that to change some, but not all permissions, a construct on the following lines must be used. --> makeReadable f = do-> p <- getPermissions f-> setPermissions f (p {readable = True})---}--data Permissions- = Permissions {- readable, writable, - executable, searchable :: Bool - } deriving (Eq, Ord, Read, Show)--{- |The 'getPermissions' operation returns the-permissions for the file or directory.--The operation may fail with:--* 'isPermissionError' if the user is not permitted to access- the permissions; or--* 'isDoesNotExistError' if the file or directory does not exist.---}--getPermissions :: FilePath -> IO Permissions-getPermissions name = do- withFilePath name $ \s -> do- -- stat() does a better job of guessing the permissions on Windows- -- than access() does. e.g. for execute permission, it looks at the- -- filename extension :-)- --- -- I tried for a while to do this properly, using the Windows security API,- -- and eventually gave up. getPermissions is a flawed API anyway. -- SimonM- allocaBytes sizeof_stat $ \ p_stat -> do- throwErrnoIfMinus1_ "getPermissions" $ c_stat s p_stat- mode <- st_mode p_stat- let usr_read = mode .&. s_IRUSR- let usr_write = mode .&. s_IWUSR- let usr_exec = mode .&. s_IXUSR- let is_dir = mode .&. s_IFDIR- return (- Permissions {- readable = usr_read /= 0,- writable = usr_write /= 0,- executable = is_dir == 0 && usr_exec /= 0,- searchable = is_dir /= 0 && usr_exec /= 0- }- )--{- |The 'setPermissions' operation sets the-permissions for the file or directory.--The operation may fail with:--* 'isPermissionError' if the user is not permitted to set- the permissions; or--* 'isDoesNotExistError' if the file or directory does not exist.---}--setPermissions :: FilePath -> Permissions -> IO ()-setPermissions name (Permissions r w e s) = do- allocaBytes sizeof_stat $ \ p_stat -> do- withFilePath name $ \p_name -> do- throwErrnoIfMinus1_ "setPermissions" $ do- c_stat p_name p_stat- mode <- st_mode p_stat- let mode1 = modifyBit r mode s_IRUSR- let mode2 = modifyBit w mode1 s_IWUSR- let mode3 = modifyBit (e || s) mode2 s_IXUSR- c_wchmod p_name mode3- where- modifyBit :: Bool -> CMode -> CMode -> CMode- modifyBit False m b = m .&. (complement b)- modifyBit True m b = m .|. b--foreign import ccall unsafe "_wchmod"- c_wchmod :: CWString -> CMode -> IO CInt--copyPermissions :: FilePath -> FilePath -> IO ()-copyPermissions source dest = do- allocaBytes sizeof_stat $ \ p_stat -> do- withFilePath source $ \p_source -> do- withFilePath dest $ \p_dest -> do- throwErrnoIfMinus1_ "copyPermissions" $ c_stat p_source p_stat- mode <- st_mode p_stat- throwErrnoIfMinus1_ "copyPermissions" $ c_wchmod p_dest mode---------------------------------------------------------------------------------- Implementation--{- |@'createDirectory' dir@ creates a new directory @dir@ which is-initially empty, or as near to empty as the operating system-allows.--The operation may fail with:--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EROFS, EACCES]@--* 'isAlreadyExistsError' \/ 'AlreadyExists'-The operand refers to a directory that already exists. -@ [EEXIST]@--* 'HardwareFault'-A physical I\/O error has occurred.-@[EIO]@--* 'InvalidArgument'-The operand is not a valid directory name.-@[ENAMETOOLONG, ELOOP]@--* 'NoSuchThing'-There is no path to the directory. -@[ENOENT, ENOTDIR]@--* 'ResourceExhausted'-Insufficient resources (virtual memory, process file descriptors,-physical disk space, etc.) are available to perform the operation.-@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@--* 'InappropriateType'-The path refers to an existing non-directory object.-@[EEXIST]@---}--createDirectory :: FilePath -> IO ()-createDirectory path = do- Win32.createDirectory path Nothing---- | @'createDirectoryIfMissing' parents dir@ creates a new directory --- @dir@ if it doesn\'t exist. If the first argument is 'True'--- the function will also create all parent directories if they are missing.-createDirectoryIfMissing :: Bool -- ^ Create its parents too?- -> FilePath -- ^ The path to the directory you want to make- -> IO ()-createDirectoryIfMissing create_parents path0- | create_parents = createDirs (parents path0)- | otherwise = createDirs (take 1 (parents path0))- where- parents = reverse . scanl1 (</>) . splitDirectories . normalise-- createDirs [] = return ()- createDirs (dir:[]) = createDir dir throw- createDirs (dir:dirs) =- createDir dir $ \_ -> do- createDirs dirs- createDir dir throw-- createDir :: FilePath -> (IOException -> IO ()) -> IO ()- createDir dir notExistHandler = do- r <- try $ createDirectory dir- case (r :: Either IOException ()) of- Right () -> return ()- Left e- | isDoesNotExistError e -> notExistHandler e- -- createDirectory (and indeed POSIX mkdir) does not distinguish- -- between a dir already existing and a file already existing. So we- -- check for it here. Unfortunately there is a slight race condition- -- here, but we think it is benign. It could report an exeption in- -- the case that the dir did exist but another process deletes the- -- directory and creates a file in its place before we can check- -- that the directory did indeed exist.- | isAlreadyExistsError e -> (do- withFileStatus "createDirectoryIfMissing" dir $ \st -> do- isDir <- isDirectory st- if isDir then return ()- else throw e- ) `catch` ((\_ -> return ()) :: IOException -> IO ())- | otherwise -> throw e--{- | @'removeDirectory' dir@ removes an existing directory /dir/. The-implementation may specify additional constraints which must be-satisfied before a directory can be removed (e.g. the directory has to-be empty, or may not be in use by other processes). It is not legal-for an implementation to partially remove a directory unless the-entire directory is removed. A conformant implementation need not-support directory removal in all situations (e.g. removal of the root-directory).--The operation may fail with:--* 'HardwareFault'-A physical I\/O error has occurred.-EIO--* 'InvalidArgument'-The operand is not a valid directory name.-[ENAMETOOLONG, ELOOP]--* 'isDoesNotExistError' \/ 'NoSuchThing'-The directory does not exist. -@[ENOENT, ENOTDIR]@--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EROFS, EACCES, EPERM]@--* 'UnsatisfiedConstraints'-Implementation-dependent constraints are not satisfied. -@[EBUSY, ENOTEMPTY, EEXIST]@--* 'UnsupportedOperation'-The implementation does not support removal in this situation.-@[EINVAL]@--* 'InappropriateType'-The operand refers to an existing non-directory object.-@[ENOTDIR]@---}--removeDirectory :: FilePath -> IO ()-removeDirectory path =- Win32.removeDirectory path---- | @'removeDirectoryRecursive' dir@ removes an existing directory /dir/--- together with its content and all subdirectories. Be careful, --- if the directory contains symlinks, the function will follow them.-removeDirectoryRecursive :: FilePath -> IO ()-removeDirectoryRecursive startLoc = do- cont <- getDirectoryContents startLoc- sequence_ [rm (startLoc </> x) | x <- cont, x /= "." && x /= ".."]- removeDirectory startLoc- where- rm :: FilePath -> IO ()- rm f = do temp <- try (removeFile f)- case temp of- Left e -> do isDir <- doesDirectoryExist f- -- If f is not a directory, re-throw the error- unless isDir $ throw (e :: SomeException)- removeDirectoryRecursive f- Right _ -> return ()--{- |'removeFile' /file/ removes the directory entry for an existing file-/file/, where /file/ is not itself a directory. The-implementation may specify additional constraints which must be-satisfied before a file can be removed (e.g. the file may not be in-use by other processes).--The operation may fail with:--* 'HardwareFault'-A physical I\/O error has occurred.-@[EIO]@--* 'InvalidArgument'-The operand is not a valid file name.-@[ENAMETOOLONG, ELOOP]@--* 'isDoesNotExistError' \/ 'NoSuchThing'-The file does not exist. -@[ENOENT, ENOTDIR]@--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EROFS, EACCES, EPERM]@--* 'UnsatisfiedConstraints'-Implementation-dependent constraints are not satisfied. -@[EBUSY]@--* 'InappropriateType'-The operand refers to an existing directory.-@[EPERM, EINVAL]@---}--removeFile :: FilePath -> IO ()-removeFile path =- Win32.deleteFile path--{- |@'renameDirectory' old new@ changes the name of an existing-directory from /old/ to /new/. If the /new/ directory-already exists, it is atomically replaced by the /old/ directory.-If the /new/ directory is neither the /old/ directory nor an-alias of the /old/ directory, it is removed as if by-'removeDirectory'. A conformant implementation need not support-renaming directories in all situations (e.g. renaming to an existing-directory, or across different physical devices), but the constraints-must be documented.--On Win32 platforms, @renameDirectory@ fails if the /new/ directory already-exists.--The operation may fail with:--* 'HardwareFault'-A physical I\/O error has occurred.-@[EIO]@--* 'InvalidArgument'-Either operand is not a valid directory name.-@[ENAMETOOLONG, ELOOP]@--* 'isDoesNotExistError' \/ 'NoSuchThing'-The original directory does not exist, or there is no path to the target.-@[ENOENT, ENOTDIR]@--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EROFS, EACCES, EPERM]@--* 'ResourceExhausted'-Insufficient resources are available to perform the operation. -@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@--* 'UnsatisfiedConstraints'-Implementation-dependent constraints are not satisfied.-@[EBUSY, ENOTEMPTY, EEXIST]@--* 'UnsupportedOperation'-The implementation does not support renaming in this situation.-@[EINVAL, EXDEV]@--* 'InappropriateType'-Either path refers to an existing non-directory object.-@[ENOTDIR, EISDIR]@---}--renameDirectory :: FilePath -> FilePath -> IO ()-renameDirectory opath npath = do- -- XXX this test isn't performed atomically with the following rename- -- ToDo: use Win32 API- withFileStatus "renameDirectory" opath $ \st -> do- is_dir <- isDirectory st- if (not is_dir)- then ioException (ioeSetErrorString- (mkIOError InappropriateType "renameDirectory" Nothing (Just opath))- "not a directory")- else do- Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING--{- |@'renameFile' old new@ changes the name of an existing file system-object from /old/ to /new/. If the /new/ object already-exists, it is atomically replaced by the /old/ object. Neither-path may refer to an existing directory. A conformant implementation-need not support renaming files in all situations (e.g. renaming-across different physical devices), but the constraints must be-documented.--The operation may fail with:--* 'HardwareFault'-A physical I\/O error has occurred.-@[EIO]@--* 'InvalidArgument'-Either operand is not a valid file name.-@[ENAMETOOLONG, ELOOP]@--* 'isDoesNotExistError' \/ 'NoSuchThing'-The original file does not exist, or there is no path to the target.-@[ENOENT, ENOTDIR]@--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EROFS, EACCES, EPERM]@--* 'ResourceExhausted'-Insufficient resources are available to perform the operation. -@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@--* 'UnsatisfiedConstraints'-Implementation-dependent constraints are not satisfied.-@[EBUSY]@--* 'UnsupportedOperation'-The implementation does not support renaming in this situation.-@[EXDEV]@--* 'InappropriateType'-Either path refers to an existing directory.-@[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]@---}--renameFile :: FilePath -> FilePath -> IO ()-renameFile opath npath = do- -- XXX this test isn't performed atomically with the following rename- -- ToDo: use Win32 API- withFileOrSymlinkStatus "renameFile" opath $ \st -> do- is_dir <- isDirectory st- if is_dir- then ioException (ioeSetErrorString- (mkIOError InappropriateType "renameFile" Nothing (Just opath))- "is a directory")- else do- Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING--{- |@'copyFile' old new@ copies the existing file from /old/ to /new/.-If the /new/ file already exists, it is atomically replaced by the /old/ file.-Neither path may refer to an existing directory. The permissions of /old/ are-copied to /new/, if possible.--}--copyFile :: FilePath -> FilePath -> IO ()-copyFile fromFPath toFPath =- copy `Prelude.catch` (\exc -> throw $ ioeSetLocation exc "copyFile")- where copy = bracket (openBinaryFile fromFPath ReadMode) hClose $ \hFrom ->- bracketOnError openTmp cleanTmp $ \(tmpFPath, hTmp) ->- do allocaBytes bufferSize $ copyContents hFrom hTmp- hClose hTmp- ignoreIOExceptions $ copyPermissions fromFPath tmpFPath- renameFile tmpFPath toFPath- openTmp = openBinaryTempFile (takeDirectory toFPath) ".copyFile.tmp"- cleanTmp (tmpFPath, hTmp)- = do ignoreIOExceptions $ hClose hTmp- ignoreIOExceptions $ removeFile tmpFPath- bufferSize = 1024-- copyContents hFrom hTo buffer = do- count <- hGetBuf hFrom buffer bufferSize- when (count > 0) $ do- hPutBuf hTo buffer count- copyContents hFrom hTo buffer-- ignoreIOExceptions io = io `catch` ioExceptionIgnorer- ioExceptionIgnorer :: IOException -> IO ()- ioExceptionIgnorer _ = return ()---- | Given path referring to a file or directory, returns a--- canonicalized path, with the intent that two paths referring--- to the same file\/directory will map to the same canonicalized--- path. Note that it is impossible to guarantee that the--- implication (same file\/dir \<=\> same canonicalizedPath) holds--- in either direction: this function can make only a best-effort--- attempt.-canonicalizePath :: FilePath -> IO FilePath-canonicalizePath fpath =- do path <- Win32.getFullPathName fpath- return (normalise path)- -- normalise does more stuff, like upper-casing the drive letter----- | 'makeRelative' the current directory.-makeRelativeToCurrentDirectory :: FilePath -> IO FilePath-makeRelativeToCurrentDirectory x = do- cur <- getCurrentDirectory- return $ makeRelative cur x---- | Given an executable file name, searches for such file in the--- directories listed in system PATH. The returned value is the path--- to the found executable or Nothing if an executable with the given--- name was not found. For example (findExecutable \"ghc\") gives you--- the path to GHC.------ The path returned by 'findExecutable' corresponds to the--- program that would be executed by 'System.Process.createProcess'--- when passed the same string (as a RawCommand, not a ShellCommand).------ On Windows, 'findExecutable' calls the Win32 function 'SearchPath',--- which may search other places before checking the directories in--- @PATH@. Where it actually searches depends on registry settings,--- but notably includes the directory containing the current--- executable. See--- <http://msdn.microsoft.com/en-us/library/aa365527.aspx> for more--- details. ----findExecutable :: String -> IO (Maybe FilePath)-findExecutable binary =- Win32.searchPath Nothing binary ('.':exeExtension)---{- |@'getDirectoryContents' dir@ returns a list of /all/ entries-in /dir/. --The operation may fail with:--* 'HardwareFault'-A physical I\/O error has occurred.-@[EIO]@--* 'InvalidArgument'-The operand is not a valid directory name.-@[ENAMETOOLONG, ELOOP]@--* 'isDoesNotExistError' \/ 'NoSuchThing'-The directory does not exist.-@[ENOENT, ENOTDIR]@--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EACCES]@--* 'ResourceExhausted'-Insufficient resources are available to perform the operation.-@[EMFILE, ENFILE]@--* 'InappropriateType'-The path refers to an existing non-directory object.-@[ENOTDIR]@---}--getDirectoryContents :: FilePath -> IO [FilePath]-getDirectoryContents path =- modifyIOError ((`ioeSetFileName` path) . - (`ioeSetLocation` "getDirectoryContents")) $ do- bracket- (Win32.findFirstFile (path </> "*"))- (\(h,_) -> Win32.findClose h)- (\(h,fdat) -> loop h fdat [])- where- -- we needn't worry about empty directories: adirectory always- -- has at least "." and ".." entries- loop :: Win32.HANDLE -> Win32.FindData -> [FilePath] -> IO [FilePath]- loop h fdat acc = do- filename <- Win32.getFindDataFileName fdat- more <- Win32.findNextFile h fdat- if more- then loop h fdat (filename:acc)- else return (filename:acc)- -- no need to reverse, ordering is undefined--{- |If the operating system has a notion of current directories,-'getCurrentDirectory' returns an absolute path to the-current directory of the calling process.--The operation may fail with:--* 'HardwareFault'-A physical I\/O error has occurred.-@[EIO]@--* 'isDoesNotExistError' \/ 'NoSuchThing'-There is no path referring to the current directory.-@[EPERM, ENOENT, ESTALE...]@--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EACCES]@--* 'ResourceExhausted'-Insufficient resources are available to perform the operation.--* 'UnsupportedOperation'-The operating system has no notion of current directory.---}-getCurrentDirectory :: IO FilePath-getCurrentDirectory = do- Win32.getCurrentDirectory--{- |If the operating system has a notion of current directories,-@'setCurrentDirectory' dir@ changes the current-directory of the calling process to /dir/.--The operation may fail with:--* 'HardwareFault'-A physical I\/O error has occurred.-@[EIO]@--* 'InvalidArgument'-The operand is not a valid directory name.-@[ENAMETOOLONG, ELOOP]@--* 'isDoesNotExistError' \/ 'NoSuchThing'-The directory does not exist.-@[ENOENT, ENOTDIR]@--* 'isPermissionError' \/ 'PermissionDenied'-The process has insufficient privileges to perform the operation.-@[EACCES]@--* 'UnsupportedOperation'-The operating system has no notion of current directory, or the-current directory cannot be dynamically changed.--* 'InappropriateType'-The path refers to an existing non-directory object.-@[ENOTDIR]@---}--setCurrentDirectory :: FilePath -> IO ()-setCurrentDirectory path =- Win32.setCurrentDirectory path--{- |The operation 'doesDirectoryExist' returns 'True' if the argument file-exists and is a directory, and 'False' otherwise.--}--doesDirectoryExist :: FilePath -> IO Bool-doesDirectoryExist name =- (withFileStatus "doesDirectoryExist" name $ \st -> isDirectory st)- `catch` ((\ _ -> return False) :: IOException -> IO Bool)--{- |The operation 'doesFileExist' returns 'True'-if the argument file exists and is not a directory, and 'False' otherwise.--}--doesFileExist :: FilePath -> IO Bool-doesFileExist name =- (withFileStatus "doesFileExist" name $ \st -> do b <- isDirectory st; return (not b))- `catch` ((\ _ -> return False) :: IOException -> IO Bool)--{- |The 'getModificationTime' operation returns the-clock time at which the file or directory was last modified.--The operation may fail with:--* 'isPermissionError' if the user is not permitted to access- the modification time; or--* 'isDoesNotExistError' if the file or directory does not exist.---}--getModificationTime :: FilePath -> IO ClockTime-getModificationTime name = do- -- ToDo: use Win32 API- withFileStatus "getModificationTime" name $ \ st -> do- modificationTime st---withFileStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a-withFileStatus loc name f = do- modifyIOError (`ioeSetFileName` name) $- allocaBytes sizeof_stat $ \p ->- withFilePath (fileNameEndClean name) $ \s -> do- throwErrnoIfMinus1Retry_ loc (c_stat s p)--withFileOrSymlinkStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a-withFileOrSymlinkStatus loc name f = do- modifyIOError (`ioeSetFileName` name) $- allocaBytes sizeof_stat $ \p ->- withFilePath name $ \s -> do- throwErrnoIfMinus1Retry_ loc (lstat s p)--modificationTime :: Ptr CStat -> IO ClockTime-modificationTime stat = do- mtime <- st_mtime stat- let realToInteger = round . realToFrac :: Real a => a -> Integer- return (TOD (realToInteger (mtime :: CTime)) 0)- -isDirectory :: Ptr CStat -> IO Bool-isDirectory stat = do- mode <- st_mode stat- return (s_isdir mode)--fileNameEndClean :: String -> String-fileNameEndClean name = if isDrive name then addTrailingPathSeparator name- else dropTrailingPathSeparator name--foreign import ccall unsafe "HsDirectory.h __hscore_S_IRUSR" s_IRUSR :: CMode-foreign import ccall unsafe "HsDirectory.h __hscore_S_IWUSR" s_IWUSR :: CMode-foreign import ccall unsafe "HsDirectory.h __hscore_S_IXUSR" s_IXUSR :: CMode-foreign import ccall unsafe "__hscore_S_IFDIR" s_IFDIR :: CMode---foreign import ccall unsafe "__hscore_long_path_size"- long_path_size :: Int--{- | Returns the current user's home directory.--The directory returned is expected to be writable by the current user,-but note that it isn't generally considered good practice to store-application-specific data here; use 'getAppUserDataDirectory'-instead.--On Unix, 'getHomeDirectory' returns the value of the @HOME@-environment variable. On Windows, the system is queried for a-suitable path; a typical path might be -@C:/Documents And Settings/user@.--The operation may fail with:--* 'UnsupportedOperation'-The operating system has no notion of home directory.--* 'isDoesNotExistError'-The home directory for the current user does not exist, or-cannot be found.--}-getHomeDirectory :: IO FilePath-getHomeDirectory =- modifyIOError ((`ioeSetLocation` "getHomeDirectory")) $ do- r <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_PROFILE nullPtr 0- case (r :: Either IOException String) of- Right s -> return s- Left _ -> do- r1 <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_WINDOWS nullPtr 0- case r1 of- Right s -> return s- Left e -> ioError (e :: IOException)--{- | Returns the pathname of a directory in which application-specific-data for the current user can be stored. The result of-'getAppUserDataDirectory' for a given application is specific to-the current user.--The argument should be the name of the application, which will be used-to construct the pathname (so avoid using unusual characters that-might result in an invalid pathname).--Note: the directory may not actually exist, and may need to be created-first. It is expected that the parent directory exists and is-writable.--On Unix, this function returns @$HOME\/.appName@. On Windows, a-typical path might be --> C:/Documents And Settings/user/Application Data/appName--The operation may fail with:--* 'UnsupportedOperation'-The operating system has no notion of application-specific data directory.--* 'isDoesNotExistError'-The home directory for the current user does not exist, or-cannot be found.--}-getAppUserDataDirectory :: String -> IO FilePath-getAppUserDataDirectory appName = do- modifyIOError ((`ioeSetLocation` "getAppUserDataDirectory")) $ do- s <- Win32.sHGetFolderPath nullPtr Win32.cSIDL_APPDATA nullPtr 0- return (s++'\\':appName)--{- | Returns the current user's document directory.--The directory returned is expected to be writable by the current user,-but note that it isn't generally considered good practice to store-application-specific data here; use 'getAppUserDataDirectory'-instead.--On Unix, 'getUserDocumentsDirectory' returns the value of the @HOME@-environment variable. On Windows, the system is queried for a-suitable path; a typical path might be -@C:\/Documents and Settings\/user\/My Documents@.--The operation may fail with:--* 'UnsupportedOperation'-The operating system has no notion of document directory.--* 'isDoesNotExistError'-The document directory for the current user does not exist, or-cannot be found.--}-getUserDocumentsDirectory :: IO FilePath-getUserDocumentsDirectory = do- modifyIOError ((`ioeSetLocation` "getUserDocumentsDirectory")) $ do- Win32.sHGetFolderPath nullPtr Win32.cSIDL_PERSONAL nullPtr 0--{- | Returns the current directory for temporary files.--On Unix, 'getTemporaryDirectory' returns the value of the @TMPDIR@-environment variable or \"\/tmp\" if the variable isn\'t defined.-On Windows, the function checks for the existence of environment variables in -the following order and uses the first path found:--* -TMP environment variable. --*-TEMP environment variable. --*-USERPROFILE environment variable. --*-The Windows directory--The operation may fail with:--* 'UnsupportedOperation'-The operating system has no notion of temporary directory.--The function doesn\'t verify whether the path exists.--}-getTemporaryDirectory :: IO FilePath-getTemporaryDirectory = do- Win32.getTemporaryDirectory---- ToDo: This should be determined via autoconf (AC_EXEEXT)--- | Extension for executable files--- (typically @\"\"@ on Unix and @\"exe\"@ on Windows or OS\/2)-exeExtension :: String-exeExtension = "exe"
− Test/examples/EmptyAnn.hs
@@ -1,1 +0,0 @@-{-# ANN foo "Hlint: ignore Test4" #-}
− Test/examples/EmptyContext.hs
@@ -1,1 +0,0 @@-happyThen :: () => P a
− Test/examples/EmptyInstance.hs
@@ -1,4 +0,0 @@-instance Traversable Tree where--x :: Int-x = 1
− Test/examples/EmptyList.hs
@@ -1,3 +0,0 @@-module EmptyList where - -eAttrs = []
− Test/examples/Ex1.hs
@@ -1,1 +0,0 @@-yes = 1 where x = 1
− Test/examples/FamilyKindSig.hs
@@ -1,4 +0,0 @@-{-# LANGUAGE TypeFamilies #-} -module FamilyKindSig where - -type family WithKindSig (a :: * -> *)
− Test/examples/FixityTests.hs
@@ -1,3 +0,0 @@-main = forM_ cmdReports $ \x -> do - putStrLn $ "Writing report to " ++ x ++ " ..." - writeReport x ideas
− Test/examples/ForeignImport.hs
@@ -1,2 +0,0 @@-foreign import ccall unsafe "getProgArgv" - getProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO ()
− Test/examples/GadtDeriving.hs
@@ -1,5 +0,0 @@-{-# LANGUAGE GADTs #-}--data Foo where- Foo :: Int -> Foo- deriving (Eq,Ord,Typeable)
− Test/examples/GenericTree.hs
@@ -1,7 +0,0 @@-{-# LANGUAGE RankNTypes #-} -module GenericTree where - -import Data.Typeable - -dynRep :: (Typeable a) => a -> (TypeRep, forall b. (Typeable b) => b -> (Maybe b)) -dynRep a = (typeOf a, \_ -> cast a)
− Test/examples/GhcDeriving.hs
@@ -1,4 +0,0 @@---newtype CodeGenModule a = CGM (StateT CGMState IO a)- deriving (Monad, MonadState [s], MonadIO)
− Test/examples/GroupKeyword.hs
@@ -1,4 +0,0 @@--- {-# LANGUAGE TransformListComp #-} -module GroupKeyword where - -a = map head $ group $ sort [1..100]
− Test/examples/HappyDoAction.hs
@@ -1,30 +0,0 @@-{-# LANGUAGE MagicHash #-} -module HappyDoAction where - -foo :: Int# - -happyDoAction i tk st - = {- nothing -} - - - case action of - 0# -> {- nothing -} - happyFail i tk st - -1# -> {- nothing -} - happyAccept i tk st - n | (n <# (0# :: Int#)) -> {- nothing -} - - (happyReduceArr ! rule) i tk st - where rule = (I# ((negateInt# ((n +# (1# :: Int#)))))) - n -> {- nothing -} - - - happyShift new_state i tk st - where new_state = (n -# (1# :: Int#)) - where off = indexShortOffAddr happyActOffsets st - off_i = (off +# i) - check = if (off_i >=# (0# :: Int#)) - then (indexShortOffAddr happyCheck off_i ==# i) - else False - action | check = indexShortOffAddr happyTable off_i - | otherwise = indexShortOffAddr happyDefActions st
− Test/examples/HaskellParser.hs
@@ -1,16 +0,0 @@-import qualified Language.Haskell.Exts.Annotated as Parser -import qualified Language.Haskell.Exts.Annotated.Syntax as Syn -import qualified Language.Haskell.Exts.Extension as Ext - -parse originalFileName input = Parser.parseModuleWithMode parseMode input - where - parseMode :: Parser.ParseMode - parseMode = Parser.defaultParseMode { Parser.parseFilename = originalFileName - , Parser.extensions = - Ext.glasgowExts ++ - [Ext.ExplicitForall] - } -main = - do s <- readFile "Bug.hs" - let x = parse "Bug.hs" s - putStrLn (show x)
− Test/examples/HexPrec.hs
@@ -1,6 +0,0 @@-module HexPrec where - -(%%) :: Int -> Int -> Int -a %% b = 0 - -infixl 0x02 %%
− Test/examples/Hyphen.hs
@@ -1,2 +0,0 @@--foo x y = fromIntegral $ x-y+1
− Test/examples/ImportSymbol.hs
@@ -1,1 +0,0 @@-import Data.Generics hiding ((:*:))
− Test/examples/IndentedWhere.hs
@@ -1,4 +0,0 @@- -f x = g - where g :: Int - g = 0
− Test/examples/InfixParser.hs
@@ -1,6 +0,0 @@-module InfixParser where - -type Parse a b = [a] -> [(b, [a])] - -(<|>) :: Parse a b -> Parse a b -> Parse a b -(p1 <|> p2) i = p1 i ++ p2 i
− Test/examples/LanguagePragma.hs
@@ -1,1 +0,0 @@-{-# LANGUAGE PatternGuards, ViewPatterns #-}
− Test/examples/LineOptionsPragma.hs
@@ -1,3 +0,0 @@-{-# OPTIONS #-} -{-# LINE 49 "src/Language/C/Parser/Lexer.x" #-} -module Fail where
− Test/examples/LinePragma.hs
@@ -1,5 +0,0 @@-{-# LINE 1 "Algebra.lhs" #-}-module Algebra where--{-# LINE 3 "Algebra.lhs" #-}-foo bar = bar
− Test/examples/ListComp1.hs
@@ -1,1 +0,0 @@-copyFiles = [a | f ('.':)]
− Test/examples/MagicHash.hs
@@ -1,12 +0,0 @@-{-# LANGUAGE MagicHash #-}--import GHC.Exts--putByteArray :: Int# -> Int#-putByteArray s# = s# +# 1#--floatFoo :: Float# -> Float-floatFoo f# = F# (f# `plusFloat#` 1.2e2#)--charFun :: Char# -> Bool-charFun c# = c# `gtChar#` 'a'#
− Test/examples/MultiCtxt.hs
@@ -1,6 +0,0 @@-{-# LANGUAGE RankNTypes #-} - -module MultiCtxt where - -multipleCtx :: Eq a => (Show a => a) -multipleCtx = undefined
− Test/examples/NPlusK.hs
@@ -1,2 +0,0 @@--f (n+3) = n
− Test/examples/NestedAsPat.hs
@@ -1,3 +0,0 @@-module NestedAsPat where - -nestedAsPat [x@(Just _)] = undefined
− Test/examples/PackageImport.hs
@@ -1,5 +0,0 @@-{-# LANGUAGE PackageImports #-}--import "haskell-src-exts" Language.Haskell.Exts--main = undefined
− Test/examples/ParenFunBind.hs
@@ -1,3 +0,0 @@-module ParenFunBind where - -(foo x) y = x + y
− Test/examples/Pragma.hs
@@ -1,7 +0,0 @@---data Bar = Bar--instance Eq Bar where- {-# INLINE (==) #-}- a == b = error "here"
− Test/examples/QualifiedDot.hs
@@ -1,3 +0,0 @@-module QualifiedDot where - -twoDots = (Prelude..)
− Test/examples/QuasiQuoteLines.hs
@@ -1,12 +0,0 @@-{-# LANGUAGE QuasiQuotes #-}--import Here--str :: String-str = [$here|test -test -test test |]---main :: IO()-main = do putStrLn str
− Test/examples/Rank2Types.hs
@@ -1,4 +0,0 @@-{-# LANGUAGE Rank2Types #-}--test :: Int -> forall a. [a] -> Int-test _ _ = 1
− Test/examples/ReadP.hs
@@ -1,2 +0,0 @@-{-# LANGUAGE TypeOperators #-} -newtype ReadP a = R (forall b . (a -> P b) -> P b)
− Test/examples/RealGHC.lhs
@@ -1,913 +0,0 @@-%-% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998-%-\section[CoreRules]{Transformation rules}--\begin{code}-{-# OPTIONS -w #-}-{-# LANGUAGE PatternGuards #-}--- The above warning supression flag is a temporary kludge.--- While working on this module you are encouraged to remove it and fix--- any warnings in the module. See--- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings--- for details---- | Functions for collecting together and applying rewrite rules to a module.--- The 'CoreRule' datatype itself is declared elsewhere.-module Rules (- -- * RuleBase- RuleBase,-- -- ** Constructing- emptyRuleBase, mkRuleBase, extendRuleBaseList,- unionRuleBase, pprRuleBase,-- -- ** Checking rule applications- ruleCheckProgram,-- -- ** Manipulating 'SpecInfo' rules- mkSpecInfo, extendSpecInfo, addSpecInfo,- addIdSpecialisations,-- -- * Misc. CoreRule helpers- rulesOfBinds, getRules, pprRulesForUser,-- lookupRule, mkLocalRule, roughTopNames- ) where---- #include "HsVersions.h"--import CoreSyn -- All of it-import OccurAnal ( occurAnalyseExpr )-import CoreFVs ( exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars )-import CoreUtils ( tcEqExprX, exprType )-import PprCore ( pprRules )-import Type ( Type, TvSubstEnv )-import Coercion ( coercionKind )-import TcType ( tcSplitTyConApp_maybe )-import CoreTidy ( tidyRules )-import Id-import IdInfo ( SpecInfo( SpecInfo ) )-import Var ( Var )-import VarEnv-import VarSet-import Name ( Name, NamedThing(..) )-import NameEnv-import Unify ( ruleMatchTyX, MatchEnv(..) )-import BasicTypes ( Activation )-import StaticFlags ( opt_PprStyle_Debug )-import Outputable-import FastString-import Maybes-import OrdList-import Bag-import Util-import Data.List-\end{code}---%************************************************************************-%* *-\subsection[specialisation-IdInfo]{Specialisation info about an @Id@}-%* *-%************************************************************************--A @CoreRule@ holds details of one rule for an @Id@, which-includes its specialisations.--For example, if a rule for @f@ contains the mapping:-\begin{verbatim}- forall a b d. [Type (List a), Type b, Var d] ===> f' a b-\end{verbatim}-then when we find an application of f to matching types, we simply replace-it by the matching RHS:-\begin{verbatim}- f (List Int) Bool dict ===> f' Int Bool-\end{verbatim}-All the stuff about how many dictionaries to discard, and what types-to apply the specialised function to, are handled by the fact that the-Rule contains a template for the result of the specialisation.--There is one more exciting case, which is dealt with in exactly the same-way. If the specialised value is unboxed then it is lifted at its-definition site and unlifted at its uses. For example:-- pi :: forall a. Num a => a--might have a specialisation-- [Int#] ===> (case pi' of Lift pi# -> pi#)--where pi' :: Lift Int# is the specialised version of pi.--\begin{code}-mkLocalRule :: RuleName -> Activation- -> Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule--- ^ Used to make 'CoreRule' for an 'Id' defined in the module being--- compiled. See also 'CoreSyn.CoreRule'-mkLocalRule name act fn bndrs args rhs- = Rule { ru_name = name, ru_fn = fn, ru_act = act,- ru_bndrs = bndrs, ru_args = args,- ru_rhs = rhs, ru_rough = roughTopNames args,- ru_local = True }-----------------roughTopNames :: [CoreExpr] -> [Maybe Name]--- ^ Find the \"top\" free names of several expressions.--- Such names are either:------ 1. The function finally being applied to in an application chain--- (if that name is a GlobalId: see "Var#globalvslocal"), or------ 2. The 'TyCon' if the expression is a 'Type'------ This is used for the fast-match-check for rules;--- if the top names don't match, the rest can't-roughTopNames args = map roughTopName args--roughTopName :: CoreExpr -> Maybe Name-roughTopName (Type ty) = case tcSplitTyConApp_maybe ty of- Just (tc,_) -> Just (getName tc)- Nothing -> Nothing-roughTopName (App f a) = roughTopName f-roughTopName (Var f) | isGlobalId f = Just (idName f)- | otherwise = Nothing-roughTopName other = Nothing--ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool--- ^ @ruleCantMatch tpl actual@ returns True only if @actual@--- definitely can't match @tpl@ by instantiating @tpl@.--- It's only a one-way match; unlike instance matching we--- don't consider unification.------ Notice that [_$_]--- @ruleCantMatch [Nothing] [Just n2] = False@--- Reason: a template variable can be instantiated by a constant--- Also:--- @ruleCantMatch [Just n1] [Nothing] = False@--- Reason: a local variable @v@ in the actuals might [_$_]--ruleCantMatch (Just n1 : ts) (Just n2 : as) = n1 /= n2 || ruleCantMatch ts as-ruleCantMatch (t : ts) (a : as) = ruleCantMatch ts as-ruleCantMatch ts as = False-\end{code}--\begin{code}-pprRulesForUser :: [CoreRule] -> SDoc--- (a) tidy the rules--- (b) sort them into order based on the rule name--- (c) suppress uniques (unless -dppr-debug is on)--- This combination makes the output stable so we can use in testing--- It's here rather than in PprCore because it calls tidyRules-pprRulesForUser rules- = withPprStyle defaultUserStyle $- pprRules $- sortLe le_rule $- tidyRules emptyTidyEnv rules- where- le_rule r1 r2 = ru_name r1 <= ru_name r2-\end{code}---%************************************************************************-%* *- SpecInfo: the rules in an IdInfo-%* *-%************************************************************************--\begin{code}--- | Make a 'SpecInfo' containing a number of 'CoreRule's, suitable--- for putting into an 'IdInfo'-mkSpecInfo :: [CoreRule] -> SpecInfo-mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules)--extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo-extendSpecInfo (SpecInfo rs1 fvs1) rs2- = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1)--addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo-addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2)- = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2)--addIdSpecialisations :: Id -> [CoreRule] -> Id-addIdSpecialisations id []- = id-addIdSpecialisations id rules- = setIdSpecialisation id $- extendSpecInfo (idSpecialisation id) rules---- | Gather all the rules for locally bound identifiers from the supplied bindings-rulesOfBinds :: [CoreBind] -> [CoreRule]-rulesOfBinds binds = concatMap (concatMap idCoreRules . bindersOf) binds--getRules :: RuleBase -> Id -> [CoreRule]- -- The rules for an Id come from two places:- -- (a) the ones it is born with (idCoreRules fn)- -- (b) rules added in subsequent modules (extra_rules)- -- PrimOps, for example, are born with a bunch of rules under (a)-getRules rule_base fn- | isLocalId fn = idCoreRules fn- | otherwise = WARN( not (isPrimOpId fn) && notNull (idCoreRules fn),- ppr fn <+> ppr (idCoreRules fn) )- idCoreRules fn ++ (lookupNameEnv rule_base (idName fn) `orElse` [])- -- Only PrimOpIds have rules inside themselves, and perhaps more besides-\end{code}---%************************************************************************-%* *- RuleBase-%* *-%************************************************************************--\begin{code}--- | Gathers a collection of 'CoreRule's. Maps (the name of) an 'Id' to its rules-type RuleBase = NameEnv [CoreRule]- -- The rules are are unordered;- -- we sort out any overlaps on lookup--emptyRuleBase = emptyNameEnv--mkRuleBase :: [CoreRule] -> RuleBase-mkRuleBase rules = extendRuleBaseList emptyRuleBase rules--extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase-extendRuleBaseList rule_base new_guys- = foldl extendRuleBase rule_base new_guys--unionRuleBase :: RuleBase -> RuleBase -> RuleBase-unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2--extendRuleBase :: RuleBase -> CoreRule -> RuleBase-extendRuleBase rule_base rule- = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule--pprRuleBase :: RuleBase -> SDoc-pprRuleBase rules = vcat [ pprRules (tidyRules emptyTidyEnv rs)- | rs <- nameEnvElts rules ]-\end{code}---%************************************************************************-%* *-\subsection{Matching}-%* *-%************************************************************************--Note [Extra args in rule matching]-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-If we find a matching rule, we return (Just (rule, rhs)),-but the rule firing has only consumed as many of the input args-as the ruleArity says. It's up to the caller to keep track-of any left-over args. E.g. if you call- lookupRule ... f [e1, e2, e3]-and it returns Just (r, rhs), where r has ruleArity 2-then the real rewrite is- f e1 e2 e3 ==> rhs e3--You might think it'd be cleaner for lookupRule to deal with the-leftover arguments, by applying 'rhs' to them, but the main call-in the Simplifier works better as it is. Reason: the 'args' passed-to lookupRule are the result of a lazy substitution--\begin{code}--- | The main rule matching function. Attempts to apply all (active)--- supplied rules to this instance of an application in a given--- context, returning the rule applied and the resulting expression if--- successful.-lookupRule :: (Activation -> Bool) -> InScopeSet- -> Id -> [CoreExpr]- -> [CoreRule] -> Maybe (CoreRule, CoreExpr)---- See Note [Extra args in rule matching]--- See comments on matchRule-lookupRule is_active in_scope fn args rules- = -- pprTrace "matchRules" (ppr fn <+> ppr rules) $- case go [] rules of- [] -> Nothing- (m:ms) -> Just (findBest (fn,args) m ms)- where- rough_args = map roughTopName args-- go :: [(CoreRule,CoreExpr)] -> [CoreRule] -> [(CoreRule,CoreExpr)]- go ms [] = ms- go ms (r:rs) = case (matchRule is_active in_scope args rough_args r) of- Just e -> go ((r,e):ms) rs- Nothing -> -- pprTrace "match failed" (ppr r $$ ppr args $$- -- ppr [(arg_id, unfoldingTemplate unf) | Var arg_id <- args, let unf = idUnfolding arg_id, isCheapUnfolding unf] )- go ms rs--findBest :: (Id, [CoreExpr])- -> (CoreRule,CoreExpr) -> [(CoreRule,CoreExpr)] -> (CoreRule,CoreExpr)--- All these pairs matched the expression--- Return the pair the the most specific rule--- The (fn,args) is just for overlap reporting--findBest target (rule,ans) [] = (rule,ans)-findBest target (rule1,ans1) ((rule2,ans2):prs)- | rule1 `isMoreSpecific` rule2 = findBest target (rule1,ans1) prs- | rule2 `isMoreSpecific` rule1 = findBest target (rule2,ans2) prs- | debugIsOn = let pp_rule rule- | opt_PprStyle_Debug = ppr rule- | otherwise = doubleQuotes (ftext (ru_name rule))- in pprTrace "Rules.findBest: rule overlap (Rule 1 wins)"- (vcat [if opt_PprStyle_Debug then- ptext (sLit "Expression to match:") <+> ppr fn <+> sep (map ppr args)- else empty,- ptext (sLit "Rule 1:") <+> pp_rule rule1,- ptext (sLit "Rule 2:") <+> pp_rule rule2]) $- findBest target (rule1,ans1) prs- | otherwise = findBest target (rule1,ans1) prs- where- (fn,args) = target--isMoreSpecific :: CoreRule -> CoreRule -> Bool-isMoreSpecific (BuiltinRule {}) r2 = True-isMoreSpecific r1 (BuiltinRule {}) = False-isMoreSpecific (Rule { ru_bndrs = bndrs1, ru_args = args1 })- (Rule { ru_bndrs = bndrs2, ru_args = args2 })- = isJust (matchN in_scope bndrs2 args2 args1)- where- in_scope = mkInScopeSet (mkVarSet bndrs1)- -- Actually we should probably include the free vars- -- of rule1's args, but I can't be bothered--noBlackList :: Activation -> Bool-noBlackList act = False -- Nothing is black listed--matchRule :: (Activation -> Bool) -> InScopeSet- -> [CoreExpr] -> [Maybe Name]- -> CoreRule -> Maybe CoreExpr---- If (matchRule rule args) returns Just (name,rhs)--- then (f args) matches the rule, and the corresponding--- rewritten RHS is rhs------ The bndrs and rhs is occurrence-analysed------ Example------ The rule--- forall f g x. map f (map g x) ==> map (f . g) x--- is stored--- CoreRule "map/map"--- [f,g,x] -- tpl_vars--- [f,map g x] -- tpl_args--- map (f.g) x) -- rhs------ Then the call: matchRule the_rule [e1,map e2 e3]--- = Just ("map/map", (\f,g,x -> rhs) e1 e2 e3)------ Any 'surplus' arguments in the input are simply put on the end--- of the output.--matchRule is_active in_scope args rough_args- (BuiltinRule { ru_name = name, ru_try = match_fn })- = case match_fn args of- Just expr -> Just expr- Nothing -> Nothing--matchRule is_active in_scope args rough_args- (Rule { ru_name = rn, ru_act = act, ru_rough = tpl_tops,- ru_bndrs = tpl_vars, ru_args = tpl_args,- ru_rhs = rhs })- | not (is_active act) = Nothing- | ruleCantMatch tpl_tops rough_args = Nothing- | otherwise- = case matchN in_scope tpl_vars tpl_args args of- Nothing -> Nothing- Just (binds, tpl_vals) -> Just (mkLets binds $- rule_fn `mkApps` tpl_vals)- where- rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs)- -- We could do this when putting things into the rulebase, I guess-\end{code}--\begin{code}--- For a given match template and context, find bindings to wrap around--- the entire result and what should be substituted for each template variable.--- Fail if there are two few actual arguments from the target to match the template-matchN :: InScopeSet -- ^ In-scope variables- -> [Var] -- ^ Match template type variables- -> [CoreExpr] -- ^ Match template- -> [CoreExpr] -- ^ Target; can have more elements than the template- -> Maybe ([CoreBind],- [CoreExpr])--matchN in_scope tmpl_vars tmpl_es target_es- = do { (tv_subst, id_subst, binds)- <- go init_menv emptySubstEnv tmpl_es target_es- ; return (fromOL binds,- map (lookup_tmpl tv_subst id_subst) tmpl_vars') }- where- (init_rn_env, tmpl_vars') = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars- -- See Note [Template binders]-- init_menv = ME { me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env }-- go menv subst [] es = Just subst- go menv subst ts [] = Nothing -- Fail if too few actual args- go menv subst (t:ts) (e:es) = do { subst1 <- match menv subst t e- ; go menv subst1 ts es }-- lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr- lookup_tmpl tv_subst id_subst tmpl_var'- | isTyVar tmpl_var' = case lookupVarEnv tv_subst tmpl_var' of- Just ty -> Type ty- Nothing -> unbound tmpl_var'- | otherwise = case lookupVarEnv id_subst tmpl_var' of- Just e -> e- other -> unbound tmpl_var'-- unbound var = pprPanic "Template variable unbound in rewrite rule"- (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$ ppr target_es)-\end{code}--Note [Template binders]-~~~~~~~~~~~~~~~~~~~~~~~-Consider the following match:- Template: forall x. f x- Target: f (x+1)-This should succeed, because the template variable 'x' has-nothing to do with the 'x' in the target.--On reflection, this case probably does just work, but this might not- Template: forall x. f (\x.x)- Target: f (\y.y)-Here we want to clone when we find the \x, but to know that x must be in scope--To achive this, we use rnBndrL to rename the template variables if-necessary; the renamed ones are the tmpl_vars'--- ---------------------------------------------- The inner workings of matching- -----------------------------------------------\begin{code}--- These two definitions are not the same as in Subst,--- but they simple and direct, and purely local to this module------ * The domain of the TvSubstEnv and IdSubstEnv are the template--- variables passed into the match.------ * The (OrdList CoreBind) in a SubstEnv are the bindings floated out--- from nested matches; see the Let case of match, below----type SubstEnv = (TvSubstEnv, IdSubstEnv, OrdList CoreBind)-type IdSubstEnv = IdEnv CoreExpr--emptySubstEnv :: SubstEnv-emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL)----- At one stage I tried to match even if there are more--- template args than real args.---- I now think this is probably a bad idea.--- Should the template (map f xs) match (map g)? I think not.--- For a start, in general eta expansion wastes work.--- SLPJ July 99---match :: MatchEnv- -> SubstEnv- -> CoreExpr -- Template- -> CoreExpr -- Target- -> Maybe SubstEnv---- See the notes with Unify.match, which matches types--- Everything is very similar for terms---- Interesting examples:--- Consider matching--- \x->f against \f->f--- When we meet the lambdas we must remember to rename f to f' in the--- second expresion. The RnEnv2 does that.------ Consider matching--- forall a. \b->b against \a->3--- We must rename the \a. Otherwise when we meet the lambdas we--- might substitute [a/b] in the template, and then erroneously--- succeed in matching what looks like the template variable 'a' against 3.---- The Var case follows closely what happens in Unify.match-match menv subst (Var v1) e2- | Just subst <- match_var menv subst v1 e2- = Just subst--match menv subst e1 (Note n e2)- = match menv subst e1 e2- -- Note [Notes in RULE matching]- -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- -- Look through Notes. In particular, we don't want to- -- be confused by InlineMe notes. Maybe we should be more- -- careful about profiling notes, but for now I'm just- -- riding roughshod over them.- --- See Note [Notes in call patterns] in SpecConstr---- Here is another important rule: if the term being matched is a--- variable, we expand it so long as its unfolding is a WHNF--- (Its occurrence information is not necessarily up to date,--- so we don't use it.)-match menv subst e1 (Var v2)- | isCheapUnfolding unfolding- = match menv subst e1 (unfoldingTemplate unfolding)- where- rn_env = me_env menv- unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2))- -- Notice that we look up v2 in the in-scope set- -- See Note [Lookup in-scope]- -- Remember to apply any renaming first (hence rnOccR)---- Note [Matching lets]--- ~~~~~~~~~~~~~~~~~~~~--- Matching a let-expression. Consider--- RULE forall x. f (g x) = <rhs>--- and target expression--- f (let { w=R } in g E))--- Then we'd like the rule to match, to generate--- let { w=R } in (\x. <rhs>) E--- In effect, we want to float the let-binding outward, to enable--- the match to happen. This is the WHOLE REASON for accumulating--- bindings in the SubstEnv------ We can only do this if--- (a) Widening the scope of w does not capture any variables--- We use a conservative test: w is not already in scope--- If not, we clone the binders, and substitute--- (b) The free variables of R are not bound by the part of the--- target expression outside the let binding; e.g.--- f (\v. let w = v+1 in g E)--- Here we obviously cannot float the let-binding for w.------ You may think rule (a) would never apply, because rule matching is--- mostly invoked from the simplifier, when we have just run substExpr--- over the argument, so there will be no shadowing anyway.--- The fly in the ointment is that the forall'd variables of the--- RULE itself are considered in scope.------ I though of various cheapo ways to solve this tiresome problem,--- but ended up doing the straightforward thing, which is to--- clone the binders if they are in scope. It's tiresome, and--- potentially inefficient, because of the calls to substExpr,--- but I don't think it'll happen much in pracice.--{- Cases to think about- (let x=y+1 in \x. (x,x))- --> let x=y+1 in (\x1. (x1,x1))- (\x. let x = y+1 in (x,x))- --> let x1 = y+1 in (\x. (x1,x1)- (let x=y+1 in (x,x), let x=y-1 in (x,x))- --> let x=y+1 in let x1=y-1 in ((x,x),(x1,x1))--Watch out!- (let x=y+1 in let z=x+1 in (z,z)- --> matches (p,p) but watch out that the use of- x on z's rhs is OK!-I'm removing the cloning because that makes the above case-fail, because the inner let looks as if it has locally-bound vars -}--match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2)- | all freshly_bound bndrs,- not (any locally_bound bind_fvs)- = match (menv { me_env = rn_env' })- (tv_subst, id_subst, binds `snocOL` bind')- e1 e2'- where- rn_env = me_env menv- bndrs = bindersOf bind- bind_fvs = varSetElems (bindFreeVars bind)- locally_bound x = inRnEnvR rn_env x- freshly_bound x = not (x `rnInScope` rn_env)- bind' = bind- e2' = e2- rn_env' = extendRnInScopeList rn_env bndrs-{-- (rn_env', bndrs') = mapAccumL rnBndrR rn_env bndrs- s_prs = [(bndr, Var bndr') | (bndr,bndr') <- zip bndrs bndrs', bndr /= bndr']- subst = mkSubst (rnInScopeSet rn_env) emptyVarEnv (mkVarEnv s_prs)- (bind', e2') | null s_prs = (bind, e2)- | otherwise = (s_bind, substExpr subst e2)- s_bind = case bind of- NonRec {} -> NonRec (head bndrs') (head rhss)- Rec {} -> Rec (bndrs' `zip` map (substExpr subst) rhss)--}--match menv subst (Lit lit1) (Lit lit2)- | lit1 == lit2- = Just subst--match menv subst (App f1 a1) (App f2 a2)- = do { subst' <- match menv subst f1 f2- ; match menv subst' a1 a2 }--match menv subst (Lam x1 e1) (Lam x2 e2)- = match menv' subst e1 e2- where- menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }---- This rule does eta expansion--- (\x.M) ~ N iff M ~ N x--- It's important that this is *after* the let rule,--- so that (\x.M) ~ (let y = e in \y.N)--- does the let thing, and then gets the lam/lam rule above-match menv subst (Lam x1 e1) e2- = match menv' subst e1 (App e2 (varToCoreExpr new_x))- where- (rn_env', new_x) = rnBndrL (me_env menv) x1- menv' = menv { me_env = rn_env' }---- Eta expansion the other way--- M ~ (\y.N) iff M y ~ N-match menv subst e1 (Lam x2 e2)- = match menv' subst (App e1 (varToCoreExpr new_x)) e2- where- (rn_env', new_x) = rnBndrR (me_env menv) x2- menv' = menv { me_env = rn_env' }--match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2)- = do { subst1 <- match_ty menv subst ty1 ty2- ; subst2 <- match menv subst1 e1 e2- ; let menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }- ; match_alts menv' subst2 alts1 alts2 -- Alts are both sorted- }--match menv subst (Type ty1) (Type ty2)- = match_ty menv subst ty1 ty2--match menv subst (Cast e1 co1) (Cast e2 co2)- = do { subst1 <- match_ty menv subst co1 co2- ; match menv subst1 e1 e2 }--{- REMOVING OLD CODE: I think that the above handling for let is- better than the stuff here, which looks- pretty suspicious to me. SLPJ Sept 06--- This is an interesting rule: we simply ignore lets in the--- term being matched against! The unfolding inside it is (by assumption)--- already inside any occurrences of the bound variables, so we'll expand--- them when we encounter them. This gives a chance of matching--- forall x,y. f (g (x,y))--- against--- f (let v = (a,b) in g v)--match menv subst e1 (Let bind e2)- = match (menv { me_env = rn_env' }) subst e1 e2- where- (rn_env', _bndrs') = mapAccumL rnBndrR (me_env menv) (bindersOf bind)- -- It's important to do this renaming, so that the bndrs- -- are brought into the local scope. For example:- -- Matching- -- forall f,x,xs. f (x:xs)- -- against- -- f (let y = e in (y:[]))- -- We must not get success with x->y! So we record that y is- -- locally bound (with rnBndrR), and proceed. The Var case- -- will fail when trying to bind x->y--}---- Everything else fails-match menv subst e1 e2 = -- pprTrace "Failing at" ((text "e1:" <+> ppr e1) $$ (text "e2:" <+> ppr e2)) $- Nothing---------------------------------------------match_var :: MatchEnv- -> SubstEnv- -> Var -- Template- -> CoreExpr -- Target- -> Maybe SubstEnv-match_var menv subst@(tv_subst, id_subst, binds) v1 e2- | v1' `elemVarSet` me_tmpls menv- = case lookupVarEnv id_subst v1' of- Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2))- -> Nothing -- Occurs check failure- -- e.g. match forall a. (\x-> a x) against (\y. y y)-- | otherwise -- No renaming to do on e2, because no free var- -- of e2 is in the rnEnvR of the envt- -- Note [Matching variable types]- -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- -- However, we must match the *types*; e.g.- -- forall (c::Char->Int) (x::Char).- -- f (c x) = "RULE FIRED"- -- We must only match on args that have the right type- -- It's actually quite difficult to come up with an example that shows- -- you need type matching, esp since matching is left-to-right, so type- -- args get matched first. But it's possible (e.g. simplrun008) and- -- this is the Right Thing to do- -> do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1') (exprType e2)- -- c.f. match_ty below- ; return (tv_subst', extendVarEnv id_subst v1' e2, binds) }-- Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2- -> Just subst-- | otherwise- -> Nothing-- | otherwise -- v1 is not a template variable; check for an exact match with e2- = case e2 of- Var v2 | v1' == rnOccR rn_env v2 -> Just subst- other -> Nothing-- where- rn_env = me_env menv- v1' = rnOccL rn_env v1- -- If the template is- -- forall x. f x (\x -> x) = ...- -- Then the x inside the lambda isn't the- -- template x, so we must rename first!----------------------------------------------match_alts :: MatchEnv- -> SubstEnv- -> [CoreAlt] -- Template- -> [CoreAlt] -- Target- -> Maybe SubstEnv-match_alts menv subst [] []- = return subst-match_alts menv subst ((c1,vs1,r1):alts1) ((c2,vs2,r2):alts2)- | c1 == c2- = do { subst1 <- match menv' subst r1 r2- ; match_alts menv subst1 alts1 alts2 }- where- menv' :: MatchEnv- menv' = menv { me_env = rnBndrs2 (me_env menv) vs1 vs2 }--match_alts menv subst alts1 alts2- = Nothing-\end{code}--Matching Core types: use the matcher in TcType.-Notice that we treat newtypes as opaque. For example, suppose-we have a specialised version of a function at a newtype, say- newtype T = MkT Int-We only want to replace (f T) with f', not (f Int).--\begin{code}--------------------------------------------match_ty :: MatchEnv- -> SubstEnv- -> Type -- Template- -> Type -- Target- -> Maybe SubstEnv-match_ty menv (tv_subst, id_subst, binds) ty1 ty2- = do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2- ; return (tv_subst', id_subst, binds) }-\end{code}---Note [Lookup in-scope]-~~~~~~~~~~~~~~~~~~~~~~-Consider this example- foo :: Int -> Maybe Int -> Int- foo 0 (Just n) = n- foo m (Just n) = foo (m-n) (Just n)--SpecConstr sees this fragment:-- case w_smT of wild_Xf [Just A] {- Data.Maybe.Nothing -> lvl_smf;- Data.Maybe.Just n_acT [Just S(L)] ->- case n_acT of wild1_ams [Just A] { GHC.Base.I# y_amr [Just L] ->- \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf- }};--and correctly generates the rule-- RULES: "SC:$wfoo1" [0] __forall {y_amr [Just L] :: GHC.Prim.Int#- sc_snn :: GHC.Prim.Int#}- \$wfoo_smW sc_snn (Data.Maybe.Just @ GHC.Base.Int (GHC.Base.I# y_amr))- = \$s\$wfoo_sno y_amr sc_snn ;]--BUT we must ensure that this rule matches in the original function!-Note that the call to \$wfoo is- \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf--During matching we expand wild_Xf to (Just n_acT). But then we must also-expand n_acT to (I# y_amr). And we can only do that if we look up n_acT-in the in-scope set, because in wild_Xf's unfolding it won't have an unfolding-at all.--That is why the 'lookupRnInScope' call in the (Var v2) case of 'match'-is so important.---%************************************************************************-%* *-\subsection{Checking a program for failing rule applications}-%* *-%************************************************************************-------------------------------------------------------- Game plan--------------------------------------------------------We want to know what sites have rules that could have fired but didn't.-This pass runs over the tree (without changing it) and reports such.--\begin{code}--- | Report partial matches for rules beginning with the specified--- string for the purposes of error reporting-ruleCheckProgram :: (Activation -> Bool) -- ^ Rule activation test- -> String -- ^ Rule pattern- -> RuleBase -- ^ Database of rules- -> [CoreBind] -- ^ Bindings to check in- -> SDoc -- ^ Resulting check message-ruleCheckProgram is_active rule_pat rule_base binds- | isEmptyBag results- = text "Rule check results: no rule application sites"- | otherwise- = vcat [text "Rule check results:",- line,- vcat [ p $$ line | p <- bagToList results ]- ]- where- results = unionManyBags (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base)) binds)- line = text (replicate 20 '-')--data RuleCheckEnv = RuleCheckEnv {- rc_is_active :: Activation -> Bool,- rc_pattern :: String,- rc_rule_base :: RuleBase-}--ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc- -- The Bag returned has one SDoc for each call site found-ruleCheckBind env (NonRec b r) = ruleCheck env r-ruleCheckBind env (Rec prs) = unionManyBags [ruleCheck env r | (b,r) <- prs]--ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc-ruleCheck env (Var v) = emptyBag-ruleCheck env (Lit l) = emptyBag-ruleCheck env (Type ty) = emptyBag-ruleCheck env (App f a) = ruleCheckApp env (App f a) []-ruleCheck env (Note n e) = ruleCheck env e-ruleCheck env (Cast e co) = ruleCheck env e-ruleCheck env (Let bd e) = ruleCheckBind env bd `unionBags` ruleCheck env e-ruleCheck env (Lam b e) = ruleCheck env e-ruleCheck env (Case e _ _ as) = ruleCheck env e `unionBags`- unionManyBags [ruleCheck env r | (_,_,r) <- as]--ruleCheckApp env (App f a) as = ruleCheck env a `unionBags` ruleCheckApp env f (a:as)-ruleCheckApp env (Var f) as = ruleCheckFun env f as-ruleCheckApp env other as = ruleCheck env other-\end{code}--\begin{code}-ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc--- Produce a report for all rules matching the predicate--- saying why it doesn't match the specified application--ruleCheckFun env fn args- | null name_match_rules = emptyBag- | otherwise = unitBag (ruleAppCheck_help (rc_is_active env) fn args name_match_rules)- where- name_match_rules = filter match (getRules (rc_rule_base env) fn)- match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule)--ruleAppCheck_help :: (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc-ruleAppCheck_help is_active fn args rules- = -- The rules match the pattern, so we want to print something- vcat [text "Expression:" <+> ppr (mkApps (Var fn) args),- vcat (map check_rule rules)]- where- n_args = length args- i_args = args `zip` [1::Int ..]- rough_args = map roughTopName args-- check_rule rule = rule_herald rule <> colon <+> rule_info rule-- rule_herald (BuiltinRule { ru_name = name })- = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name)- rule_herald (Rule { ru_name = name })- = ptext (sLit "Rule") <+> doubleQuotes (ftext name)-- rule_info rule- | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args rule- = text "matches (which is very peculiar!)"-- rule_info (BuiltinRule {}) = text "does not match"-- rule_info (Rule { ru_name = name, ru_act = act,- ru_bndrs = rule_bndrs, ru_args = rule_args})- | not (is_active act) = text "active only in later phase"- | n_args < n_rule_args = text "too few arguments"- | n_mismatches == n_rule_args = text "no arguments match"- | n_mismatches == 0 = text "all arguments match (considered individually), but rule as a whole does not"- | otherwise = text "arguments" <+> ppr mismatches <+> text "do not match (1-indexing)"- where- n_rule_args = length rule_args- n_mismatches = length mismatches- mismatches = [i | (rule_arg, (arg,i)) <- rule_args `zip` i_args,- not (isJust (match_fn rule_arg arg))]-- lhs_fvs = exprsFreeVars rule_args -- Includes template tyvars- match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg- where- in_scope = lhs_fvs `unionVarSet` exprFreeVars arg- menv = ME { me_env = mkRnEnv2 (mkInScopeSet in_scope)- , me_tmpls = mkVarSet rule_bndrs }-\end{code}-
− Test/examples/RealHSE.hs
@@ -1,898 +0,0 @@--- #hide--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Lexer--- Copyright : (c) The GHC Team, 1997-2000--- (c) Niklas Broberg, 2004--- License : BSD-style (see the file LICENSE.txt)--- --- Maintainer : Niklas Broberg, d00nibro@dtek.chalmers.se--- Stability : experimental--- Portability : portable------ Lexer for Haskell, with some extensions.------------------------------------------------------------------------------------- ToDo: Introduce different tokens for decimal, octal and hexadecimal (?)--- ToDo: FloatTok should have three parts (integer part, fraction, exponent) (?)--- ToDo: Use a lexical analyser generator (lx?)--module Language.Haskell.Exts.Lexer (Token(..), lexer) where--import Language.Haskell.Exts.ParseMonad--import Data.Char-import Data.Ratio--data Token- = VarId String- | QVarId (String,String)- | IDupVarId (String) -- duplicable implicit parameter- | ILinVarId (String) -- linear implicit parameter- | ConId String- | QConId (String,String)- | DVarId [String] -- to enable varid's with '-' in them- | VarSym String- | ConSym String- | QVarSym (String,String)- | QConSym (String,String)- | IntTok Integer- | FloatTok Rational- | Character Char- | StringTok String---- Symbols-- | LeftParen- | RightParen- | LeftHashParen- | RightHashParen- | SemiColon- | LeftCurly- | RightCurly- | VRightCurly -- a virtual close brace- | LeftSquare- | RightSquare- | Comma- | Underscore- | BackQuote---- Reserved operators-- | Dot -- reserved for use with 'forall x . x'- | DotDot- | Colon- | DoubleColon- | Equals- | Backslash- | Bar- | LeftArrow- | RightArrow- | At- | Tilde- | DoubleArrow- | Minus- | Exclamation- | Star- --- Template Haskell- | THExpQuote -- [| or [e|- | THPatQuote -- [p|- | THDecQuote -- [d|- | THTypQuote -- [t| - | THCloseQuote -- |]- | THIdEscape (String) -- dollar x- | THParenEscape -- dollar ( - | THVarQuote -- 'x (but without the x)- | THTyQuote -- ''T (but without the T)---- HaRP- | RPGuardOpen -- (|- | RPGuardClose -- |)- | RPCAt -- @:---- Hsx- | XCodeTagOpen -- <%- | XCodeTagClose -- %>- | XStdTagOpen -- <- | XStdTagClose -- >- | XCloseTagOpen -- </- | XEmptyTagClose -- />- | XPCDATA String- | XRPatOpen -- <[- | XRPatClose -- ]>- --- Pragmas-- | PragmaEnd -- #-}- | PragmaUnknown (String,String) -- Any pragma not recognized- | RULES- | INLINE Bool- | SPECIALISE- | SPECIALISE_INLINE Bool- | SOURCE- | DEPRECATED- | WARNING- | SCC- | GENERATED- | CORE- | UNPACK- | OPTIONS (Maybe String,String)- | CFILES String- | LANGUAGE- | INCLUDE String--- These are not yet implemented--- | LINE---- Reserved Ids-- | KW_As- | KW_Case- | KW_Class- | KW_Data- | KW_Default- | KW_Deriving- | KW_Do- | KW_MDo- | KW_Else- | KW_Family -- indexed type families- | KW_Forall -- universal/existential types- | KW_Hiding- | KW_If- | KW_Import- | KW_In- | KW_Infix- | KW_InfixL- | KW_InfixR- | KW_Instance- | KW_Let- | KW_Module- | KW_NewType- | KW_Of- | KW_Then- | KW_Type- | KW_Where- | KW_Qualified-- -- FFI- | KW_Foreign- | KW_Export- | KW_Safe- | KW_Unsafe- | KW_Threadsafe- | KW_StdCall- | KW_CCall-- | EOF- deriving (Eq,Show)--reserved_ops :: [(String,Token)]-reserved_ops = [- ( ".", Dot ),- ( "..", DotDot ),- ( ":", Colon ),- ( "::", DoubleColon ),- ( "=", Equals ),- ( "\\", Backslash ),- ( "|", Bar ),- ( "<-", LeftArrow ),- ( "->", RightArrow ),- ( "@", At ),- ( "~", Tilde ),- ( "=>", DoubleArrow ),- ( "*", Star )- ]--special_varops :: [(String,Token)]-special_varops = [- ( "-", Minus ), --ToDo: shouldn't be here- ( "!", Exclamation ) --ditto- ]--reserved_ids :: [(String,Token)]-reserved_ids = [- ( "_", Underscore ),- ( "case", KW_Case ),- ( "class", KW_Class ),- ( "data", KW_Data ),- ( "default", KW_Default ),- ( "deriving", KW_Deriving ),- ( "do", KW_Do ),- ( "else", KW_Else ),- ( "family", KW_Family ), -- indexed type families- ( "forall", KW_Forall ), -- universal/existential quantification- ( "if", KW_If ),- ( "import", KW_Import ),- ( "in", KW_In ),- ( "infix", KW_Infix ),- ( "infixl", KW_InfixL ),- ( "infixr", KW_InfixR ),- ( "instance", KW_Instance ),- ( "let", KW_Let ),- ( "mdo", KW_MDo ),- ( "module", KW_Module ),- ( "newtype", KW_NewType ),- ( "of", KW_Of ),- ( "then", KW_Then ),- ( "type", KW_Type ),- ( "where", KW_Where ),---- FFI- ( "foreign", KW_Foreign )- ]---special_varids :: [(String,Token)]-special_varids = [- ( "as", KW_As ),- ( "qualified", KW_Qualified ),- ( "hiding", KW_Hiding ),---- FFI- ( "export", KW_Export),- ( "safe", KW_Safe),- ( "unsafe", KW_Unsafe),- ( "threadsafe", KW_Threadsafe),- ( "stdcall", KW_StdCall),- ( "ccall", KW_CCall)- ]--pragmas :: [(String,Token)]-pragmas = [- ( "rules", RULES ),- ( "inline", INLINE True ),- ( "noinline", INLINE False ),- ( "notinline", INLINE False ),- ( "specialise", SPECIALISE ),- ( "specialize", SPECIALISE ),- ( "source", SOURCE ),- ( "deprecated", DEPRECATED ),- ( "warning", WARNING ),- ( "scc", SCC ),- ( "generated", GENERATED ),- ( "core", CORE ),- ( "unpack", UNPACK ),- ( "language", LANGUAGE ),- ( "options", OPTIONS undefined ), -- we'll tweak it before use - promise!- ( "cfiles", CFILES undefined ), -- same here...- ( "include", INCLUDE undefined ) -- ...and here!- ]--isIdent, isHSymbol :: Char -> Bool-isIdent c = isAlpha c || isDigit c || c == '\'' || c == '_'--isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'"))--matchChar :: Char -> String -> Lex a ()-matchChar c msg = do- s <- getInput- if null s || head s /= c then fail msg else discard 1---- The top-level lexer.--- We need to know whether we are at the beginning of the line to decide--- whether to insert layout tokens.--lexer :: (Token -> P a) -> P a-lexer = runL $ do- bol <- checkBOL- (bol, ws) <- lexWhiteSpace bol- -- take care of whitespace in PCDATA- ec <- getExtContext- case ec of- -- if there was no linebreak, and we are lexing PCDATA,- -- then we want to care about the whitespace- Just ChildCtxt | not bol && ws -> return $ XPCDATA " "- _ -> do startToken- if bol then lexBOL else lexToken --lexWhiteSpace :: Bool -> Lex a (Bool, Bool)-lexWhiteSpace bol = do- s <- getInput- case s of- '{':'-':'#':_ -> do- return (bol, False)- '{':'-':_ -> do- discard 2- bol <- lexNestedComment bol- (bol, _) <- lexWhiteSpace bol- return (bol, True)- '-':'-':s | all (== '-') (takeWhile isHSymbol s) -> do- lexWhile (== '-')- lexWhile (/= '\n')- s' <- getInput- case s' of- [] -> fail "Unterminated end-of-line comment"- _ -> do- lexNewline- lexWhiteSpace True- return (True, True)- '\n':_ -> do- lexNewline- lexWhiteSpace True- return (True, True)- '\t':_ -> do- lexTab- (bol, _) <- lexWhiteSpace bol- return (bol, True) - c:_ | isSpace c -> do- discard 1- (bol, _) <- lexWhiteSpace bol- return (bol, True)- _ -> return (bol, False)--lexNestedComment :: Bool -> Lex a Bool-lexNestedComment bol = do- s <- getInput- case s of- '-':'}':_ -> discard 2 >> return bol- '{':'-':_ -> do- discard 2- bol <- lexNestedComment bol -- rest of the subcomment- lexNestedComment bol -- rest of this comment- '\t':_ -> lexTab >> lexNestedComment bol- '\n':_ -> lexNewline >> lexNestedComment True- _:_ -> discard 1 >> lexNestedComment bol- [] -> fail "Unterminated nested comment"---- When we are lexing the first token of a line, check whether we need to--- insert virtual semicolons or close braces due to layout.--lexBOL :: Lex a Token-lexBOL = do- pos <- getOffside- case pos of- LT -> do- -- trace "layout: inserting '}'\n" $- -- Set col to 0, indicating that we're still at the- -- beginning of the line, in case we need a semi-colon too.- -- Also pop the context here, so that we don't insert- -- another close brace before the parser can pop it.- setBOL- popContextL "lexBOL"- return VRightCurly- EQ ->- -- trace "layout: inserting ';'\n" $- return SemiColon- GT -> lexToken--lexToken :: Lex a Token-lexToken = do- ec <- getExtContext- case ec of- Just HarpCtxt -> lexHarpToken- Just TagCtxt -> lexTagCtxt- Just CloseTagCtxt -> lexCloseTagCtxt- Just ChildCtxt -> lexChildCtxt- Just CodeTagCtxt -> lexCodeTagCtxt- _ -> lexStdToken---lexChildCtxt :: Lex a Token-lexChildCtxt = do- s <- getInput- case s of- '<':'%':_ -> do discard 2- pushExtContextL CodeTagCtxt- return XCodeTagOpen- '<':'/':_ -> do discard 2- popExtContextL "lexChildCtxt"- pushExtContextL CloseTagCtxt- return XCloseTagOpen- '<':'[':_ -> do discard 2- pushExtContextL HarpCtxt- return XRPatOpen- '<':_ -> do discard 1- pushExtContextL TagCtxt- return XStdTagOpen- _ -> lexPCDATA---lexPCDATA :: Lex a Token-lexPCDATA = do- s <- getInput- case s of- [] -> return EOF- _ -> case s of- '\n':_ -> do- x <- lexNewline >> lexPCDATA- case x of- XPCDATA p -> return $ XPCDATA $ '\n':p- EOF -> return EOF- '<':_ -> return $ XPCDATA ""- _ -> do let pcd = takeWhile (\c -> not $ elem c "<\n") s- l = length pcd- discard l- x <- lexPCDATA- case x of- XPCDATA pcd' -> return $ XPCDATA $ pcd ++ pcd'- EOF -> return EOF---lexCodeTagCtxt :: Lex a Token-lexCodeTagCtxt = do- s <- getInput- case s of- '%':'>':_ -> do discard 2- popExtContextL "lexCodeTagContext"- return XCodeTagClose- _ -> lexStdToken--lexCloseTagCtxt :: Lex a Token-lexCloseTagCtxt = do- s <- getInput- case s of- '>':_ -> do discard 1- popExtContextL "lexCloseTagCtxt"- return XStdTagClose- _ -> lexStdToken--lexTagCtxt :: Lex a Token-lexTagCtxt = do- s <- getInput- case s of- '/':'>':_ -> do discard 2- popExtContextL "lexTagCtxt: Empty tag"- return XEmptyTagClose- '>':_ -> do discard 1- popExtContextL "lexTagCtxt: Standard tag"- pushExtContextL ChildCtxt- return XStdTagClose- _ -> lexStdToken--lexHarpToken :: Lex a Token-lexHarpToken = do- s <- getInput- case s of- ']':'>':_ -> do discard 2- popExtContextL "lexHarpToken"- return XRPatClose- _ -> lexStdToken--lexStdToken :: Lex a Token-lexStdToken = do- s <- getInput- case s of- [] -> return EOF-- '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do- discard 2- n <- lexOctal- return (IntTok n)- | toLower c == 'x' && isHexDigit d -> do- discard 2- n <- lexHexadecimal- return (IntTok n)- - -- implicit parameters- '?':c:_ | isLower c -> do- discard 1- id <- lexWhile isIdent- return $ IDupVarId id-- '%':c:_ | isLower c -> do- discard 1- id <- lexWhile isIdent- return $ ILinVarId id- -- end implicit parameters-- -- harp- '(':'|':c:_ | isHSymbol c -> discard 1 >> return LeftParen- '(':'|':_ -> do discard 2- return RPGuardOpen- '|':')':_ -> do discard 2- return RPGuardClose- '@':':':_ -> do discard 2- return RPCAt- - -- template haskell- '[':'|':_ -> do- discard 2- return $ THExpQuote- - '[':c:'|':_ | c == 'e' -> do- discard 3- return $ THExpQuote- | c == 'p' -> do- discard 3- return THPatQuote- | c == 'd' -> do- discard 3- return THDecQuote- | c == 't' -> do- discard 3- return THTypQuote- - '|':']':_ -> do discard 2- return THCloseQuote- - '$':c:_ | isLower c -> do- discard 1- id <- lexWhile isIdent- return $ THIdEscape id- | c == '(' -> do- discard 2- return THParenEscape- -- end template haskell- - -- hsx- '<':'%':_ -> do discard 2- pushExtContextL CodeTagCtxt- return XCodeTagOpen- '<':c:_ | isAlpha c -> do discard 1- pushExtContextL TagCtxt- return XStdTagOpen- -- end hsx- - '(':'#':_ -> do discard 2 >> return LeftHashParen- - '#':')':_ -> do discard 2 >> return RightHashParen- - -- pragmas- - '{':'-':'#':_ -> do discard 3 >> lexPragmaStart- - '#':'-':'}':_ -> do discard 3 >> return PragmaEnd- - c:_ | isDigit c -> lexDecimalOrFloat-- | isUpper c -> lexConIdOrQual ""-- | isLower c || c == '_' -> do- idents <- lexIdents- case idents of- [ident] -> return $ case lookup ident (reserved_ids ++ special_varids) of- Just keyword -> keyword- Nothing -> VarId ident- _ -> return $ DVarId idents-- | isHSymbol c -> do- sym <- lexWhile isHSymbol- return $ case lookup sym (reserved_ops ++ special_varops) of- Just t -> t- Nothing -> case c of- ':' -> ConSym sym- _ -> VarSym sym-- | otherwise -> do- discard 1- case c of-- -- First the special symbols- '(' -> return LeftParen- ')' -> return RightParen- ',' -> return Comma- ';' -> return SemiColon- '[' -> return LeftSquare- ']' -> return RightSquare- '`' -> return BackQuote- '{' -> do- pushContextL NoLayout- return LeftCurly- '}' -> do- popContextL "lexStdToken"- return RightCurly-- '\'' -> lexCharacter- '"' -> lexString-- _ -> fail ("Illegal character \'" ++ show c ++ "\'\n")-- where lexIdents :: Lex a [String]- lexIdents = do- ident <- lexWhile isIdent- s <- getInput- case s of- '-':c:_ | isAlpha c -> do - discard 1- idents <- lexIdents- return $ ident : idents- '#':_ -> do- discard 1- return [ident ++ "#"]- _ -> return [ident]---lexPragmaStart :: Lex a Token-lexPragmaStart = do- lexWhile isSpace- pr <- lexWhile isAlphaNum- case lookup (map toLower pr) pragmas of- Just SPECIALISE -> do- s <- getInput- case dropWhile isSpace $ map toLower s of- 'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 6- return $ SPECIALISE_INLINE True- 'n':'o':'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 8- return $ SPECIALISE_INLINE False- 'n':'o':'t':'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 9- return $ SPECIALISE_INLINE False- _ -> return SPECIALISE- - Just (OPTIONS _) -> do -- see, I promised we'd mask out the 'undefined'- s <- getInput- case s of- '_':_ -> do- discard 1- com <- lexWhile isIdent- rest <- lexRawPragma- return $ OPTIONS (Just com, rest)- x:_ | isSpace x -> do- rest <- lexRawPragma- return $ OPTIONS (Nothing, rest)- _ -> fail "Malformed Options pragma"- Just (CFILES _) -> do- rest <- lexRawPragma- return $ CFILES rest- Just (INCLUDE _) -> do- rest <- lexRawPragma- return $ INCLUDE rest- Just p -> return p-- _ -> do rawStr <- lexRawPragma- return $ PragmaUnknown (pr, rawStr)--lexRawPragma :: Lex a String-lexRawPragma = do- rpr <- lexRawPragmaAux- return $ dropWhile isSpace rpr- where lexRawPragmaAux = do- rpr <- lexWhile (/='#')- s <- getInput- case s of- '#':'-':'}':_ -> return rpr- _ -> do - discard 1- rpr' <- lexRawPragma- return $ rpr ++ '#':rpr'--lexDecimalOrFloat :: Lex a Token-lexDecimalOrFloat = do- ds <- lexWhile isDigit- rest <- getInput- case rest of- ('.':d:_) | isDigit d -> do- discard 1- frac <- lexWhile isDigit- let num = parseInteger 10 (ds ++ frac)- decimals = toInteger (length frac)- exponent <- do- rest2 <- getInput- case rest2 of- 'e':_ -> lexExponent- 'E':_ -> lexExponent- _ -> return 0- return (FloatTok ((num%1) * 10^^(exponent - decimals)))- e:_ | toLower e == 'e' -> do- exponent <- lexExponent- return (FloatTok ((parseInteger 10 ds%1) * 10^^exponent))- _ -> return (IntTok (parseInteger 10 ds))-- where- lexExponent :: Lex a Integer- lexExponent = do- discard 1 -- 'e' or 'E'- r <- getInput- case r of- '+':d:_ | isDigit d -> do- discard 1- lexDecimal- '-':d:_ | isDigit d -> do- discard 1- n <- lexDecimal- return (negate n)- d:_ | isDigit d -> lexDecimal- _ -> fail "Float with missing exponent"--lexConIdOrQual :: String -> Lex a Token-lexConIdOrQual qual = do- con <- lexWhile isIdent- let conid | null qual = ConId con- | otherwise = QConId (qual,con)- qual' | null qual = con- | otherwise = qual ++ '.':con- just_a_conid <- alternative (return conid)- rest <- getInput- case rest of- '.':c:_- | isLower c || c == '_' -> do -- qualified varid?- discard 1- ident <- lexWhile isIdent- s <- getInput- ident' <- case s of- '#':_ -> discard 1 >> return (ident ++ "#")- _ -> return ident- case lookup ident' reserved_ids of- -- cannot qualify a reserved word- Just _ -> just_a_conid- Nothing -> return (QVarId (qual', ident'))-- | isUpper c -> do -- qualified conid?- discard 1- lexConIdOrQual qual'-- | isHSymbol c -> do -- qualified symbol?- discard 1- sym <- lexWhile isHSymbol- case lookup sym reserved_ops of- -- cannot qualify a reserved operator- Just _ -> just_a_conid- Nothing -> return $ case c of- ':' -> QConSym (qual', sym)- _ -> QVarSym (qual', sym)-- '#':c:_ - | isSpace c -> do- discard 1- case conid of- ConId con -> return $ ConId $ con ++ "#"- QConId (q,con) -> return $ QConId (q,con ++ "#")- _ -> return conid -- not a qualified thing--lexCharacter :: Lex a Token-lexCharacter = do -- We need to keep track of not only character constants but also TH 'x and ''T- -- We've seen ' so far- s <- getInput- case s of- '\'':_ -> discard 1 >> return THTyQuote- '\\':_ -> do - c <- lexEscape - matchQuote- return (Character c)- c:'\'':_ -> discard 2 >> return (Character c)- _ -> return THVarQuote -- where matchQuote = matchChar '\'' "Improperly terminated character constant"---lexString :: Lex a Token-lexString = loop ""- where- loop s = do- r <- getInput- case r of- '\\':'&':_ -> do- discard 2- loop s- '\\':c:_ | isSpace c -> do- discard 1- lexWhiteChars- matchChar '\\' "Illegal character in string gap"- loop s- | otherwise -> do- ce <- lexEscape- loop (ce:s)- '"':_ -> do- discard 1- return (StringTok (reverse s))- c:_ -> do- discard 1- loop (c:s)- [] -> fail "Improperly terminated string"-- lexWhiteChars :: Lex a ()- lexWhiteChars = do- s <- getInput- case s of- '\n':_ -> do- lexNewline- lexWhiteChars- '\t':_ -> do- lexTab- lexWhiteChars- c:_ | isSpace c -> do- discard 1- lexWhiteChars- _ -> return ()--lexEscape :: Lex a Char-lexEscape = do- discard 1- r <- getInput- case r of---- Production charesc from section B.2 (Note: \& is handled by caller)-- 'a':_ -> discard 1 >> return '\a'- 'b':_ -> discard 1 >> return '\b'- 'f':_ -> discard 1 >> return '\f'- 'n':_ -> discard 1 >> return '\n'- 'r':_ -> discard 1 >> return '\r'- 't':_ -> discard 1 >> return '\t'- 'v':_ -> discard 1 >> return '\v'- '\\':_ -> discard 1 >> return '\\'- '"':_ -> discard 1 >> return '\"'- '\'':_ -> discard 1 >> return '\''---- Production ascii from section B.2-- '^':c:_ -> discard 2 >> cntrl c- 'N':'U':'L':_ -> discard 3 >> return '\NUL'- 'S':'O':'H':_ -> discard 3 >> return '\SOH'- 'S':'T':'X':_ -> discard 3 >> return '\STX'- 'E':'T':'X':_ -> discard 3 >> return '\ETX'- 'E':'O':'T':_ -> discard 3 >> return '\EOT'- 'E':'N':'Q':_ -> discard 3 >> return '\ENQ'- 'A':'C':'K':_ -> discard 3 >> return '\ACK'- 'B':'E':'L':_ -> discard 3 >> return '\BEL'- 'B':'S':_ -> discard 2 >> return '\BS'- 'H':'T':_ -> discard 2 >> return '\HT'- 'L':'F':_ -> discard 2 >> return '\LF'- 'V':'T':_ -> discard 2 >> return '\VT'- 'F':'F':_ -> discard 2 >> return '\FF'- 'C':'R':_ -> discard 2 >> return '\CR'- 'S':'O':_ -> discard 2 >> return '\SO'- 'S':'I':_ -> discard 2 >> return '\SI'- 'D':'L':'E':_ -> discard 3 >> return '\DLE'- 'D':'C':'1':_ -> discard 3 >> return '\DC1'- 'D':'C':'2':_ -> discard 3 >> return '\DC2'- 'D':'C':'3':_ -> discard 3 >> return '\DC3'- 'D':'C':'4':_ -> discard 3 >> return '\DC4'- 'N':'A':'K':_ -> discard 3 >> return '\NAK'- 'S':'Y':'N':_ -> discard 3 >> return '\SYN'- 'E':'T':'B':_ -> discard 3 >> return '\ETB'- 'C':'A':'N':_ -> discard 3 >> return '\CAN'- 'E':'M':_ -> discard 2 >> return '\EM'- 'S':'U':'B':_ -> discard 3 >> return '\SUB'- 'E':'S':'C':_ -> discard 3 >> return '\ESC'- 'F':'S':_ -> discard 2 >> return '\FS'- 'G':'S':_ -> discard 2 >> return '\GS'- 'R':'S':_ -> discard 2 >> return '\RS'- 'U':'S':_ -> discard 2 >> return '\US'- 'S':'P':_ -> discard 2 >> return '\SP'- 'D':'E':'L':_ -> discard 3 >> return '\DEL'---- Escaped numbers-- 'o':c:_ | isOctDigit c -> do- discard 1- n <- lexOctal- checkChar n- 'x':c:_ | isHexDigit c -> do- discard 1- n <- lexHexadecimal- checkChar n- c:_ | isDigit c -> do- n <- lexDecimal- checkChar n-- _ -> fail "Illegal escape sequence"-- where- checkChar n | n <= 0x01FFFF = return (chr (fromInteger n))- checkChar _ = fail "Character constant out of range"---- Production cntrl from section B.2-- cntrl :: Char -> Lex a Char- cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'))- cntrl _ = fail "Illegal control character"---- assumes at least one octal digit-lexOctal :: Lex a Integer-lexOctal = do- ds <- lexWhile isOctDigit- return (parseInteger 8 ds)---- assumes at least one hexadecimal digit-lexHexadecimal :: Lex a Integer-lexHexadecimal = do- ds <- lexWhile isHexDigit- return (parseInteger 16 ds)---- assumes at least one decimal digit-lexDecimal :: Lex a Integer-lexDecimal = do- ds <- lexWhile isDigit- return (parseInteger 10 ds)---- Stolen from Hugs's Prelude-parseInteger :: Integer -> String -> Integer-parseInteger radix ds =- foldl1 (\n d -> n * radix + d) (map (toInteger . digitToInt) ds)
− Test/examples/RealHoogle.hs
@@ -1,254 +0,0 @@-{-|- Parse a list of flags supported in any of the front ends.-- Returns the flags in a data structure, along with any invalid flags.- - Deal with any files/include files in this stage.--}--module CmdLine.Flag(- CmdFlag(..), flagsHelp,- flagsWebArgs, flagsWebQuery, flagsCmdLine- ) where--import General.Code-import General.Glob-------------------------------------------------------------------------- The flags--data CmdFlag = Version -- ^ Version information- | Web -- ^ Operate as a CGI process- | Help -- ^ Help text- | Test -- ^ Run the regression tests- | Color Bool -- ^ Colors on the console- | Start Int -- ^ First result to show- | Count Int -- ^ Number of results to show- | Convert FilePath -- ^ Convert a database- | Output FilePath -- ^ Output file- | Dump String -- ^ Dump a database to a file (optional section)- | DataFile FilePath -- ^ Database location- | Verbose -- ^ Display verbose information- | Info -- ^ Display as much information as you can- | Debug -- ^ Do debugging activities- | Include FilePath -- ^ Include directory- | TestFile FilePath -- ^ Run tests in a file- | Rank FilePath -- ^ Generate rankings- | Combine FilePath -- ^ Merge a set of databases- | Mode String -- ^ Web modes- deriving (Show,Eq {-! Enum !-} )----- | In which circumstances are you allowed to pass this command-data Permission = PWebArgs | PWebQuery | PCmdLine | PMultiple- deriving (Show,Eq)--data Argument = ArgNone CmdFlag- | ArgBool (Bool -> CmdFlag)- | ArgInt (Int -> CmdFlag)- | ArgNat (Int -> CmdFlag)- | ArgPos (Int -> CmdFlag)- | ArgFileIn (FilePath -> CmdFlag) [String]- | ArgFileOut (FilePath -> CmdFlag)- | ArgDir (FilePath -> CmdFlag)- | ArgStr (String -> CmdFlag)--instance Show Argument where- show (ArgNone _) = ""- show (ArgInt _) = "INT"- show (ArgNat _) = "NAT"- show (ArgPos _) = "POS"- show (ArgBool _) = "BOOL"- show (ArgFileIn _ _) = "FILE"- show (ArgFileOut _) = "FILE"- show (ArgDir _) = "DIR"- show (ArgStr _) = "STR"---data FlagInfo = FlagInfo {- argument :: Argument,- names :: [String],- permissions :: [Permission],- description :: String- }--flagInfo =- [f (ArgNone Version) ["version","ver"] [PCmdLine] "Print out version information"- ,f (ArgNone Help) ["?","help","h"] [PCmdLine] "Show help message"- ,f (ArgNone Web) ["w","web"] [PCmdLine] "Run as though it was a CGI script"- ,f (ArgBool Color) ["c","color","col","colour"] [PCmdLine] "Show color output (default=false)"- ,f (ArgPos Start) ["s","start"] [PCmdLine,PWebArgs] "First result to show (default=1)"- ,f (ArgPos Count) ["n","count","length","len"] [PCmdLine,PWebArgs] "Number of results to show (default=all)"- ,f (ArgNone Test) ["test"] [PCmdLine] "Run the regression tests"- ,f (ArgFileIn Convert ["txt"]) ["convert"] [PCmdLine,PMultiple] "Convert a database"- ,f (ArgFileOut Output) ["output"] [PCmdLine] "Output file for convert"- ,f (ArgStr Dump) ["dump"] [PCmdLine] "Dump a database for debugging"- ,f (ArgFileIn DataFile ["hoo"]) ["d","data"] [PCmdLine,PMultiple] "Database file"- ,f (ArgNone Verbose) ["v","verbose"] [PCmdLine] "Display verbose information"- ,f (ArgNone Info) ["info"] [PCmdLine] "Display full information on an entry"- ,f (ArgNone Debug) ["debug"] [PCmdLine] "Debugging only"- ,f (ArgDir Include) ["i","include"] [PCmdLine,PMultiple] "Include directories"- ,f (ArgFileIn TestFile ["txt"]) ["testfile"] [PCmdLine,PMultiple] "Run tests from a file"- ,f (ArgFileIn Rank ["txt"]) ["rank"] [PCmdLine,PMultiple] "Generate ranking scores"- ,f (ArgFileIn Combine ["hoo"]) ["combine"] [PCmdLine,PMultiple] "Combine multiple databases"- ,f (ArgStr Mode) ["mode"] [PCmdLine,PWebArgs] "Web mode"- ]- where f = FlagInfo---cmdFlagBadArg flag typ "" = "Missing argument to flag " ++ flag ++ ", expected argument of type " ++ typ-cmdFlagBadArg flag "" x = "Unexpected argument to flag " ++ flag ++ ", got \"" ++ x ++ "\""-cmdFlagBadArg flag typ x = "Bad argument to flag " ++ flag ++ ", expected argument of type " ++ typ ++ ", got \"" ++ x ++ "\""--cmdFlagPermission flag = "Flag not allowed when running in this mode, flag " ++ flag--cmdFlagUnknown flag = "Unknown flag " ++ flag--cmdFlagDuplicate flag = "The flag " ++ flag ++ " may only occur once, but occured multiple times"--------------------------------------------------------------------------- Operations on Flags---- | flags that are passed in through web arguments,--- i.e. ?foo=bar&...-flagsWebArgs :: [(String,String)] -> IO ([CmdFlag],[String])-flagsWebArgs = parseFlags PWebArgs----- | flags that are given in the web query string-flagsWebQuery :: [(String,String)] -> IO ([CmdFlag],[String])-flagsWebQuery = parseFlags PWebQuery----- | flags that are given in a query on the command line-flagsCmdLine :: [(String,String)] -> IO ([CmdFlag],[String])-flagsCmdLine = parseFlags PCmdLine---flagsHelp :: String-flagsHelp = unlines $ map f res- where- f (a,b,c) = " " ++ (if null a then " " else "--" ++ a ++ ",") ++- " --" ++ b ++ replicate (maxLong - length b) ' ' ++- " " ++ c-- maxLong = maximum $ map (length . snd3) res- res = [ (shortOpt (names i), longOpt (names i) ++ typ (argument i), description i)- | i <- flagInfo, PCmdLine `elem` permissions i]-- shortOpt ([x]:_) = [x]- shortOpt _ = ""- - longOpt ([_]:x:_) = x- longOpt (x:_) = x-- typ x = ['='|s/=""] ++ s- where s = show x--------------------------------------------------------------------------- Parsing Flags---- TODO: check no flag is specified twice--- TODO: Fix a bug, try /merge=t1;t2 and you get [t1,t1,t2,t2]-parseFlags :: Permission -> [(String,String)] -> IO ([CmdFlag],[String])-parseFlags perm xs = do- let args = concatMap (parseFlag perm) xs- inc = [x | Right (_,_,_,Include x) <- args]- incs <- mapM globDir $ ["."|null inc] ++ inc- (a,b) <- mapAndUnzipM (f incs) args- return ([Include "."|null inc] ++ concat a, concat b)- where- f inc (Right (_,val,FlagInfo{argument=ArgFileIn gen exts},_)) = do- let vals = parseFile val- files <- concatMapM (globFile inc exts) vals- return (map gen files, [])- f inc (Left v) = return ([],[v])- f inc (Right (_,_,_,v)) = return ([v],[])----- does all validity checks apart from checking for duplicate flags-parseFlag :: Permission -> (String, String) -> [Either String (String,String,FlagInfo,CmdFlag)]-parseFlag perm (key,val)- | isNothing m = [Left $ cmdFlagUnknown key]- | perm `notElem` permissions flg = [Left $ cmdFlagPermission key]- | null arg = [Left $ cmdFlagBadArg key (show $ argument flg) val]- | otherwise = [Right (key,val,flg,a) | a <- arg]- where- key2 = lower key- m@ ~(Just flg) = listToMaybe [i | i <- flagInfo, key2 `elem` names i]- arg = parseArg (argument flg) val---parseArg :: Argument -> String -> [CmdFlag]-parseArg (ArgNone v) xs = [v | null xs]-parseArg (ArgStr v) xs = [v xs]-parseArg (ArgBool v) xs = map v $ parseBool xs-parseArg (ArgNat v) xs = map v $ parseNat xs-parseArg (ArgInt v) xs = map v $ parseInt xs-parseArg (ArgPos v) xs = map v $ parsePos xs-parseArg (ArgFileIn v _) xs = map v $ parseFile xs-parseArg (ArgFileOut v) xs = map v $ parseFile xs-parseArg (ArgDir v) xs = map v $ parseFile xs---parseNat, parsePos, parseInt :: String -> [Int]-parseNat = filter (>= 0) . parseInt-parsePos = filter (> 0) . parseInt-parseInt x = [a | (a,"") <- reads x]--parseFile :: String -> [String]-parseFile = splitSearchPath--parseBool :: String -> [Bool]-parseBool v | v2 `elem` ["","on","yes","1","true","meep"] = [True]- | v2 `elem` ["off","no","0","false","moop"] = [False]- | otherwise = []- where v2 = lower v--------------------------------------------------------------- DERIVES GENERATED CODE--- DO NOT MODIFY BELOW THIS LINE--- CHECKSUM: 1401092643--instance Enum CmdFlag- where toEnum 0 = Version{}- toEnum 1 = Web{}- toEnum 2 = Help{}- toEnum 3 = Test{}- toEnum 4 = Color{}- toEnum 5 = Start{}- toEnum 6 = Count{}- toEnum 7 = Convert{}- toEnum 8 = Output{}- toEnum 9 = Dump{}- toEnum 10 = DataFile{}- toEnum 11 = Verbose{}- toEnum 12 = Info{}- toEnum 13 = Debug{}- toEnum 14 = Include{}- toEnum 15 = TestFile{}- toEnum 16 = Rank{}- toEnum 17 = Combine{}- toEnum n = error ((++) "toEnum " ((++) (show n) ", not defined for CmdFlag"))- fromEnum (Version {}) = 0- fromEnum (Web {}) = 1- fromEnum (Help {}) = 2- fromEnum (Test {}) = 3- fromEnum (Color {}) = 4- fromEnum (Start {}) = 5- fromEnum (Count {}) = 6- fromEnum (Convert {}) = 7- fromEnum (Output {}) = 8- fromEnum (Dump {}) = 9- fromEnum (DataFile {}) = 10- fromEnum (Verbose {}) = 11- fromEnum (Info {}) = 12- fromEnum (Debug {}) = 13- fromEnum (Include {}) = 14- fromEnum (TestFile {}) = 15- fromEnum (Rank {}) = 16- fromEnum (Combine {}) = 17
− Test/examples/RealTagSoup.hs
@@ -1,395 +0,0 @@-{-# OPTIONS_GHC -w #-}--{--The XML spec is done mainly from memory. The only special bits are:--Attributes-------------"foo" as an attribute comes out as an attribute with a value and no text-to allow DOCTYPE tags to get parsed as normal.--References (aka Character and Entity References)-------------A character reference is one of:--entity = '&#' [0-9]+ ';' - | '&#x' [0-9a-fA-F]+ ';'- | '&' name ';'--The maximum character reference is 0x10FFFF--name = (letter | '_' | ':') (namechar)*-namechar = letter | digit | '.' | '-' | '_' | ':' | combiningchar | extender-combiningchar and extender are assumed to be empty-letter = isAlpha-digit = isDigit--}---module Text.HTML.TagSoup.Parser(- parseTags, parseTagsOptions,- ParseOptions(..), parseOptions- ) where--import Text.HTML.TagSoup.Type-import Text.HTML.TagSoup.Entity-import Control.Monad.State-import Data.Char-import Data.List-import Data.Maybe---infix 9 ?->--(?->) :: Bool -> [x] -> [x]-(?->) b true = if b then true else []-------------------------------------------------------------------------- * ParseOptions--data ParseOptions = ParseOptions- {optTagPosition :: Bool -- ^ Should 'TagPosition' values be given before every item- ,optTagWarning :: Bool -- ^ Should 'TagWarning' values be given- ,optLookupEntity :: String -> [Tag] -- ^ How to lookup an entity- ,optMaxEntityLength :: Maybe Int -- ^ The maximum length of an entities content- -- (Nothing for no maximum, default to 10)- }----- Default 'ParseOptions' structure-parseOptions :: ParseOptions-parseOptions = ParseOptions False False f (Just 10)- where- f x = case lookupEntity x of- Nothing -> [TagText $ "&" ++ x ++ ";", TagWarning $ "Unknown entity: &" ++ x ++ ";"]- Just x -> [TagText [x]]---parseTags :: String -> [Tag]-parseTags = parseTagsOptions parseOptions--tagWarn :: ParseOptions -> String -> [Tag]-tagWarn opts x = [TagWarning x | optTagWarning opts]-------------------------------------------------------------------------- * Positions---- All positions are stored as a row and a column, with (1,1) being the--- top-left position--data Position = Position !Row !Column---updateOnString :: Position -> String -> Position-updateOnString = foldl' updateOnChar--updateOnChar :: Position -> Char -> Position-updateOnChar (Position r c) x = case x of- '\n' -> Position (r+1) c- '\t' -> Position r (c + 8 - mod (c-1) 8)- _ -> Position r (c+1)---tagPos :: ParseOptions -> Position -> [Tag]-tagPos opts (Position r c) = [TagPosition r c | optTagPosition opts]--tagPosWarn :: ParseOptions -> Position -> String -> [Tag]-tagPosWarn opts p x = optTagWarning opts ?-> (tagPos opts p ++ [TagWarning x])--tagPosWarnFix :: ParseOptions -> Position -> [Tag] -> [Tag]-tagPosWarnFix opts p = addPositions . remWarnings- where- remWarnings = if optTagWarning opts then id else filter (not . isTagWarning)- addPositions = concatMap (\x -> tagPos opts p ++ [x])- -------------------------------------------------------------------------- * Driver--parseTagsOptions :: ParseOptions -> String -> [Tag]-parseTagsOptions opts x = mergeTexts $ evalState (parse opts) $ Value x (Position 0 0)----- | Combine adjacent text nodes.------ If two text nodes are separated only a position node, delete the position.--- If two text nodes are separated only by a warning, move the warning afterwards.--- If a position immediately proceeds a warning, count that into the warning.------ Note: this function leaks stack on Hugs.-mergeTexts :: [Tag] -> [Tag]-mergeTexts (TagText x:xs) = (TagText $ concat $ x:texts) : warns ++ mergeTexts rest- where- (texts,warns,rest) = f xs-- f (TagText x:xs) = (x:a,b,c)- where (a,b,c) = f xs- f (TagPosition _ _:TagText x:xs) = (x:a,b,c)- where (a,b,c) = f xs-- f (p@TagPosition{}:TagWarning y:xs) = (a,p:TagWarning y:b,c)- where (a,b,c) = f xs- f (TagWarning x:xs) = (a,TagWarning x:b,c)- where (a,b,c) = f xs-- f xs = ([],[],xs)--mergeTexts (x:xs) = x : mergeTexts xs-mergeTexts [] = []--------------------------------------------------------------------------- * Combinators--data Value = Value String !Position--type Parser a = State Value a---isNameCharFirst x = isAlphaNum x || x `elem` "_:"-isNameChar x = isAlphaNum x || x `elem` "-_:."---- Read and consume n characters from the stream, updating the position.--- Highly likely to be a potential for space leaks from this, unless @n@ is bounded.-consume :: Int -> Parser ()-consume n = do- Value s p <- get- let (a,b) = splitAt n s- put $ Value b (updateOnString p a)----- Break once an end string is encountered.--- Return the string before, and a boolean indicating if the end was matched.-breakOn :: String -> Parser (String,Bool)-breakOn end = do- Value s p <- get- if null s then- return ("",True)- else if end `isPrefixOf` s then- consume (length end) >> return ("",False)- else do- consume 1- ~(a,b) <- breakOn end- return (head s:a,b)---- Break after an HTML name (entity, attribute or tag name)--- Note: potential space leak with consume at the end-breakName :: Parser String-breakName = do- Value s p <- get- if not (null s) && isNameCharFirst (head s) then do- let (a,b) = span isNameChar s- consume (length a)- return a- else- return ""---- Break after a number has been read--- Note: potential space leak with consume at the end-breakNumber :: Parser (Maybe Int)-breakNumber = do- Value s p <- get- if not (null s) && isDigit (head s) then do- let (a,b) = span isDigit s- consume (length a)- return $ Just $ read a- else- return Nothing----- Drop a number of spaces--- Note: potential space leak with consume at the end-dropSpaces :: Parser ()-dropSpaces = do- Value s p <- get- let n = length $ takeWhile isSpace s- consume n--------------------------------------------------------------------------- * Parser--parse :: ParseOptions -> Parser [Tag]-parse opts = do- Value s p <- get- case s of- '<':'!':'-':'-':_ -> consume 4 >> comment opts p- '<':'/':_ -> consume 2 >> close opts p- '<':_ -> consume 1 >> open opts p- [] -> return []- '&':_ -> do- consume 1- s <- entity opts p- rest <- parse opts- return $ s ++ rest- s:ss -> do- consume 1- rest <- parse opts- return $ tagPos opts p ++ [TagText [s]] ++ rest---- have read "<!--"-comment opts p1 = do- ~(inner,bad) <- breakOn "-->"- rest <- parse opts- return $ tagPos opts p1 ++ [TagComment inner] ++- (bad ?-> tagPosWarn opts p1 "Unexpected end when looking for \"-->\"") ++- rest---close opts p1 = do- name <- breakName- dropSpaces- ~(Value s p) <- get- rest <- f s- return $ tagPos opts p1 ++ [TagClose name] ++- (null name ?-> tagPosWarn opts p1 "Empty name in close tag") ++- rest- where- f ('>':s) = do- consume 1- rest <- parse opts- return rest-- f _ = do- ~(_,bad) <- breakOn ">"- rest <- parse opts- return $ tagPosWarn opts p1 "Junk in closing tag" ++- bad ?-> tagPosWarn opts p1 "Unexpected end when looking for \">\"" ++- rest----- an open tag, perhaps <? or <!-open opts p1 = do- Value s p <- get- prefix <- if take 1 s `elem` ["!","?"] then consume 1 >> return [head s] else return ""- name <- liftM (prefix++) breakName- if null name then do- rest <- parse opts- return $ tagPos opts p1 ++ [TagText ('<':prefix)] ++ tagPosWarn opts p1 "Expected name of tag" ++ rest- else do- ~(atts,shut,warns) <- attribs opts p1- rest <- parse opts- return $ tagPos opts p1 ++ [TagOpen name atts] ++- shut ?-> (tagPos opts p1 ++ [TagClose name]) ++- warns ++ rest----- read a list of attributes--- return (the attributes read, if the tag is self-shutting, any warnings) -attribs :: ParseOptions -> Position -> Parser ([Attribute],Bool,[Tag])-attribs opts p1 = do- dropSpaces- Value s p <- get- case s of- '/':'>':_ -> consume 2 >> return ([],True ,[])- '>':_ -> consume 1 >> return ([],False,[])- x:xs | x `elem` "'\"" -> do- ~(val,warns1) <- value opts- ~(atts,shut,warns2) <- attribs opts p1- return (("",val):atts,shut,warns1++warns2)- [] -> return ([],False,tagPosWarn opts p1 "Unexpected end when looking for \">\"")- _ -> attrib opts p1----- read a single attribute--- return (the attributes read, if the tag is self-shutting, any warnings) -attrib :: ParseOptions -> Position -> Parser ([Attribute],Bool,[Tag])-attrib opts p1 = do- name <- breakName- if null name then do- consume 1- ~(atts,shut,warns) <- attribs opts p1- return (atts,shut,tagPosWarn opts p1 "Junk character in tag" ++ warns)- else do- ~(Value sold p) <- get- dropSpaces- ~(Value s p) <- get- ~(val,warns1) <- f sold s- ~(atts,shut,warns2) <- attribs opts p1- return ((name,val):atts,shut,warns1++warns2)- where- f sold ('=':s) = consume 1 >> dropSpaces >> value opts- f sold s | not $ junk sold = return ([], [])- | otherwise = do- ~(Value s p) <- get- dropJunk- return ([], tagPosWarn opts p "Junk character in tag")-- junk ('/':'>':_) = False- junk ('>':_) = False- junk (c:cs) | not $ isSpace c = True- junk _ = False- - dropJunk = do- ~(Value s p) <- get- when (junk s) $ consume 1 >> dropJunk----- read a single value--- return (value,warnings)-value :: ParseOptions -> Parser (String,[Tag])-value opts = do- Value s p <- get- case s of- '\"':_ -> consume 1 >> f p True "\""- '\'':_ -> consume 1 >> f p True "\'"- _ -> f p False ">"- where- f p1 quote end = do- Value s p <- get- case s of- '&':_ -> do- consume 1- ~(cs1,warns1) <- entityString opts p- ~(cs2,warns2) <- f p1 quote end- return (cs1++cs2,warns1++warns2)- '/':'>':_ | not quote -> do- return ([],[])- c:_ | c `elem` end || (not quote && isSpace c) -> do- if quote then consume 1 else return ()- return ([],[])- c:_ -> do- consume 1- ~(cs,warns) <- f p1 quote end- return (c:cs,warns)- [] -> return ([],tagPosWarn opts p1 "Unexpected end in attibute value")------ have seen an &, and have consumed it--- return a [Tag] to go in a tag stream-entity :: ParseOptions -> Position -> Parser [Tag]-entity opts p1 = do- Value s p <- get- case s of- '#':'x':_ -> f "#x" isHexDigit - '#':_ -> f "#" isDigit- _ -> f "" isNameChar- where- f prefix match = do- consume (length prefix)- g match (reverse prefix) (fromMaybe maxBound (optMaxEntityLength opts))- - g match buf bound | bound < 0 = return $- tagPos opts p1 ++ [TagText ('&':reverse buf)] ++- tagPosWarn opts p1 "Unexpected '&' not in an entity"-- g match buf bound = do- Value s p <- get- case s of- ';':_ -> do- consume 1- return $ tagPosWarnFix opts p1 $ optLookupEntity opts (reverse buf)- x:xs | match x -> consume 1 >> g match (x:buf) (bound-1) - _ -> g match buf (-1)- ----- return the tag and some position information-entityString :: ParseOptions -> Position -> Parser (String,[Tag])-entityString opts p = do- tags <- entity opts p- let warnings = tagPosWarnFix opts p $ filter isTagWarning tags- return (innerText tags, warnings)
− Test/examples/RecordInfixSelector.hs
@@ -1,3 +0,0 @@-data RecordWithInfixSelector = Cons { (<>) :: Int -> Int } - -idRecord = Cons { (<>) = id }
− Test/examples/RecordWildcards.hs
@@ -1,5 +0,0 @@-{-# LANGUAGE RecordWildCards, NamedFieldPuns #-}--data Foo = Foo {a :: Int, b :: Int}--foo Foo{b, ..} = a
− Test/examples/RelaxedDo.hs
@@ -1,13 +0,0 @@-module Main where - -import Control.Monad - -main :: IO () -main = do - when ( 2 > 1) $ do - putStrLn "a" - putStrLn "b" - -nestedDoBlocks = getChar >>= (\c1 -> do - getChar >>= (\c2 -> do - getChar >>= (\c3 -> return [c1,c2,c3])))
− Test/examples/SCCPragmas.hs
@@ -1,3 +0,0 @@-module SCCPragmas where - -x = {-# SCC "wibble" #-} 3
− Test/examples/ScopedTypeVariables.hs
@@ -1,12 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}--test :: IO Char-test = do- x :: Char <- getChar- return x---value :: String = "Hello"--forallTest :: forall x . Eq x => x -> x-forallTest x = if x == x then (undefined :: x) else x
− Test/examples/SimpleDeriving.hs
@@ -1,1 +0,0 @@-data T = T deriving Eq
− Test/examples/SingleClassAsst.hs
@@ -1,4 +0,0 @@-module Test where - -foo :: (Eq a) => a -> a -foo x = x
− Test/examples/SpecializeInstance.hs
@@ -1,4 +0,0 @@-instance Sized a => Sized (Digit a) where - {-# SPECIALIZE instance Sized (Digit (Elem a)) #-} - {-# SPECIALIZE instance Sized (Digit (Node a)) #-} - size xs = foldl (\ i x -> i + size x) 0 xs
− Test/examples/Testing.hs
@@ -1,2 +0,0 @@-{-# LINE 5 "templates\GenericTemplate.hs" #-} -main = return ()
− Test/examples/TupleSections.hs
@@ -1,3 +0,0 @@-{-# LANGUAGE TupleSections #-} - -foo x = (1,,) x 3
− Test/examples/TypeFunctions.hs
@@ -1,7 +0,0 @@-{-# LANGUAGE TypeFamilies, KindSignatures #-}--data Id = Id--type family Rep (f :: * -> *) x :: *--type instance Rep Id x = x
− Test/examples/TypeOperatorsTest.hs
@@ -1,4 +0,0 @@-{-# LANGUAGE TypeOperators, FlexibleContexts, FlexibleInstances #-}--f :: ArrowXml (~>) => a ~> a-f = undefined
− Test/examples/Unicode.hs
@@ -1,118 +0,0 @@-{-# LANGUAGE UnicodeSyntax #-}-module Main where--import System.Environment--main :: IO ()-main = do- as ← getArgs- print $ as- print $ test 0- print $ test2 0- print $ testRewrite 0- print $ testRewriteReverse 0- print $ testRewrite2 0- print $ testRewriteReverse2 0--test :: a → Bool-test x = pi- where- f = replicate 2000 x- i = repeat x- pf = f |> 300- pi = i |> 300--test2 :: a → (Bool,Bool)-test2 x = (pf,pi)- where- f = replicate 2000 x- i = repeat x- pf = f |> 300- pi = i |> 300--testRewrite :: a → Bool-testRewrite x = pi- where- f = replicate 2000 x- i = repeat x- lf = length f- li = length i- pf = lf > 300- pi = li > 300--testRewriteReverse :: a → Bool-testRewriteReverse x = pi- where- f = replicate 2000 x- i = repeat x- lf = length f- li = length i- pf = 300 ≤ lf- pi = 300 ≤ li--testRewrite2 :: a → (Bool,Bool)-testRewrite2 x = (length i > 300,300 > length i)- where--- f = replicate 2000 x- i = repeat x--- lf = length f--- li = length i--- pf = lf > 300--- pi = li > 300--testRewriteReverse2 :: a → (Bool,Bool)-testRewriteReverse2 x = (2000 < length i,length i > 20)- where- f = replicate 2000 x- i = repeat x- lf = length f- li = length i- pf = 2000 == lf- pi = lf ≥ li---lengthOP :: (Num a, Ord a) ⇒ Bool → (a → a → Bool) → [b] → a → Bool-lengthOP v (⊜) [] n = 0 ⊜ n-lengthOP v (⊜) xxs n = co xxs 0- where- co (_:xs) c | n > c = co xs (c+1)- | otherwise = v- co [] c = c ⊜ n--(≣) = (==)-(≤) = (<=)-(≥) = (>=)--(|≣) = lengthOP False (≣)-(|<) = lengthOP False (<)-(|≤) = lengthOP False (≤)-(|>) = lengthOP True (>)-(|≥) = lengthOP True (≥)--(|=) = lengthOP False (==)-(|==) = lengthOP False (==)-(|<=) = lengthOP False (<=)-(|>=) = lengthOP False (>=)----- ≣≤≥-(≣|) = flip (|≣)-(<|) = flip (|≥)-(≤|) = flip (|>)-(>|) = flip (|≤)-(≥|) = flip (|<)--{-# RULES--- length-"xs |≣ n" forall xs n. (length xs) == n = xs |≣ n-"xs |< n" forall xs n. (length xs) < n = xs |< n-"xs |≤ n" forall xs n. (length xs) <= n = xs |≤ n-"xs |> n" forall xs n. (length xs) > n = xs |> n-"xs |≥ n" forall xs n. (length xs) >= n = xs |≥ n--"n ≣| xs" forall xs n. n == (length xs) = xs |≣ n-"n <| xs" forall xs n. n < (length xs) = xs |≥ n-"n ≤| xs" forall xs n. n <= (length xs) = xs |> n-"n >| xs" forall xs n. n > (length xs) = xs |≤ n-"n ≥| xs" forall xs n. n >= (length xs) = xs |< n- #-}
− Test/examples/UnicodeSyntax.hs
@@ -1,12 +0,0 @@-{-# LANGUAGE UnicodeSyntax #-} -module UnicodeSyntax where - -import System.Environment (getArgs) - -main :: IO () -main = do - as ← getArgs - print $ test 0 - -test :: Int → Bool -test x = x*5 == x+8
− Test/examples/UnindentedPragmaClose.hs
@@ -1,4 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses-#-}-f :: Int-f = 4
− Test/examples/WhereBlock.hs
@@ -1,3 +0,0 @@-hash ptr len = f len - where f h = return h - f p = (p `advancePtr` 1)
− Test/examples/WithKeyword.hs
@@ -1,1 +0,0 @@-with = 1
− Test/failing.txt
@@ -1,3 +0,0 @@-Unicode.hs Fails if readFile is not Unicode-aware, i.e. if GHC 6.12 is not used. -UnicodeSyntax.hs Same as above. -ForeignImport.hs Shouldn't succeed. Lacks ForeignFunctionInterface pragma, but complains about missing TemplateHaskell.
− Test/printFail.txt
@@ -1,3 +0,0 @@-HexPrec.hs Uses hexadecimal notation to specify precedence of infix operator. We don't retain that info. -RealGHC.lhs Literate haskell. -SpecializeInstance.hs Prints SPECIALISE instead of SPECIALIZE.
− dist/build/Language/Haskell/Exts/InternalParser.hs
@@ -1,8095 +0,0 @@-{-# OPTIONS -fglasgow-exts -cpp #-}-{-# OPTIONS_HADDOCK hide #-}--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Annotated.Parser--- Copyright : (c) Niklas Broberg 2004-2009,--- Original (c) Simon Marlow, Sven Panne 1997-2000--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable-------------------------------------------------------------------------------------module Language.Haskell.Exts.InternalParser (- -- * General parsing- ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,- -- * Parsing of specific AST elements- -- ** Modules- parseModule, parseModuleWithMode, parseModuleWithComments,- -- ** Expressions- parseExp, parseExpWithMode, parseExpWithComments,- -- ** Statements- parseStmt, parseStmtWithMode, parseStmtWithComments,- -- ** Patterns- parsePat, parsePatWithMode, parsePatWithComments,- -- ** Declarations- parseDecl, parseDeclWithMode, parseDeclWithComments,- -- ** Types- parseType, parseTypeWithMode, parseTypeWithComments,- -- ** Multiple modules in one file- parseModules, parseModulesWithMode, parseModulesWithComments,- -- ** Option pragmas- getTopPragmas- ) where-import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )-import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst )-import Language.Haskell.Exts.ParseMonad-import Language.Haskell.Exts.Lexer-import Language.Haskell.Exts.ParseUtils-import Language.Haskell.Exts.Annotated.Fixity-import Language.Haskell.Exts.SrcLoc-import Language.Haskell.Exts.Comments ( Comment )-import Language.Haskell.Exts.Extension--import Control.Monad ( liftM, (<=<) )-#if __GLASGOW_HASKELL__ >= 503-import Data.Array-#else-import Array-#endif-#if __GLASGOW_HASKELL__ >= 503-import GHC.Exts-#else-import GlaExts-#endif---- parser produced by Happy Version 1.17--newtype HappyAbsSyn = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = GHC.Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn11 :: ([Module L]) -> (HappyAbsSyn )-happyIn11 x = unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn ) -> ([Module L])-happyOut11 x = unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: ([[ModulePragma L] -> [S] -> L -> Module L]) -> (HappyAbsSyn )-happyIn12 x = unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn ) -> ([[ModulePragma L] -> [S] -> L -> Module L])-happyOut12 x = unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: (Module L) -> (HappyAbsSyn )-happyIn13 x = unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn ) -> (Module L)-happyOut13 x = unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (PExp L) -> (HappyAbsSyn )-happyIn14 x = unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn ) -> (PExp L)-happyOut14 x = unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: (([ModulePragma L],[S],L)) -> (HappyAbsSyn )-happyIn15 x = unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],L))-happyOut15 x = unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: (([ModulePragma L],[S],Maybe L)) -> (HappyAbsSyn )-happyIn16 x = unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],Maybe L))-happyOut16 x = unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: (ModulePragma L) -> (HappyAbsSyn )-happyIn17 x = unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn ) -> (ModulePragma L)-happyOut17 x = unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: (([Name L],[S])) -> (HappyAbsSyn )-happyIn18 x = unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn ) -> (([Name L],[S]))-happyOut18 x = unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: ([ModulePragma L] -> [S] -> L -> Module L) -> (HappyAbsSyn )-happyIn19 x = unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn ) -> ([ModulePragma L] -> [S] -> L -> Module L)-happyOut19 x = unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: (Maybe (ModuleHead L)) -> (HappyAbsSyn )-happyIn20 x = unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn ) -> (Maybe (ModuleHead L))-happyOut20 x = unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: (Maybe (WarningText L)) -> (HappyAbsSyn )-happyIn21 x = unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn ) -> (Maybe (WarningText L))-happyOut21 x = unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: (([ImportDecl L],[Decl L],[S],L)) -> (HappyAbsSyn )-happyIn22 x = unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S],L))-happyOut22 x = unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: (([ImportDecl L],[Decl L],[S])) -> (HappyAbsSyn )-happyIn23 x = unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S]))-happyOut23 x = unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: ([S]) -> (HappyAbsSyn )-happyIn24 x = unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn ) -> ([S])-happyOut24 x = unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: ([S]) -> (HappyAbsSyn )-happyIn25 x = unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn ) -> ([S])-happyOut25 x = unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: (Maybe (ExportSpecList L)) -> (HappyAbsSyn )-happyIn26 x = unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn ) -> (Maybe (ExportSpecList L))-happyOut26 x = unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: (ExportSpecList L) -> (HappyAbsSyn )-happyIn27 x = unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn ) -> (ExportSpecList L)-happyOut27 x = unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: ([S]) -> (HappyAbsSyn )-happyIn28 x = unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn ) -> ([S])-happyOut28 x = unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: (([ExportSpec L],[S])) -> (HappyAbsSyn )-happyIn29 x = unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn ) -> (([ExportSpec L],[S]))-happyOut29 x = unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: (ExportSpec L) -> (HappyAbsSyn )-happyIn30 x = unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn ) -> (ExportSpec L)-happyOut30 x = unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: (([ImportDecl L],[S])) -> (HappyAbsSyn )-happyIn31 x = unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn ) -> (([ImportDecl L],[S]))-happyOut31 x = unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: (ImportDecl L) -> (HappyAbsSyn )-happyIn32 x = unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn ) -> (ImportDecl L)-happyOut32 x = unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: ((Bool,[S])) -> (HappyAbsSyn )-happyIn33 x = unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn ) -> ((Bool,[S]))-happyOut33 x = unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: ((Bool,[S])) -> (HappyAbsSyn )-happyIn34 x = unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn ) -> ((Bool,[S]))-happyOut34 x = unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: ((Maybe String,[S])) -> (HappyAbsSyn )-happyIn35 x = unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn ) -> ((Maybe String,[S]))-happyOut35 x = unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: ((Maybe (ModuleName L),[S],Maybe L)) -> (HappyAbsSyn )-happyIn36 x = unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn ) -> ((Maybe (ModuleName L),[S],Maybe L))-happyOut36 x = unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: (Maybe (ImportSpecList L)) -> (HappyAbsSyn )-happyIn37 x = unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn ) -> (Maybe (ImportSpecList L))-happyOut37 x = unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: (ImportSpecList L) -> (HappyAbsSyn )-happyIn38 x = unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn ) -> (ImportSpecList L)-happyOut38 x = unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: ((Bool, Maybe L,[S])) -> (HappyAbsSyn )-happyIn39 x = unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn ) -> ((Bool, Maybe L,[S]))-happyOut39 x = unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: (([ImportSpec L],[S])) -> (HappyAbsSyn )-happyIn40 x = unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn ) -> (([ImportSpec L],[S]))-happyOut40 x = unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: (ImportSpec L) -> (HappyAbsSyn )-happyIn41 x = unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn ) -> (ImportSpec L)-happyOut41 x = unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: (([CName L],[S])) -> (HappyAbsSyn )-happyIn42 x = unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn ) -> (([CName L],[S]))-happyOut42 x = unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: (CName L) -> (HappyAbsSyn )-happyIn43 x = unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn ) -> (CName L)-happyOut43 x = unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: (Decl L) -> (HappyAbsSyn )-happyIn44 x = unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn ) -> (Decl L)-happyOut44 x = unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: ((Maybe Int, [S])) -> (HappyAbsSyn )-happyIn45 x = unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn ) -> ((Maybe Int, [S]))-happyOut45 x = unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: (Assoc L) -> (HappyAbsSyn )-happyIn46 x = unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn ) -> (Assoc L)-happyOut46 x = unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: (([Op L],[S],L)) -> (HappyAbsSyn )-happyIn47 x = unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> (([Op L],[S],L))-happyOut47 x = unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: (([Decl L],[S])) -> (HappyAbsSyn )-happyIn48 x = unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> (([Decl L],[S]))-happyOut48 x = unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: (([Decl L],[S])) -> (HappyAbsSyn )-happyIn49 x = unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> (([Decl L],[S]))-happyOut49 x = unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: (Decl L) -> (HappyAbsSyn )-happyIn50 x = unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> (Decl L)-happyOut50 x = unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: (DataOrNew L) -> (HappyAbsSyn )-happyIn51 x = unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> (DataOrNew L)-happyOut51 x = unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: (([Type L],[S])) -> (HappyAbsSyn )-happyIn52 x = unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> (([Type L],[S]))-happyOut52 x = unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: (([Decl L],[S])) -> (HappyAbsSyn )-happyIn53 x = unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> (([Decl L],[S]))-happyOut53 x = unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: (([Decl L],[S])) -> (HappyAbsSyn )-happyIn54 x = unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> (([Decl L],[S]))-happyOut54 x = unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: (Decl L) -> (HappyAbsSyn )-happyIn55 x = unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> (Decl L)-happyOut55 x = unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: (Binds L) -> (HappyAbsSyn )-happyIn56 x = unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> (Binds L)-happyOut56 x = unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: (Decl L) -> (HappyAbsSyn )-happyIn57 x = unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> (Decl L)-happyOut57 x = unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: (Decl L) -> (HappyAbsSyn )-happyIn58 x = unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn ) -> (Decl L)-happyOut58 x = unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: (([Type L],[S])) -> (HappyAbsSyn )-happyIn59 x = unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn ) -> (([Type L],[S]))-happyOut59 x = unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: (Type L) -> (HappyAbsSyn )-happyIn60 x = unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn ) -> (Type L)-happyOut60 x = unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: (Binds L) -> (HappyAbsSyn )-happyIn61 x = unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn ) -> (Binds L)-happyOut61 x = unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: (([Name L],[S],L)) -> (HappyAbsSyn )-happyIn62 x = unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn ) -> (([Name L],[S],L))-happyOut62 x = unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: (CallConv L) -> (HappyAbsSyn )-happyIn63 x = unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn ) -> (CallConv L)-happyOut63 x = unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: (Maybe (Safety L)) -> (HappyAbsSyn )-happyIn64 x = unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn ) -> (Maybe (Safety L))-happyOut64 x = unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: ((Maybe String, Name L, Type L, [S])) -> (HappyAbsSyn )-happyIn65 x = unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn ) -> ((Maybe String, Name L, Type L, [S]))-happyOut65 x = unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: ([Rule L]) -> (HappyAbsSyn )-happyIn66 x = unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn ) -> ([Rule L])-happyOut66 x = unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: (Rule L) -> (HappyAbsSyn )-happyIn67 x = unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn ) -> (Rule L)-happyOut67 x = unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: (Maybe (Activation L)) -> (HappyAbsSyn )-happyIn68 x = unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn ) -> (Maybe (Activation L))-happyOut68 x = unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: ((Maybe [RuleVar L],[S])) -> (HappyAbsSyn )-happyIn69 x = unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn ) -> ((Maybe [RuleVar L],[S]))-happyOut69 x = unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: ([RuleVar L]) -> (HappyAbsSyn )-happyIn70 x = unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn ) -> ([RuleVar L])-happyOut70 x = unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: (RuleVar L) -> (HappyAbsSyn )-happyIn71 x = unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn ) -> (RuleVar L)-happyOut71 x = unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: (([([Name L],String)],[S])) -> (HappyAbsSyn )-happyIn72 x = unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn ) -> (([([Name L],String)],[S]))-happyOut72 x = unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: ((([Name L], String),[S])) -> (HappyAbsSyn )-happyIn73 x = unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn ) -> ((([Name L], String),[S]))-happyOut73 x = unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: (([Name L],[S])) -> (HappyAbsSyn )-happyIn74 x = unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn ) -> (([Name L],[S]))-happyOut74 x = unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: (Name L) -> (HappyAbsSyn )-happyIn75 x = unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn ) -> (Name L)-happyOut75 x = unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: (Annotation L) -> (HappyAbsSyn )-happyIn76 x = unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn ) -> (Annotation L)-happyOut76 x = unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: (Type L) -> (HappyAbsSyn )-happyIn77 x = unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn ) -> (Type L)-happyOut77 x = unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: (PType L) -> (HappyAbsSyn )-happyIn78 x = unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn ) -> (PType L)-happyOut78 x = unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: (Type L) -> (HappyAbsSyn )-happyIn79 x = unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn ) -> (Type L)-happyOut79 x = unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: (PType L) -> (HappyAbsSyn )-happyIn80 x = unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn ) -> (PType L)-happyOut80 x = unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (Type L) -> (HappyAbsSyn )-happyIn81 x = unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn ) -> (Type L)-happyOut81 x = unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: (PType L) -> (HappyAbsSyn )-happyIn82 x = unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn ) -> (PType L)-happyOut82 x = unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyIn83 :: (Type L) -> (HappyAbsSyn )-happyIn83 x = unsafeCoerce# x-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn ) -> (Type L)-happyOut83 x = unsafeCoerce# x-{-# INLINE happyOut83 #-}-happyIn84 :: (PType L) -> (HappyAbsSyn )-happyIn84 x = unsafeCoerce# x-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn ) -> (PType L)-happyOut84 x = unsafeCoerce# x-{-# INLINE happyOut84 #-}-happyIn85 :: (QName L) -> (HappyAbsSyn )-happyIn85 x = unsafeCoerce# x-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn ) -> (QName L)-happyOut85 x = unsafeCoerce# x-{-# INLINE happyOut85 #-}-happyIn86 :: (QName L) -> (HappyAbsSyn )-happyIn86 x = unsafeCoerce# x-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn ) -> (QName L)-happyOut86 x = unsafeCoerce# x-{-# INLINE happyOut86 #-}-happyIn87 :: (QName L) -> (HappyAbsSyn )-happyIn87 x = unsafeCoerce# x-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn ) -> (QName L)-happyOut87 x = unsafeCoerce# x-{-# INLINE happyOut87 #-}-happyIn88 :: (Type L) -> (HappyAbsSyn )-happyIn88 x = unsafeCoerce# x-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn ) -> (Type L)-happyOut88 x = unsafeCoerce# x-{-# INLINE happyOut88 #-}-happyIn89 :: (PType L) -> (HappyAbsSyn )-happyIn89 x = unsafeCoerce# x-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn ) -> (PType L)-happyOut89 x = unsafeCoerce# x-{-# INLINE happyOut89 #-}-happyIn90 :: (PContext L) -> (HappyAbsSyn )-happyIn90 x = unsafeCoerce# x-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn ) -> (PContext L)-happyOut90 x = unsafeCoerce# x-{-# INLINE happyOut90 #-}-happyIn91 :: (([PType L],[S])) -> (HappyAbsSyn )-happyIn91 x = unsafeCoerce# x-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn ) -> (([PType L],[S]))-happyOut91 x = unsafeCoerce# x-{-# INLINE happyOut91 #-}-happyIn92 :: (([PType L],[S])) -> (HappyAbsSyn )-happyIn92 x = unsafeCoerce# x-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn ) -> (([PType L],[S]))-happyOut92 x = unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyIn93 :: (([TyVarBind L],Maybe L)) -> (HappyAbsSyn )-happyIn93 x = unsafeCoerce# x-{-# INLINE happyIn93 #-}-happyOut93 :: (HappyAbsSyn ) -> (([TyVarBind L],Maybe L))-happyOut93 x = unsafeCoerce# x-{-# INLINE happyOut93 #-}-happyIn94 :: (TyVarBind L) -> (HappyAbsSyn )-happyIn94 x = unsafeCoerce# x-{-# INLINE happyIn94 #-}-happyOut94 :: (HappyAbsSyn ) -> (TyVarBind L)-happyOut94 x = unsafeCoerce# x-{-# INLINE happyOut94 #-}-happyIn95 :: (([Name L],Maybe L)) -> (HappyAbsSyn )-happyIn95 x = unsafeCoerce# x-{-# INLINE happyIn95 #-}-happyOut95 :: (HappyAbsSyn ) -> (([Name L],Maybe L))-happyOut95 x = unsafeCoerce# x-{-# INLINE happyOut95 #-}-happyIn96 :: (([Name L],L)) -> (HappyAbsSyn )-happyIn96 x = unsafeCoerce# x-{-# INLINE happyIn96 #-}-happyOut96 :: (HappyAbsSyn ) -> (([Name L],L))-happyOut96 x = unsafeCoerce# x-{-# INLINE happyOut96 #-}-happyIn97 :: (([FunDep L],[S],Maybe L)) -> (HappyAbsSyn )-happyIn97 x = unsafeCoerce# x-{-# INLINE happyIn97 #-}-happyOut97 :: (HappyAbsSyn ) -> (([FunDep L],[S],Maybe L))-happyOut97 x = unsafeCoerce# x-{-# INLINE happyOut97 #-}-happyIn98 :: (([FunDep L],[S],L)) -> (HappyAbsSyn )-happyIn98 x = unsafeCoerce# x-{-# INLINE happyIn98 #-}-happyOut98 :: (HappyAbsSyn ) -> (([FunDep L],[S],L))-happyOut98 x = unsafeCoerce# x-{-# INLINE happyOut98 #-}-happyIn99 :: (FunDep L) -> (HappyAbsSyn )-happyIn99 x = unsafeCoerce# x-{-# INLINE happyIn99 #-}-happyOut99 :: (HappyAbsSyn ) -> (FunDep L)-happyOut99 x = unsafeCoerce# x-{-# INLINE happyOut99 #-}-happyIn100 :: (([GadtDecl L],[S],Maybe L)) -> (HappyAbsSyn )-happyIn100 x = unsafeCoerce# x-{-# INLINE happyIn100 #-}-happyOut100 :: (HappyAbsSyn ) -> (([GadtDecl L],[S],Maybe L))-happyOut100 x = unsafeCoerce# x-{-# INLINE happyOut100 #-}-happyIn101 :: (([GadtDecl L],[S])) -> (HappyAbsSyn )-happyIn101 x = unsafeCoerce# x-{-# INLINE happyIn101 #-}-happyOut101 :: (HappyAbsSyn ) -> (([GadtDecl L],[S]))-happyOut101 x = unsafeCoerce# x-{-# INLINE happyOut101 #-}-happyIn102 :: (([GadtDecl L],[S])) -> (HappyAbsSyn )-happyIn102 x = unsafeCoerce# x-{-# INLINE happyIn102 #-}-happyOut102 :: (HappyAbsSyn ) -> (([GadtDecl L],[S]))-happyOut102 x = unsafeCoerce# x-{-# INLINE happyOut102 #-}-happyIn103 :: (GadtDecl L) -> (HappyAbsSyn )-happyIn103 x = unsafeCoerce# x-{-# INLINE happyIn103 #-}-happyOut103 :: (HappyAbsSyn ) -> (GadtDecl L)-happyOut103 x = unsafeCoerce# x-{-# INLINE happyOut103 #-}-happyIn104 :: (([QualConDecl L],[S],Maybe L)) -> (HappyAbsSyn )-happyIn104 x = unsafeCoerce# x-{-# INLINE happyIn104 #-}-happyOut104 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],Maybe L))-happyOut104 x = unsafeCoerce# x-{-# INLINE happyOut104 #-}-happyIn105 :: (([QualConDecl L],[S],L)) -> (HappyAbsSyn )-happyIn105 x = unsafeCoerce# x-{-# INLINE happyIn105 #-}-happyOut105 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],L))-happyOut105 x = unsafeCoerce# x-{-# INLINE happyOut105 #-}-happyIn106 :: (QualConDecl L) -> (HappyAbsSyn )-happyIn106 x = unsafeCoerce# x-{-# INLINE happyIn106 #-}-happyOut106 :: (HappyAbsSyn ) -> (QualConDecl L)-happyOut106 x = unsafeCoerce# x-{-# INLINE happyOut106 #-}-happyIn107 :: ((Maybe [TyVarBind L], [S], Maybe L)) -> (HappyAbsSyn )-happyIn107 x = unsafeCoerce# x-{-# INLINE happyIn107 #-}-happyOut107 :: (HappyAbsSyn ) -> ((Maybe [TyVarBind L], [S], Maybe L))-happyOut107 x = unsafeCoerce# x-{-# INLINE happyOut107 #-}-happyIn108 :: (ConDecl L) -> (HappyAbsSyn )-happyIn108 x = unsafeCoerce# x-{-# INLINE happyIn108 #-}-happyOut108 :: (HappyAbsSyn ) -> (ConDecl L)-happyOut108 x = unsafeCoerce# x-{-# INLINE happyOut108 #-}-happyIn109 :: ((Name L, [BangType L], L)) -> (HappyAbsSyn )-happyIn109 x = unsafeCoerce# x-{-# INLINE happyIn109 #-}-happyOut109 :: (HappyAbsSyn ) -> ((Name L, [BangType L], L))-happyOut109 x = unsafeCoerce# x-{-# INLINE happyOut109 #-}-happyIn110 :: ((Name L, [BangType L],L)) -> (HappyAbsSyn )-happyIn110 x = unsafeCoerce# x-{-# INLINE happyIn110 #-}-happyOut110 :: (HappyAbsSyn ) -> ((Name L, [BangType L],L))-happyOut110 x = unsafeCoerce# x-{-# INLINE happyOut110 #-}-happyIn111 :: (BangType L) -> (HappyAbsSyn )-happyIn111 x = unsafeCoerce# x-{-# INLINE happyIn111 #-}-happyOut111 :: (HappyAbsSyn ) -> (BangType L)-happyOut111 x = unsafeCoerce# x-{-# INLINE happyOut111 #-}-happyIn112 :: (BangType L) -> (HappyAbsSyn )-happyIn112 x = unsafeCoerce# x-{-# INLINE happyIn112 #-}-happyOut112 :: (HappyAbsSyn ) -> (BangType L)-happyOut112 x = unsafeCoerce# x-{-# INLINE happyOut112 #-}-happyIn113 :: (([FieldDecl L],[S])) -> (HappyAbsSyn )-happyIn113 x = unsafeCoerce# x-{-# INLINE happyIn113 #-}-happyOut113 :: (HappyAbsSyn ) -> (([FieldDecl L],[S]))-happyOut113 x = unsafeCoerce# x-{-# INLINE happyOut113 #-}-happyIn114 :: (FieldDecl L) -> (HappyAbsSyn )-happyIn114 x = unsafeCoerce# x-{-# INLINE happyIn114 #-}-happyOut114 :: (HappyAbsSyn ) -> (FieldDecl L)-happyOut114 x = unsafeCoerce# x-{-# INLINE happyOut114 #-}-happyIn115 :: (BangType L) -> (HappyAbsSyn )-happyIn115 x = unsafeCoerce# x-{-# INLINE happyIn115 #-}-happyOut115 :: (HappyAbsSyn ) -> (BangType L)-happyOut115 x = unsafeCoerce# x-{-# INLINE happyOut115 #-}-happyIn116 :: (Maybe (Deriving L)) -> (HappyAbsSyn )-happyIn116 x = unsafeCoerce# x-{-# INLINE happyIn116 #-}-happyOut116 :: (HappyAbsSyn ) -> (Maybe (Deriving L))-happyOut116 x = unsafeCoerce# x-{-# INLINE happyOut116 #-}-happyIn117 :: (([InstHead L],[S])) -> (HappyAbsSyn )-happyIn117 x = unsafeCoerce# x-{-# INLINE happyIn117 #-}-happyOut117 :: (HappyAbsSyn ) -> (([InstHead L],[S]))-happyOut117 x = unsafeCoerce# x-{-# INLINE happyOut117 #-}-happyIn118 :: (QName L) -> (HappyAbsSyn )-happyIn118 x = unsafeCoerce# x-{-# INLINE happyIn118 #-}-happyOut118 :: (HappyAbsSyn ) -> (QName L)-happyOut118 x = unsafeCoerce# x-{-# INLINE happyOut118 #-}-happyIn119 :: (Kind L) -> (HappyAbsSyn )-happyIn119 x = unsafeCoerce# x-{-# INLINE happyIn119 #-}-happyOut119 :: (HappyAbsSyn ) -> (Kind L)-happyOut119 x = unsafeCoerce# x-{-# INLINE happyOut119 #-}-happyIn120 :: (Kind L) -> (HappyAbsSyn )-happyIn120 x = unsafeCoerce# x-{-# INLINE happyIn120 #-}-happyOut120 :: (HappyAbsSyn ) -> (Kind L)-happyOut120 x = unsafeCoerce# x-{-# INLINE happyOut120 #-}-happyIn121 :: (Kind L) -> (HappyAbsSyn )-happyIn121 x = unsafeCoerce# x-{-# INLINE happyIn121 #-}-happyOut121 :: (HappyAbsSyn ) -> (Kind L)-happyOut121 x = unsafeCoerce# x-{-# INLINE happyOut121 #-}-happyIn122 :: ((Maybe (Kind L), [S])) -> (HappyAbsSyn )-happyIn122 x = unsafeCoerce# x-{-# INLINE happyIn122 #-}-happyOut122 :: (HappyAbsSyn ) -> ((Maybe (Kind L), [S]))-happyOut122 x = unsafeCoerce# x-{-# INLINE happyOut122 #-}-happyIn123 :: ((Maybe [ClassDecl L],[S],Maybe L)) -> (HappyAbsSyn )-happyIn123 x = unsafeCoerce# x-{-# INLINE happyIn123 #-}-happyOut123 :: (HappyAbsSyn ) -> ((Maybe [ClassDecl L],[S],Maybe L))-happyOut123 x = unsafeCoerce# x-{-# INLINE happyOut123 #-}-happyIn124 :: (([ClassDecl L],[S])) -> (HappyAbsSyn )-happyIn124 x = unsafeCoerce# x-{-# INLINE happyIn124 #-}-happyOut124 :: (HappyAbsSyn ) -> (([ClassDecl L],[S]))-happyOut124 x = unsafeCoerce# x-{-# INLINE happyOut124 #-}-happyIn125 :: (([ClassDecl L],[S])) -> (HappyAbsSyn )-happyIn125 x = unsafeCoerce# x-{-# INLINE happyIn125 #-}-happyOut125 :: (HappyAbsSyn ) -> (([ClassDecl L],[S]))-happyOut125 x = unsafeCoerce# x-{-# INLINE happyOut125 #-}-happyIn126 :: (ClassDecl L) -> (HappyAbsSyn )-happyIn126 x = unsafeCoerce# x-{-# INLINE happyIn126 #-}-happyOut126 :: (HappyAbsSyn ) -> (ClassDecl L)-happyOut126 x = unsafeCoerce# x-{-# INLINE happyOut126 #-}-happyIn127 :: (ClassDecl L) -> (HappyAbsSyn )-happyIn127 x = unsafeCoerce# x-{-# INLINE happyIn127 #-}-happyOut127 :: (HappyAbsSyn ) -> (ClassDecl L)-happyOut127 x = unsafeCoerce# x-{-# INLINE happyOut127 #-}-happyIn128 :: ((Maybe [InstDecl L],[S],Maybe L)) -> (HappyAbsSyn )-happyIn128 x = unsafeCoerce# x-{-# INLINE happyIn128 #-}-happyOut128 :: (HappyAbsSyn ) -> ((Maybe [InstDecl L],[S],Maybe L))-happyOut128 x = unsafeCoerce# x-{-# INLINE happyOut128 #-}-happyIn129 :: (([InstDecl L],[S])) -> (HappyAbsSyn )-happyIn129 x = unsafeCoerce# x-{-# INLINE happyIn129 #-}-happyOut129 :: (HappyAbsSyn ) -> (([InstDecl L],[S]))-happyOut129 x = unsafeCoerce# x-{-# INLINE happyOut129 #-}-happyIn130 :: (([InstDecl L],[S])) -> (HappyAbsSyn )-happyIn130 x = unsafeCoerce# x-{-# INLINE happyIn130 #-}-happyOut130 :: (HappyAbsSyn ) -> (([InstDecl L],[S]))-happyOut130 x = unsafeCoerce# x-{-# INLINE happyOut130 #-}-happyIn131 :: (InstDecl L) -> (HappyAbsSyn )-happyIn131 x = unsafeCoerce# x-{-# INLINE happyIn131 #-}-happyOut131 :: (HappyAbsSyn ) -> (InstDecl L)-happyOut131 x = unsafeCoerce# x-{-# INLINE happyOut131 #-}-happyIn132 :: (InstDecl L) -> (HappyAbsSyn )-happyIn132 x = unsafeCoerce# x-{-# INLINE happyIn132 #-}-happyOut132 :: (HappyAbsSyn ) -> (InstDecl L)-happyOut132 x = unsafeCoerce# x-{-# INLINE happyOut132 #-}-happyIn133 :: (Decl L) -> (HappyAbsSyn )-happyIn133 x = unsafeCoerce# x-{-# INLINE happyIn133 #-}-happyOut133 :: (HappyAbsSyn ) -> (Decl L)-happyOut133 x = unsafeCoerce# x-{-# INLINE happyOut133 #-}-happyIn134 :: ((Maybe (Binds L),[S])) -> (HappyAbsSyn )-happyIn134 x = unsafeCoerce# x-{-# INLINE happyIn134 #-}-happyOut134 :: (HappyAbsSyn ) -> ((Maybe (Binds L),[S]))-happyOut134 x = unsafeCoerce# x-{-# INLINE happyOut134 #-}-happyIn135 :: ((Maybe (Type L),[S])) -> (HappyAbsSyn )-happyIn135 x = unsafeCoerce# x-{-# INLINE happyIn135 #-}-happyOut135 :: (HappyAbsSyn ) -> ((Maybe (Type L),[S]))-happyOut135 x = unsafeCoerce# x-{-# INLINE happyOut135 #-}-happyIn136 :: (Rhs L) -> (HappyAbsSyn )-happyIn136 x = unsafeCoerce# x-{-# INLINE happyIn136 #-}-happyOut136 :: (HappyAbsSyn ) -> (Rhs L)-happyOut136 x = unsafeCoerce# x-{-# INLINE happyOut136 #-}-happyIn137 :: (([GuardedRhs L],L)) -> (HappyAbsSyn )-happyIn137 x = unsafeCoerce# x-{-# INLINE happyIn137 #-}-happyOut137 :: (HappyAbsSyn ) -> (([GuardedRhs L],L))-happyOut137 x = unsafeCoerce# x-{-# INLINE happyOut137 #-}-happyIn138 :: (GuardedRhs L) -> (HappyAbsSyn )-happyIn138 x = unsafeCoerce# x-{-# INLINE happyIn138 #-}-happyOut138 :: (HappyAbsSyn ) -> (GuardedRhs L)-happyOut138 x = unsafeCoerce# x-{-# INLINE happyOut138 #-}-happyIn139 :: (Exp L) -> (HappyAbsSyn )-happyIn139 x = unsafeCoerce# x-{-# INLINE happyIn139 #-}-happyOut139 :: (HappyAbsSyn ) -> (Exp L)-happyOut139 x = unsafeCoerce# x-{-# INLINE happyOut139 #-}-happyIn140 :: (PExp L) -> (HappyAbsSyn )-happyIn140 x = unsafeCoerce# x-{-# INLINE happyIn140 #-}-happyOut140 :: (HappyAbsSyn ) -> (PExp L)-happyOut140 x = unsafeCoerce# x-{-# INLINE happyOut140 #-}-happyIn141 :: (PExp L) -> (HappyAbsSyn )-happyIn141 x = unsafeCoerce# x-{-# INLINE happyIn141 #-}-happyOut141 :: (HappyAbsSyn ) -> (PExp L)-happyOut141 x = unsafeCoerce# x-{-# INLINE happyOut141 #-}-happyIn142 :: (PExp L) -> (HappyAbsSyn )-happyIn142 x = unsafeCoerce# x-{-# INLINE happyIn142 #-}-happyOut142 :: (HappyAbsSyn ) -> (PExp L)-happyOut142 x = unsafeCoerce# x-{-# INLINE happyOut142 #-}-happyIn143 :: (PExp L) -> (HappyAbsSyn )-happyIn143 x = unsafeCoerce# x-{-# INLINE happyIn143 #-}-happyOut143 :: (HappyAbsSyn ) -> (PExp L)-happyOut143 x = unsafeCoerce# x-{-# INLINE happyOut143 #-}-happyIn144 :: (PExp L) -> (HappyAbsSyn )-happyIn144 x = unsafeCoerce# x-{-# INLINE happyIn144 #-}-happyOut144 :: (HappyAbsSyn ) -> (PExp L)-happyOut144 x = unsafeCoerce# x-{-# INLINE happyOut144 #-}-happyIn145 :: (PExp L) -> (HappyAbsSyn )-happyIn145 x = unsafeCoerce# x-{-# INLINE happyIn145 #-}-happyOut145 :: (HappyAbsSyn ) -> (PExp L)-happyOut145 x = unsafeCoerce# x-{-# INLINE happyOut145 #-}-happyIn146 :: (PExp L) -> (HappyAbsSyn )-happyIn146 x = unsafeCoerce# x-{-# INLINE happyIn146 #-}-happyOut146 :: (HappyAbsSyn ) -> (PExp L)-happyOut146 x = unsafeCoerce# x-{-# INLINE happyOut146 #-}-happyIn147 :: (PExp L) -> (HappyAbsSyn )-happyIn147 x = unsafeCoerce# x-{-# INLINE happyIn147 #-}-happyOut147 :: (HappyAbsSyn ) -> (PExp L)-happyOut147 x = unsafeCoerce# x-{-# INLINE happyOut147 #-}-happyIn148 :: ([Pat L]) -> (HappyAbsSyn )-happyIn148 x = unsafeCoerce# x-{-# INLINE happyIn148 #-}-happyOut148 :: (HappyAbsSyn ) -> ([Pat L])-happyOut148 x = unsafeCoerce# x-{-# INLINE happyOut148 #-}-happyIn149 :: (Pat L) -> (HappyAbsSyn )-happyIn149 x = unsafeCoerce# x-{-# INLINE happyIn149 #-}-happyOut149 :: (HappyAbsSyn ) -> (Pat L)-happyOut149 x = unsafeCoerce# x-{-# INLINE happyOut149 #-}-happyIn150 :: (PExp L) -> (HappyAbsSyn )-happyIn150 x = unsafeCoerce# x-{-# INLINE happyIn150 #-}-happyOut150 :: (HappyAbsSyn ) -> (PExp L)-happyOut150 x = unsafeCoerce# x-{-# INLINE happyOut150 #-}-happyIn151 :: (PExp L) -> (HappyAbsSyn )-happyIn151 x = unsafeCoerce# x-{-# INLINE happyIn151 #-}-happyOut151 :: (HappyAbsSyn ) -> (PExp L)-happyOut151 x = unsafeCoerce# x-{-# INLINE happyOut151 #-}-happyIn152 :: (PExp L) -> (HappyAbsSyn )-happyIn152 x = unsafeCoerce# x-{-# INLINE happyIn152 #-}-happyOut152 :: (HappyAbsSyn ) -> (PExp L)-happyOut152 x = unsafeCoerce# x-{-# INLINE happyOut152 #-}-happyIn153 :: ([S]) -> (HappyAbsSyn )-happyIn153 x = unsafeCoerce# x-{-# INLINE happyIn153 #-}-happyOut153 :: (HappyAbsSyn ) -> ([S])-happyOut153 x = unsafeCoerce# x-{-# INLINE happyOut153 #-}-happyIn154 :: (PExp L) -> (HappyAbsSyn )-happyIn154 x = unsafeCoerce# x-{-# INLINE happyIn154 #-}-happyOut154 :: (HappyAbsSyn ) -> (PExp L)-happyOut154 x = unsafeCoerce# x-{-# INLINE happyOut154 #-}-happyIn155 :: (([Maybe (PExp L)],[S])) -> (HappyAbsSyn )-happyIn155 x = unsafeCoerce# x-{-# INLINE happyIn155 #-}-happyOut155 :: (HappyAbsSyn ) -> (([Maybe (PExp L)],[S]))-happyOut155 x = unsafeCoerce# x-{-# INLINE happyOut155 #-}-happyIn156 :: (([PExp L],[S])) -> (HappyAbsSyn )-happyIn156 x = unsafeCoerce# x-{-# INLINE happyIn156 #-}-happyOut156 :: (HappyAbsSyn ) -> (([PExp L],[S]))-happyOut156 x = unsafeCoerce# x-{-# INLINE happyOut156 #-}-happyIn157 :: (PExp L) -> (HappyAbsSyn )-happyIn157 x = unsafeCoerce# x-{-# INLINE happyIn157 #-}-happyOut157 :: (HappyAbsSyn ) -> (PExp L)-happyOut157 x = unsafeCoerce# x-{-# INLINE happyOut157 #-}-happyIn158 :: (PExp L) -> (HappyAbsSyn )-happyIn158 x = unsafeCoerce# x-{-# INLINE happyIn158 #-}-happyOut158 :: (HappyAbsSyn ) -> (PExp L)-happyOut158 x = unsafeCoerce# x-{-# INLINE happyOut158 #-}-happyIn159 :: ([PExp L]) -> (HappyAbsSyn )-happyIn159 x = unsafeCoerce# x-{-# INLINE happyIn159 #-}-happyOut159 :: (HappyAbsSyn ) -> ([PExp L])-happyOut159 x = unsafeCoerce# x-{-# INLINE happyOut159 #-}-happyIn160 :: (PExp L) -> (HappyAbsSyn )-happyIn160 x = unsafeCoerce# x-{-# INLINE happyIn160 #-}-happyOut160 :: (HappyAbsSyn ) -> (PExp L)-happyOut160 x = unsafeCoerce# x-{-# INLINE happyOut160 #-}-happyIn161 :: (XName L) -> (HappyAbsSyn )-happyIn161 x = unsafeCoerce# x-{-# INLINE happyIn161 #-}-happyOut161 :: (HappyAbsSyn ) -> (XName L)-happyOut161 x = unsafeCoerce# x-{-# INLINE happyOut161 #-}-happyIn162 :: (Loc String) -> (HappyAbsSyn )-happyIn162 x = unsafeCoerce# x-{-# INLINE happyIn162 #-}-happyOut162 :: (HappyAbsSyn ) -> (Loc String)-happyOut162 x = unsafeCoerce# x-{-# INLINE happyOut162 #-}-happyIn163 :: (Loc String) -> (HappyAbsSyn )-happyIn163 x = unsafeCoerce# x-{-# INLINE happyIn163 #-}-happyOut163 :: (HappyAbsSyn ) -> (Loc String)-happyOut163 x = unsafeCoerce# x-{-# INLINE happyOut163 #-}-happyIn164 :: ([ParseXAttr L]) -> (HappyAbsSyn )-happyIn164 x = unsafeCoerce# x-{-# INLINE happyIn164 #-}-happyOut164 :: (HappyAbsSyn ) -> ([ParseXAttr L])-happyOut164 x = unsafeCoerce# x-{-# INLINE happyOut164 #-}-happyIn165 :: (ParseXAttr L) -> (HappyAbsSyn )-happyIn165 x = unsafeCoerce# x-{-# INLINE happyIn165 #-}-happyOut165 :: (HappyAbsSyn ) -> (ParseXAttr L)-happyOut165 x = unsafeCoerce# x-{-# INLINE happyOut165 #-}-happyIn166 :: (Maybe (PExp L)) -> (HappyAbsSyn )-happyIn166 x = unsafeCoerce# x-{-# INLINE happyIn166 #-}-happyOut166 :: (HappyAbsSyn ) -> (Maybe (PExp L))-happyOut166 x = unsafeCoerce# x-{-# INLINE happyOut166 #-}-happyIn167 :: (L -> PExp L) -> (HappyAbsSyn )-happyIn167 x = unsafeCoerce# x-{-# INLINE happyIn167 #-}-happyOut167 :: (HappyAbsSyn ) -> (L -> PExp L)-happyOut167 x = unsafeCoerce# x-{-# INLINE happyOut167 #-}-happyIn168 :: (([PExp L],[S])) -> (HappyAbsSyn )-happyIn168 x = unsafeCoerce# x-{-# INLINE happyIn168 #-}-happyOut168 :: (HappyAbsSyn ) -> (([PExp L],[S]))-happyOut168 x = unsafeCoerce# x-{-# INLINE happyOut168 #-}-happyIn169 :: (([[QualStmt L]],[S])) -> (HappyAbsSyn )-happyIn169 x = unsafeCoerce# x-{-# INLINE happyIn169 #-}-happyOut169 :: (HappyAbsSyn ) -> (([[QualStmt L]],[S]))-happyOut169 x = unsafeCoerce# x-{-# INLINE happyOut169 #-}-happyIn170 :: (([QualStmt L],[S])) -> (HappyAbsSyn )-happyIn170 x = unsafeCoerce# x-{-# INLINE happyIn170 #-}-happyOut170 :: (HappyAbsSyn ) -> (([QualStmt L],[S]))-happyOut170 x = unsafeCoerce# x-{-# INLINE happyOut170 #-}-happyIn171 :: (QualStmt L) -> (HappyAbsSyn )-happyIn171 x = unsafeCoerce# x-{-# INLINE happyIn171 #-}-happyOut171 :: (HappyAbsSyn ) -> (QualStmt L)-happyOut171 x = unsafeCoerce# x-{-# INLINE happyOut171 #-}-happyIn172 :: (QualStmt L) -> (HappyAbsSyn )-happyIn172 x = unsafeCoerce# x-{-# INLINE happyIn172 #-}-happyOut172 :: (HappyAbsSyn ) -> (QualStmt L)-happyOut172 x = unsafeCoerce# x-{-# INLINE happyOut172 #-}-happyIn173 :: (([Stmt L],[S])) -> (HappyAbsSyn )-happyIn173 x = unsafeCoerce# x-{-# INLINE happyIn173 #-}-happyOut173 :: (HappyAbsSyn ) -> (([Stmt L],[S]))-happyOut173 x = unsafeCoerce# x-{-# INLINE happyOut173 #-}-happyIn174 :: (Stmt L) -> (HappyAbsSyn )-happyIn174 x = unsafeCoerce# x-{-# INLINE happyIn174 #-}-happyOut174 :: (HappyAbsSyn ) -> (Stmt L)-happyOut174 x = unsafeCoerce# x-{-# INLINE happyOut174 #-}-happyIn175 :: (([Alt L],L,[S])) -> (HappyAbsSyn )-happyIn175 x = unsafeCoerce# x-{-# INLINE happyIn175 #-}-happyOut175 :: (HappyAbsSyn ) -> (([Alt L],L,[S]))-happyOut175 x = unsafeCoerce# x-{-# INLINE happyOut175 #-}-happyIn176 :: (([Alt L],[S])) -> (HappyAbsSyn )-happyIn176 x = unsafeCoerce# x-{-# INLINE happyIn176 #-}-happyOut176 :: (HappyAbsSyn ) -> (([Alt L],[S]))-happyOut176 x = unsafeCoerce# x-{-# INLINE happyOut176 #-}-happyIn177 :: (([Alt L],[S])) -> (HappyAbsSyn )-happyIn177 x = unsafeCoerce# x-{-# INLINE happyIn177 #-}-happyOut177 :: (HappyAbsSyn ) -> (([Alt L],[S]))-happyOut177 x = unsafeCoerce# x-{-# INLINE happyOut177 #-}-happyIn178 :: (Alt L) -> (HappyAbsSyn )-happyIn178 x = unsafeCoerce# x-{-# INLINE happyIn178 #-}-happyOut178 :: (HappyAbsSyn ) -> (Alt L)-happyOut178 x = unsafeCoerce# x-{-# INLINE happyOut178 #-}-happyIn179 :: (GuardedAlts L) -> (HappyAbsSyn )-happyIn179 x = unsafeCoerce# x-{-# INLINE happyIn179 #-}-happyOut179 :: (HappyAbsSyn ) -> (GuardedAlts L)-happyOut179 x = unsafeCoerce# x-{-# INLINE happyOut179 #-}-happyIn180 :: (([GuardedAlt L],L)) -> (HappyAbsSyn )-happyIn180 x = unsafeCoerce# x-{-# INLINE happyIn180 #-}-happyOut180 :: (HappyAbsSyn ) -> (([GuardedAlt L],L))-happyOut180 x = unsafeCoerce# x-{-# INLINE happyOut180 #-}-happyIn181 :: (GuardedAlt L) -> (HappyAbsSyn )-happyIn181 x = unsafeCoerce# x-{-# INLINE happyIn181 #-}-happyOut181 :: (HappyAbsSyn ) -> (GuardedAlt L)-happyOut181 x = unsafeCoerce# x-{-# INLINE happyOut181 #-}-happyIn182 :: (Pat L) -> (HappyAbsSyn )-happyIn182 x = unsafeCoerce# x-{-# INLINE happyIn182 #-}-happyOut182 :: (HappyAbsSyn ) -> (Pat L)-happyOut182 x = unsafeCoerce# x-{-# INLINE happyOut182 #-}-happyIn183 :: (([Stmt L],L,[S])) -> (HappyAbsSyn )-happyIn183 x = unsafeCoerce# x-{-# INLINE happyIn183 #-}-happyOut183 :: (HappyAbsSyn ) -> (([Stmt L],L,[S]))-happyOut183 x = unsafeCoerce# x-{-# INLINE happyOut183 #-}-happyIn184 :: (([Stmt L],[S])) -> (HappyAbsSyn )-happyIn184 x = unsafeCoerce# x-{-# INLINE happyIn184 #-}-happyOut184 :: (HappyAbsSyn ) -> (([Stmt L],[S]))-happyOut184 x = unsafeCoerce# x-{-# INLINE happyOut184 #-}-happyIn185 :: (([Stmt L],[S])) -> (HappyAbsSyn )-happyIn185 x = unsafeCoerce# x-{-# INLINE happyIn185 #-}-happyOut185 :: (HappyAbsSyn ) -> (([Stmt L],[S]))-happyOut185 x = unsafeCoerce# x-{-# INLINE happyOut185 #-}-happyIn186 :: (Stmt L) -> (HappyAbsSyn )-happyIn186 x = unsafeCoerce# x-{-# INLINE happyIn186 #-}-happyOut186 :: (HappyAbsSyn ) -> (Stmt L)-happyOut186 x = unsafeCoerce# x-{-# INLINE happyOut186 #-}-happyIn187 :: (([PFieldUpdate L],[S])) -> (HappyAbsSyn )-happyIn187 x = unsafeCoerce# x-{-# INLINE happyIn187 #-}-happyOut187 :: (HappyAbsSyn ) -> (([PFieldUpdate L],[S]))-happyOut187 x = unsafeCoerce# x-{-# INLINE happyOut187 #-}-happyIn188 :: (PFieldUpdate L) -> (HappyAbsSyn )-happyIn188 x = unsafeCoerce# x-{-# INLINE happyIn188 #-}-happyOut188 :: (HappyAbsSyn ) -> (PFieldUpdate L)-happyOut188 x = unsafeCoerce# x-{-# INLINE happyOut188 #-}-happyIn189 :: (([IPBind L],[S])) -> (HappyAbsSyn )-happyIn189 x = unsafeCoerce# x-{-# INLINE happyIn189 #-}-happyOut189 :: (HappyAbsSyn ) -> (([IPBind L],[S]))-happyOut189 x = unsafeCoerce# x-{-# INLINE happyOut189 #-}-happyIn190 :: (([IPBind L],[S])) -> (HappyAbsSyn )-happyIn190 x = unsafeCoerce# x-{-# INLINE happyIn190 #-}-happyOut190 :: (HappyAbsSyn ) -> (([IPBind L],[S]))-happyOut190 x = unsafeCoerce# x-{-# INLINE happyOut190 #-}-happyIn191 :: (IPBind L) -> (HappyAbsSyn )-happyIn191 x = unsafeCoerce# x-{-# INLINE happyIn191 #-}-happyOut191 :: (HappyAbsSyn ) -> (IPBind L)-happyOut191 x = unsafeCoerce# x-{-# INLINE happyOut191 #-}-happyIn192 :: (PExp L) -> (HappyAbsSyn )-happyIn192 x = unsafeCoerce# x-{-# INLINE happyIn192 #-}-happyOut192 :: (HappyAbsSyn ) -> (PExp L)-happyOut192 x = unsafeCoerce# x-{-# INLINE happyOut192 #-}-happyIn193 :: (Name L) -> (HappyAbsSyn )-happyIn193 x = unsafeCoerce# x-{-# INLINE happyIn193 #-}-happyOut193 :: (HappyAbsSyn ) -> (Name L)-happyOut193 x = unsafeCoerce# x-{-# INLINE happyOut193 #-}-happyIn194 :: (Name L) -> (HappyAbsSyn )-happyIn194 x = unsafeCoerce# x-{-# INLINE happyIn194 #-}-happyOut194 :: (HappyAbsSyn ) -> (Name L)-happyOut194 x = unsafeCoerce# x-{-# INLINE happyOut194 #-}-happyIn195 :: (QName L) -> (HappyAbsSyn )-happyIn195 x = unsafeCoerce# x-{-# INLINE happyIn195 #-}-happyOut195 :: (HappyAbsSyn ) -> (QName L)-happyOut195 x = unsafeCoerce# x-{-# INLINE happyOut195 #-}-happyIn196 :: (IPName L) -> (HappyAbsSyn )-happyIn196 x = unsafeCoerce# x-{-# INLINE happyIn196 #-}-happyOut196 :: (HappyAbsSyn ) -> (IPName L)-happyOut196 x = unsafeCoerce# x-{-# INLINE happyOut196 #-}-happyIn197 :: (Name L) -> (HappyAbsSyn )-happyIn197 x = unsafeCoerce# x-{-# INLINE happyIn197 #-}-happyOut197 :: (HappyAbsSyn ) -> (Name L)-happyOut197 x = unsafeCoerce# x-{-# INLINE happyOut197 #-}-happyIn198 :: (QName L) -> (HappyAbsSyn )-happyIn198 x = unsafeCoerce# x-{-# INLINE happyIn198 #-}-happyOut198 :: (HappyAbsSyn ) -> (QName L)-happyOut198 x = unsafeCoerce# x-{-# INLINE happyOut198 #-}-happyIn199 :: (Name L) -> (HappyAbsSyn )-happyIn199 x = unsafeCoerce# x-{-# INLINE happyIn199 #-}-happyOut199 :: (HappyAbsSyn ) -> (Name L)-happyOut199 x = unsafeCoerce# x-{-# INLINE happyOut199 #-}-happyIn200 :: (QName L) -> (HappyAbsSyn )-happyIn200 x = unsafeCoerce# x-{-# INLINE happyIn200 #-}-happyOut200 :: (HappyAbsSyn ) -> (QName L)-happyOut200 x = unsafeCoerce# x-{-# INLINE happyOut200 #-}-happyIn201 :: (QName L) -> (HappyAbsSyn )-happyIn201 x = unsafeCoerce# x-{-# INLINE happyIn201 #-}-happyOut201 :: (HappyAbsSyn ) -> (QName L)-happyOut201 x = unsafeCoerce# x-{-# INLINE happyOut201 #-}-happyIn202 :: (Name L) -> (HappyAbsSyn )-happyIn202 x = unsafeCoerce# x-{-# INLINE happyIn202 #-}-happyOut202 :: (HappyAbsSyn ) -> (Name L)-happyOut202 x = unsafeCoerce# x-{-# INLINE happyOut202 #-}-happyIn203 :: (QName L) -> (HappyAbsSyn )-happyIn203 x = unsafeCoerce# x-{-# INLINE happyIn203 #-}-happyOut203 :: (HappyAbsSyn ) -> (QName L)-happyOut203 x = unsafeCoerce# x-{-# INLINE happyOut203 #-}-happyIn204 :: (Op L) -> (HappyAbsSyn )-happyIn204 x = unsafeCoerce# x-{-# INLINE happyIn204 #-}-happyOut204 :: (HappyAbsSyn ) -> (Op L)-happyOut204 x = unsafeCoerce# x-{-# INLINE happyOut204 #-}-happyIn205 :: (QOp L) -> (HappyAbsSyn )-happyIn205 x = unsafeCoerce# x-{-# INLINE happyIn205 #-}-happyOut205 :: (HappyAbsSyn ) -> (QOp L)-happyOut205 x = unsafeCoerce# x-{-# INLINE happyOut205 #-}-happyIn206 :: (QOp L) -> (HappyAbsSyn )-happyIn206 x = unsafeCoerce# x-{-# INLINE happyIn206 #-}-happyOut206 :: (HappyAbsSyn ) -> (QOp L)-happyOut206 x = unsafeCoerce# x-{-# INLINE happyOut206 #-}-happyIn207 :: (QName L) -> (HappyAbsSyn )-happyIn207 x = unsafeCoerce# x-{-# INLINE happyIn207 #-}-happyOut207 :: (HappyAbsSyn ) -> (QName L)-happyOut207 x = unsafeCoerce# x-{-# INLINE happyOut207 #-}-happyIn208 :: (QName L) -> (HappyAbsSyn )-happyIn208 x = unsafeCoerce# x-{-# INLINE happyIn208 #-}-happyOut208 :: (HappyAbsSyn ) -> (QName L)-happyOut208 x = unsafeCoerce# x-{-# INLINE happyOut208 #-}-happyIn209 :: (Name L) -> (HappyAbsSyn )-happyIn209 x = unsafeCoerce# x-{-# INLINE happyIn209 #-}-happyOut209 :: (HappyAbsSyn ) -> (Name L)-happyOut209 x = unsafeCoerce# x-{-# INLINE happyOut209 #-}-happyIn210 :: (Name L) -> (HappyAbsSyn )-happyIn210 x = unsafeCoerce# x-{-# INLINE happyIn210 #-}-happyOut210 :: (HappyAbsSyn ) -> (Name L)-happyOut210 x = unsafeCoerce# x-{-# INLINE happyOut210 #-}-happyIn211 :: (IPName L) -> (HappyAbsSyn )-happyIn211 x = unsafeCoerce# x-{-# INLINE happyIn211 #-}-happyOut211 :: (HappyAbsSyn ) -> (IPName L)-happyOut211 x = unsafeCoerce# x-{-# INLINE happyOut211 #-}-happyIn212 :: (QName L) -> (HappyAbsSyn )-happyIn212 x = unsafeCoerce# x-{-# INLINE happyIn212 #-}-happyOut212 :: (HappyAbsSyn ) -> (QName L)-happyOut212 x = unsafeCoerce# x-{-# INLINE happyOut212 #-}-happyIn213 :: (Name L) -> (HappyAbsSyn )-happyIn213 x = unsafeCoerce# x-{-# INLINE happyIn213 #-}-happyOut213 :: (HappyAbsSyn ) -> (Name L)-happyOut213 x = unsafeCoerce# x-{-# INLINE happyOut213 #-}-happyIn214 :: (QName L) -> (HappyAbsSyn )-happyIn214 x = unsafeCoerce# x-{-# INLINE happyIn214 #-}-happyOut214 :: (HappyAbsSyn ) -> (QName L)-happyOut214 x = unsafeCoerce# x-{-# INLINE happyOut214 #-}-happyIn215 :: (Name L) -> (HappyAbsSyn )-happyIn215 x = unsafeCoerce# x-{-# INLINE happyIn215 #-}-happyOut215 :: (HappyAbsSyn ) -> (Name L)-happyOut215 x = unsafeCoerce# x-{-# INLINE happyOut215 #-}-happyIn216 :: (QName L) -> (HappyAbsSyn )-happyIn216 x = unsafeCoerce# x-{-# INLINE happyIn216 #-}-happyOut216 :: (HappyAbsSyn ) -> (QName L)-happyOut216 x = unsafeCoerce# x-{-# INLINE happyOut216 #-}-happyIn217 :: (QName L) -> (HappyAbsSyn )-happyIn217 x = unsafeCoerce# x-{-# INLINE happyIn217 #-}-happyOut217 :: (HappyAbsSyn ) -> (QName L)-happyOut217 x = unsafeCoerce# x-{-# INLINE happyOut217 #-}-happyIn218 :: (Name L) -> (HappyAbsSyn )-happyIn218 x = unsafeCoerce# x-{-# INLINE happyIn218 #-}-happyOut218 :: (HappyAbsSyn ) -> (Name L)-happyOut218 x = unsafeCoerce# x-{-# INLINE happyOut218 #-}-happyIn219 :: (Name L) -> (HappyAbsSyn )-happyIn219 x = unsafeCoerce# x-{-# INLINE happyIn219 #-}-happyOut219 :: (HappyAbsSyn ) -> (Name L)-happyOut219 x = unsafeCoerce# x-{-# INLINE happyOut219 #-}-happyIn220 :: (QName L) -> (HappyAbsSyn )-happyIn220 x = unsafeCoerce# x-{-# INLINE happyIn220 #-}-happyOut220 :: (HappyAbsSyn ) -> (QName L)-happyOut220 x = unsafeCoerce# x-{-# INLINE happyOut220 #-}-happyIn221 :: (Literal L) -> (HappyAbsSyn )-happyIn221 x = unsafeCoerce# x-{-# INLINE happyIn221 #-}-happyOut221 :: (HappyAbsSyn ) -> (Literal L)-happyOut221 x = unsafeCoerce# x-{-# INLINE happyOut221 #-}-happyIn222 :: (S) -> (HappyAbsSyn )-happyIn222 x = unsafeCoerce# x-{-# INLINE happyIn222 #-}-happyOut222 :: (HappyAbsSyn ) -> (S)-happyOut222 x = unsafeCoerce# x-{-# INLINE happyOut222 #-}-happyIn223 :: (S) -> (HappyAbsSyn )-happyIn223 x = unsafeCoerce# x-{-# INLINE happyIn223 #-}-happyOut223 :: (HappyAbsSyn ) -> (S)-happyOut223 x = unsafeCoerce# x-{-# INLINE happyOut223 #-}-happyIn224 :: (ModuleName L) -> (HappyAbsSyn )-happyIn224 x = unsafeCoerce# x-{-# INLINE happyIn224 #-}-happyOut224 :: (HappyAbsSyn ) -> (ModuleName L)-happyOut224 x = unsafeCoerce# x-{-# INLINE happyOut224 #-}-happyIn225 :: (Name L) -> (HappyAbsSyn )-happyIn225 x = unsafeCoerce# x-{-# INLINE happyIn225 #-}-happyOut225 :: (HappyAbsSyn ) -> (Name L)-happyOut225 x = unsafeCoerce# x-{-# INLINE happyOut225 #-}-happyIn226 :: (QName L) -> (HappyAbsSyn )-happyIn226 x = unsafeCoerce# x-{-# INLINE happyIn226 #-}-happyOut226 :: (HappyAbsSyn ) -> (QName L)-happyOut226 x = unsafeCoerce# x-{-# INLINE happyOut226 #-}-happyIn227 :: (Name L) -> (HappyAbsSyn )-happyIn227 x = unsafeCoerce# x-{-# INLINE happyIn227 #-}-happyOut227 :: (HappyAbsSyn ) -> (Name L)-happyOut227 x = unsafeCoerce# x-{-# INLINE happyOut227 #-}-happyIn228 :: (QName L) -> (HappyAbsSyn )-happyIn228 x = unsafeCoerce# x-{-# INLINE happyIn228 #-}-happyOut228 :: (HappyAbsSyn ) -> (QName L)-happyOut228 x = unsafeCoerce# x-{-# INLINE happyOut228 #-}-happyIn229 :: (Name L) -> (HappyAbsSyn )-happyIn229 x = unsafeCoerce# x-{-# INLINE happyIn229 #-}-happyOut229 :: (HappyAbsSyn ) -> (Name L)-happyOut229 x = unsafeCoerce# x-{-# INLINE happyOut229 #-}-happyInTok :: Loc Token -> (HappyAbsSyn )-happyInTok x = unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn ) -> Loc Token-happyOutTok x = unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x00\x00\xad\x11\x38\x11\x98\x09\x7b\x18\xef\x0e\x00\x00\x00\x00\x00\x00\x17\x08\x17\x07\x82\x08\xfb\x07\x00\x00\x52\x08\x00\x00\x00\x00\xe8\x1a\x00\x00\x00\x00\x00\x00\x7b\x16\x00\x00\x62\x08\x00\x00\x00\x00\x50\x08\xf4\x07\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x0c\x42\x02\x9d\x0c\x00\x00\x24\x16\x7b\x16\x7b\x16\x7b\x16\xad\x11\x00\x00\xad\x11\xad\x11\xad\x11\x7b\x18\x00\x00\xac\x19\x4e\x19\x00\x00\xa2\x16\xad\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x11\x5e\x08\x00\x00\xad\x11\x5c\x08\x58\x08\x24\x16\x58\x08\x00\x00\x64\x08\x61\x08\x5d\x08\x00\x00\x00\x00\x2b\x17\x00\x00\x00\x00\x00\x00\xe5\x07\x00\x00\x7b\x18\x3f\x08\x00\x00\x00\x00\x00\x00\x17\x17\x82\x17\x55\x18\x00\x00\x00\x00\x55\x08\xda\x07\xe9\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x17\x7b\x16\xb6\x00\x0f\x18\xff\x07\x44\x08\xef\x07\x00\x00\x00\x00\x00\x00\x0f\x18\x3a\x08\x00\x00\xfc\x15\x34\x08\x34\x08\x1d\x1a\x34\x08\x40\x08\x79\x1a\x79\x1a\xa5\x19\x00\x00\xc5\x07\xc5\x07\x00\x00\xc5\x07\x28\x00\x00\x00\x00\x00\x2c\x08\xa2\x16\xde\x07\x35\x07\x7b\x16\xc3\x07\x00\x00\x00\x00\x00\x00\x00\x00\x78\x01\x7b\x16\x42\x08\x61\x00\x00\x00\x37\x08\x1a\x08\x41\x00\x25\x00\x00\x00\x25\x08\x63\x1a\x30\x00\x0f\x08\x75\x01\x0f\x18\x63\x1a\x63\x1a\x0d\x08\x89\x17\x82\x18\x47\x19\x00\x00\xd4\x07\x00\x00\x00\x00\xc0\x07\x0f\x18\x0f\x18\x0f\x18\x08\x08\xd1\x06\xd1\x06\x97\x04\x97\x04\x00\x00\x00\x00\xad\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x1a\xd6\x19\x00\x00\x00\x00\x0f\x18\x00\x00\x00\x00\x00\x00\xea\x06\x0f\x18\x53\x08\x00\x00\x70\x12\x10\x08\x00\x00\x00\x00\x37\x02\x16\x02\x00\x00\x00\x00\xd0\x00\x19\x08\x0c\x08\x26\x02\x16\x08\x15\x08\x00\x00\x14\x08\x47\x19\x00\x00\x00\x00\x47\x19\x00\x00\x47\x19\x00\x00\x00\x00\x4f\x1a\x0f\x18\x47\x19\x00\x00\x1c\x08\x9f\x07\x93\x07\x00\x00\x90\x0d\x90\x0d\xe0\x07\x00\x00\x7b\x16\x00\x00\xb0\x07\x9e\x07\x00\x00\x99\x07\xd8\x04\xc2\x07\x00\x00\xdf\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x19\xc0\x01\xe4\x07\x00\x00\x00\x00\x92\x02\x98\x09\xbf\x07\xba\x07\xee\x0a\xb9\x07\xe2\x07\xcc\x07\x27\x01\x00\x00\x7b\x16\x00\x00\xcd\x15\x00\x00\xbb\x07\x97\x01\xd5\x07\xd3\x07\x00\x00\x00\x00\xad\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x19\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x8c\x04\xa1\x0b\x20\x02\xdd\x07\xd6\x07\xd2\x07\xc8\x07\xc7\x07\x00\x00\xc6\x07\x7b\x16\xbc\x07\xb6\x07\x82\x18\x7b\x16\x7b\x16\xad\x11\xcb\x17\x00\x00\xad\x11\x0f\x18\xad\x11\xad\x11\xad\x11\xad\x11\x36\x00\xab\x07\x00\x00\xbe\x07\x74\x19\x00\x00\xc4\xff\x00\x00\x40\x07\x00\x00\xa0\x07\x00\x00\x0c\x00\x17\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x97\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x07\x00\x00\x00\x00\x00\x00\x00\x00\x23\x0b\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\xad\x11\xad\x11\x00\x00\x9d\x07\x96\x07\x00\x00\x1b\x0d\x00\x00\x1b\x0d\xad\x11\x7a\x0e\x00\x00\xad\x11\xad\x11\x00\x00\xc3\x10\x00\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x00\x00\xa2\x07\xa2\x16\xed\x14\x00\x00\x00\x00\x00\x00\x00\x00\x61\x07\xad\x11\x8f\x07\xad\x11\xad\x11\x00\x00\xad\x11\x88\x07\x89\x07\x90\x0d\x36\x00\xad\x11\xad\x11\x7d\x07\xd9\x18\x00\x00\x79\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x18\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x0f\x18\x00\x00\x00\x00\x00\x00\xc2\x14\x0f\x18\x73\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x15\xea\x06\x2f\x07\x28\x07\x27\x00\x31\x07\x4d\x04\x3e\x07\x66\x01\x00\x00\x11\x07\x55\x07\x00\x00\xad\x11\xc3\x10\x01\x07\x2b\x07\x00\x00\x00\x00\x67\x08\xf9\x06\x00\x00\x41\x07\x4a\x07\x00\x00\x37\x07\x00\x00\x00\x00\x00\x00\x39\x07\x8d\x13\x3a\x07\x30\x07\x36\x00\x36\x00\x27\x07\x00\x00\x1e\x07\x47\x19\x0f\x18\xc5\x06\xc3\x06\xbe\x06\x0f\x18\x21\x07\x2a\x07\x0c\x07\xc1\x06\x20\x07\x00\x00\x48\x1a\x00\x00\x48\x1a\x00\x00\x00\x00\x7b\x16\x00\x00\x08\x07\xf5\x06\x00\x00\x00\x00\x83\x06\x00\x00\x00\x00\xad\x06\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x90\x08\x36\x00\xed\x14\xaf\x06\xd0\x06\xd5\x06\xcc\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x11\x62\x13\x0f\x18\xb2\x06\x00\x00\x4c\x06\xab\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x19\x00\x00\x0f\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x0a\x00\x00\x00\x00\x96\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x14\x90\x06\x8a\x06\x00\x00\x00\x00\x8d\x06\x00\x00\x71\x06\x00\x00\xe6\x08\x23\x01\x67\x08\x00\x00\x00\x00\x00\x00\x00\x00\x69\x06\x00\x00\x49\x01\x00\x00\x6b\x06\x67\x06\x00\x00\x00\x00\x00\x00\xe9\x12\x0f\x18\x00\x00\x46\x06\x00\x00\xc8\x0a\x00\x00\x00\x00\x00\x00\x31\x06\x27\x00\x00\x00\x00\x00\x11\x06\x3f\x06\x00\x00\xc5\x01\xfa\x05\xdf\x05\x26\x06\x24\x06\x53\x08\x00\x00\x1e\x06\x00\x00\x20\x06\x13\x06\x00\x00\x00\x00\x1c\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x0d\x00\x00\x00\x00\x00\x00\xc4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\xfb\x05\x00\x00\xb3\x06\x85\x04\x6c\x04\x38\x04\x24\x04\x17\x04\xbf\x03\xaf\x03\x9a\x03\x92\x03\x46\x03\x3c\x03\x00\x00\x98\x09\xf9\x05\xd0\x05\x01\x01\x00\x00\x00\x00\xe4\x05\xe0\x05\x00\x00\x00\x00\x00\x00\x4e\x10\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x05\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\xad\x11\x00\x00\x6a\x0a\x00\x00\x00\x00\xe8\x05\xf0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x11\xa7\x05\x07\x00\x7a\x0e\x7a\x0e\xd9\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x16\x00\x00\x05\x0e\xcb\x05\x36\x00\xad\x11\x00\x00\xad\x05\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x89\x05\x00\x00\x00\x00\x00\x00\xe2\x17\x00\x00\x00\x00\x00\x00\xbf\x05\x27\x00\x16\x00\x00\x00\x03\x0a\xc8\x0a\x00\x00\x00\x00\x87\x0a\x4f\x00\xa9\x05\xa5\x05\x17\x17\x47\x19\x3b\x05\x53\x05\x00\x00\x00\x00\x23\x01\x4a\x05\xad\x11\xad\x11\x00\x00\x00\x00\x96\x05\x74\x05\x47\x19\x00\x00\x00\x00\x00\x00\x00\x00\x49\x14\x14\x13\x82\x05\x36\x00\xad\x11\xe7\x06\x7e\x05\x62\x15\x74\x14\x7e\x05\x00\x00\x0f\x18\x00\x00\x00\x00\x08\x05\x64\x05\x9b\x0a\x00\x00\xcd\x07\x5e\x05\xf5\x04\xf1\x04\x00\x05\x00\x00\x1f\x04\x00\x00\x79\x06\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x04\x00\x00\xe8\x04\xdc\x04\x14\x09\x3d\x05\x00\x00\x00\x00\x3a\x05\x2b\x05\x00\x00\x00\x00\x00\x00\x35\x05\x00\x00\x98\x06\x00\x00\x00\x00\x00\x00\xad\x11\x21\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x05\x00\x00\x00\x00\x00\x00\x0f\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x0a\x00\x00\x47\x19\x00\x00\x00\x00\x22\x12\x1c\x05\x36\x00\x00\x00\x47\x19\x00\x00\x00\x00\x00\x00\x00\x00\x06\x05\x00\x00\x00\x00\x14\x05\x07\x1a\x80\x0a\x22\x05\x00\x00\x00\x00\x47\x19\x9e\x04\x20\x0a\x00\x00\x47\x19\x47\x19\x8f\x04\x00\x00\x00\x00\x00\x00\x45\x01\xfe\x04\x36\x00\xf6\x04\xfb\x04\x00\x00\x00\x00\xf7\x04\xfd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x00\x00\x5e\x04\x00\x00\xdd\x04\x00\x00\xad\x11\xad\x11\xad\x11\x00\x00\x00\x00\x00\x00\x8e\x04\xa2\x16\x89\x04\xd0\x04\x00\x00\xd9\x0f\xad\x11\x64\x0f\xda\x04\xc7\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x04\x03\x01\xae\x04\x00\x00\x98\x18\xac\x04\x00\x00\x47\x19\x00\x00\x21\x00\x4a\x02\x00\x00\x00\x00\xbc\x04\x47\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x18\x82\x18\xad\x04\x0f\x18\xfb\x13\xb4\x04\x88\x06\x0f\x18\x00\x00\x00\x00\x7f\x19\xb2\x04\x06\x19\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00\xb8\x04\x00\x00\x85\x06\x00\x00\xa2\x16\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x04\xa4\x04\x4c\x04\x26\x04\x00\x00\x00\x00\x0f\x18\x78\x04\x6e\x04\x68\x04\x68\x04\x9b\x12\x71\x04\x00\x00\x00\x00\xc3\x18\x29\x0a\xe0\x18\xe0\x18\x0f\x18\xba\x01\x71\x04\x7a\x04\x00\x00\x00\x00\x5c\x01\x00\x00\x00\x00\x39\x04\xad\x11\x00\x00\x00\x00\xad\x11\xf7\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x18\xf4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x18\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x13\x1d\x04\xfb\x03\x1f\x00\x85\x06\x00\x00\x00\x00\x00\x00\x00\x00\x31\x04\x00\x00\xad\x11\x00\x00\x00\x00\xe0\x18\x00\x00\x00\x00\x00\x00\x2c\x04\x00\x00\xed\x19\x00\x00\x1a\x04\x0b\x04\x00\x00\x00\x00\x00\x00\x27\x04\xf7\x11\x13\x04\xd3\x13\x00\x00\x00\x00\x00\x00\x63\x01\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x02\x00\x35\x21\xb5\x23\xae\x01\xdc\x05\xed\x1d\x01\x00\xff\xff\xfe\xff\x44\x02\x75\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x09\x00\x00\x00\x00\x00\x00\x29\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x21\x82\x03\x9d\x21\x00\x00\x23\x29\x0e\x2b\xe1\x28\xe7\x2a\x9f\x23\x00\x00\xe2\x20\xcc\x20\x6d\x28\xc9\x05\x33\x03\x7a\x07\x88\x01\x00\x00\xdb\x06\xc5\x27\x6e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x27\x92\xff\x00\x00\x5d\x27\xef\xff\x83\xff\x7a\x29\x81\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x06\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x04\xb9\x04\x02\x07\xa4\x03\x00\x00\xca\x03\x00\x00\xc6\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x04\xcc\x2a\x00\x00\xb1\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x06\xec\xff\x00\x00\xd7\x02\xb0\x03\xac\x03\x62\x03\xa7\x03\x2b\x06\x75\x03\xbd\x02\x7c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\xfc\xff\xc8\x06\x6d\x06\xfc\x02\xb6\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x01\x9b\x2a\x12\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x03\x1c\x03\x00\x00\x00\x00\xd1\x01\x77\x06\x98\x02\x8e\x01\x00\x00\x38\x07\x8b\x06\xd2\x03\x00\x00\x00\x00\x18\x00\x04\x00\x47\x03\x64\x06\x48\x01\x51\x06\x53\x03\x83\x03\x6b\x03\x5a\x06\x5d\x05\x00\x00\x00\x00\x83\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x3a\x02\x00\x00\x00\x00\xb6\x05\x00\x00\x00\x00\x00\x00\xff\x00\xa1\x05\xf9\xff\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\xa4\x01\x00\x00\xb2\x00\x00\x00\x00\x00\x5d\x02\x3e\x06\x8e\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x1d\xf4\x1c\x00\x00\x00\x00\x74\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\xf4\x02\x00\x00\x00\x00\x00\x00\x33\x01\x2b\x01\x00\x00\x00\x00\xf2\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x2a\x00\x00\x39\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x22\xaf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x28\x00\x00\x00\x00\xee\x06\x43\x2a\x28\x2a\x79\x20\x65\x01\x00\x00\x83\x28\x7a\x05\x47\x27\xf5\x26\xdf\x26\x8d\x26\xdd\x02\x00\x00\x41\x06\x0f\x00\x48\x02\x00\x00\x04\x02\x00\x00\x00\x00\x2e\x06\x00\x00\x00\x00\x00\x00\xed\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x22\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x4d\x23\x77\x26\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x22\x00\x00\xbb\x21\x25\x26\x5c\x1a\x00\x00\x0f\x26\xbd\x25\x00\x00\xa1\x1c\x00\x00\x00\x00\x00\x00\x00\x00\xce\x02\xc6\x05\x00\x00\x00\x00\x39\x05\xd0\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x23\x7b\xff\xa7\x25\x55\x25\x00\x00\x3f\x25\x00\x00\xbe\x02\x4e\x1c\xb6\x02\xed\x24\xd7\x24\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x06\x00\x00\x00\x00\xc3\x04\x00\x00\x00\x00\x16\x06\x00\x00\x00\x00\x00\x00\x11\x01\x02\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x02\xb9\x00\x0f\x03\x07\x03\x9f\x04\x3f\x04\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x02\xd5\x02\x00\x00\x63\x20\xfb\x1b\xc9\x02\x03\x03\x00\x00\x00\x00\xea\xff\xc2\x02\x31\x03\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x02\xf7\x01\x00\x00\x00\x00\x54\x02\x47\x02\x00\x00\x00\x00\xa2\x02\x91\x04\x67\x05\x00\x00\x00\x00\x00\x00\x7d\x03\x00\x00\x00\x00\x00\x00\xdb\x02\xbb\x02\x00\x00\xa3\x07\x00\x00\x00\x02\x00\x00\x00\x00\x01\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\x55\x02\x00\x00\xec\x04\x4f\x04\x00\x00\x67\x00\x0b\x02\x90\x29\xd2\x02\x5b\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x28\x17\x00\x2b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x48\x05\x00\x00\x7a\x02\x37\x05\x00\x00\x00\x00\x00\x00\x3e\x00\x24\x00\x00\x00\x00\x00\x79\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x87\x00\xf9\x01\xd9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\xc0\x00\x41\x05\x00\x00\x00\x00\x00\x00\x25\x07\x70\x02\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x00\x00\x52\x02\xe5\x01\x00\x00\xbc\xff\x30\x02\x50\x02\x00\x00\x00\x00\x58\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\x00\x00\x00\x00\x85\x24\x00\x00\x18\x03\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x24\x00\x00\x00\x00\x02\x1b\xaf\x1a\x9a\x1d\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\xe6\x29\x00\x00\xcf\x22\x00\x00\xad\x01\x1d\x24\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\xa6\x04\x05\x01\x42\x00\x00\x00\x00\x00\x98\x04\x1e\x00\x00\x00\xb4\x03\x4d\x07\x00\x00\x00\x00\x60\x07\x74\x00\x00\x00\x00\x00\xe9\x03\xd1\x07\x00\x00\x65\x04\x00\x00\x00\x00\xa0\x01\x00\x00\xfa\x1f\xa7\x1f\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x03\x2c\x00\x2a\x00\x28\x03\x35\x04\x00\x00\xde\x02\x00\x00\x91\x01\x91\x1f\xa4\x00\x00\x00\xcb\x28\xc6\x02\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\x49\x02\x00\x00\x40\x02\x00\x00\x7d\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x00\x00\x00\x00\x00\x00\x3e\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x05\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00\x7a\x02\x00\x00\xbe\x03\x00\x00\x00\x00\x1b\x02\x00\x00\x4d\x01\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\xff\x55\x01\x31\x01\x00\x00\x00\x00\xc1\x07\x00\x00\xb4\x03\x00\x00\x4d\x02\xa8\x07\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\x00\x00\x0a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x03\x00\x00\x64\x03\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00\x28\x1f\xd5\x1e\xbf\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x58\x03\x46\x01\x12\x01\x00\x00\x55\x1b\x6c\x1e\xe5\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\xef\x05\x90\x03\x00\x00\x19\x05\x32\x03\x00\x00\x15\x00\x05\x05\x00\x00\x00\x00\x5f\x00\x00\x00\x11\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\xcf\x00\x00\x00\x37\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x01\x37\x01\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\xfb\x00\xc8\x00\x64\x02\x00\x00\x00\x00\x00\x00\xbd\x00\x05\x04\x8c\x07\x87\x07\xdf\x04\xb9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x1e\x00\x00\x00\x00\x03\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x04\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\xa2\x00\x80\x03\xb2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x24\x00\x00\x00\x00\x12\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xb3\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xfd\xb3\xfd\x00\x00\xe5\xff\xed\xff\x00\x00\x00\x00\x0e\xfe\xc6\xfe\xc4\xfe\xbe\xfe\xbd\xfe\xbb\xfe\xb9\xfe\xb4\xfe\xaf\xfe\xaa\xfe\xa2\xfe\x9e\xfe\x90\xfe\x00\x00\x00\x00\x9b\xfe\x9c\xfe\x9d\xfe\xfe\xfd\xf9\xfd\xd7\xfd\xe0\xfd\xf7\xfd\xf4\xfd\xd1\xfd\x9a\xfe\xde\xfd\xdf\xfd\xd3\xfd\xd2\xfd\xcf\xfd\xd0\xfd\xbd\xfd\xbb\xfd\xbc\xfd\xba\xfd\xb9\xfd\xb8\xfd\xb7\xfd\xb6\xfd\xb5\xfd\xb4\xfd\x00\x00\x00\x00\x00\x00\x94\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xfd\x00\x00\x00\x00\x85\xfe\x00\x00\x00\x00\x73\xfe\xda\xfd\xd6\xfd\xd5\xfd\xd4\xfd\xd9\xfd\xd8\xfd\xdd\xfd\x00\x00\xb3\xfd\xdb\xfd\x00\x00\xb3\xfd\xb3\xfd\x00\x00\xb3\xfd\xdc\xfd\x00\x00\x00\x00\x00\x00\x47\xff\x2d\xff\x4e\xff\x44\xff\x42\xff\x3b\xff\x00\x00\x30\xff\x00\x00\x00\x00\xac\xfd\x34\xff\x41\xff\x00\x00\x00\x00\x00\x00\x26\xff\x85\xff\xad\xff\x00\x00\x00\x00\x90\xff\x86\xff\x7f\xff\x84\xff\x97\xff\xbd\xfe\x00\x00\x00\x00\x00\x00\x8f\xff\x00\x00\x00\x00\xab\xff\xaa\xff\xa9\xff\x00\x00\xb3\xfd\x8e\xff\x00\x00\x64\xff\x64\xff\x00\x00\x64\xff\x66\xff\x58\xff\x58\xff\x00\x00\x19\xfe\x00\x00\x00\x00\xc6\xfe\x00\x00\xe5\xff\xf4\xff\xf2\xff\xb3\xfd\x00\x00\xe5\xff\x00\x00\x00\x00\x00\x00\x53\xff\x54\xff\xfd\xfd\xf6\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x59\xff\x00\x00\x56\xff\x00\x00\x00\x00\x67\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\xff\x00\x00\x00\x00\x76\xff\x00\x00\xd9\xff\xd9\xff\xdc\xfe\x00\x00\x8b\xff\x00\x00\x20\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xfd\xe5\xfd\x00\x00\xea\xfd\xe1\xfd\xce\xfd\xf0\xfd\xcb\xfd\xca\xfd\xc7\xfd\xcc\xfd\xbe\xfd\xcd\xfd\x00\x00\x00\x00\xc4\xfd\xe2\xfd\x00\x00\xc6\xfd\xc5\xfd\xc3\xfd\xec\xfe\x00\x00\x00\x00\xac\xff\x00\x00\x00\x00\x38\xff\x29\xff\x00\x00\x00\x00\x36\xff\x83\xfe\x29\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\xff\x00\x00\x00\x00\x2e\xff\x45\xff\x00\x00\x31\xff\x00\x00\xaa\xfd\xa9\xfd\x00\x00\x00\x00\x00\x00\x2c\xff\x00\x00\x00\x00\x00\x00\x0d\xfe\x13\xfe\x13\xfe\x00\x00\xa7\xfe\x00\x00\xb0\xfe\x10\xfe\x00\x00\xb1\xfe\x00\x00\x00\x00\x00\x00\x41\xfe\x6e\xfe\x6a\xfe\x6d\xfe\x6c\xfe\x6b\xfe\x66\xfe\x65\xfe\x64\xfe\x63\xfe\x62\xfe\x61\xfe\x60\xfe\x5f\xfe\x5e\xfe\x5d\xfe\x68\xfe\x67\xfe\x5c\xfe\x5b\xfe\x5a\xfe\x59\xfe\x58\xfe\x57\xfe\x56\xfe\x55\xfe\x54\xfe\x53\xfe\x52\xfe\x51\xfe\x50\xfe\x4f\xfe\x4e\xfe\x4d\xfe\x4c\xfe\x4b\xfe\x4a\xfe\x49\xfe\x48\xfe\x47\xfe\x46\xfe\x69\xfe\x45\xfe\x44\xfe\x43\xfe\x86\xfe\x87\xfe\x00\x00\x00\x00\x00\x00\x89\xfe\x88\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xfe\x00\x00\x00\x00\x7b\xfe\x00\x00\x18\xfe\xb2\xfe\xa3\xfe\x00\x00\xa8\xfe\x82\xfe\x3d\xfe\x00\x00\x3c\xfe\xe4\xfd\xe3\xfd\x00\x00\xee\xfd\xc9\xfd\xc8\xfd\xc2\xfd\x02\xfe\x00\x00\xc0\xfd\xc1\xfd\xbf\xfd\x00\x00\x00\xfe\x82\xfe\x00\x00\x00\x00\x00\x00\xea\xfd\x00\x00\xc8\xfd\xc2\xfd\x03\xfe\xc0\xfd\xc6\xfd\xc1\xfd\xbf\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xfe\xc3\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x00\x00\xf7\xff\xe5\xff\xf6\xff\x00\x00\xd9\xff\xe8\xff\xda\xff\x00\x00\xed\xff\xef\xff\xb1\xfd\xb2\xfd\xbf\xfe\xc0\xfe\xc1\xfe\xc2\xfe\xc5\xfe\xbc\xfe\xba\xfe\x00\x00\x0b\xfe\x09\xfe\xa1\xfe\x08\xfe\x0f\xfe\xa4\xfe\xa5\xfe\x00\x00\x49\xff\xf8\xfd\xf3\xfd\x93\xfe\x00\x00\x98\xfe\x99\xfe\x00\x00\x01\xfe\x84\xfe\x00\x00\x00\x00\xff\xfd\x00\x00\x00\x00\x81\xfe\x00\x00\x95\xfe\x00\x00\x3b\xfe\x00\x00\xa9\xfe\x00\x00\x00\x00\x92\xfe\x00\x00\x8e\xfe\x8d\xfe\x8c\xfe\x8b\xfe\x00\x00\xd9\xff\xa4\xff\x00\x00\x00\x00\x3e\xfe\x76\xfe\x70\xfe\x74\xfe\x72\xfe\x00\x00\x00\x00\xb3\xfd\x00\x00\x00\x00\xa6\xfe\x00\x00\x00\x00\x11\xfe\x13\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xff\x4b\xff\x00\x00\x4c\xff\x4d\xff\x48\xff\x39\xff\x32\xff\x33\xff\x37\xff\x00\x00\x40\xff\x3d\xff\x00\x00\x35\xff\x3f\xff\x00\x00\x3e\xff\x27\xff\x25\xff\x00\x00\x00\x00\xae\xff\xe8\xfd\xe7\xfd\xa7\xff\xec\xfd\xf2\xfd\x00\x00\xec\xfe\xf8\xfe\x19\xff\x00\x00\x0e\xff\x81\xff\x00\x00\x00\x00\x72\xff\xce\xfe\xca\xfe\xc8\xfe\x00\x00\x00\x00\xce\xfe\x6c\xff\x71\xff\x70\xff\x00\x00\xe8\xfe\x22\xff\xec\xfe\x00\x00\x8c\xff\x49\xff\x8d\xff\x99\xff\x9a\xff\xb3\xfd\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\xff\xec\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\x68\xff\x94\xff\x5a\xff\x93\xff\x00\x00\x57\xff\x92\xff\x00\x00\x51\xff\x00\x00\x00\x00\x91\xff\x50\xff\xe2\xff\xb0\xfd\xaf\xfd\x00\x00\x41\xfe\xe7\xff\xd9\xff\xd9\xff\x00\x00\xdc\xff\x00\x00\x3e\xfe\x00\x00\xd7\xff\x00\x00\x00\x00\xfc\xfd\xf5\xfd\x52\xff\x55\xff\x5b\xff\x69\xff\x00\x00\x00\x00\x00\x00\x00\x00\x63\xff\x00\x00\x79\xff\x77\xff\x7a\xff\x7d\xff\x7e\xff\xa3\xff\x4a\xff\xa2\xff\x00\x00\x74\xff\x82\xff\x75\xff\x83\xff\xd9\xff\x87\xff\xcc\xfe\xd9\xff\x05\xfe\x9d\xfe\xdb\xff\xd9\xff\xd9\xff\x98\xff\x9e\xff\x00\x00\x00\x00\x1f\xff\x1d\xff\x9b\xff\xb3\xfd\x95\xff\x00\x00\xfb\xfd\x00\x00\x00\x00\x00\x00\x6f\xff\x6e\xff\x6d\xff\xd0\xfe\xb3\xfd\x26\xfe\x00\x00\x28\xfe\x00\x00\xb3\xfd\xcb\xfe\xc9\xfe\xd1\xfe\x00\x00\x00\x00\xef\xfd\x14\xff\x12\xff\x00\x00\x26\xff\xeb\xfe\xf2\xfe\xf1\xfe\x00\x00\xee\xfe\xef\xfe\xf8\xfe\xb3\xfd\xa0\xff\x00\x00\xf8\xfe\x19\xff\x00\x00\x00\x00\x00\x00\x2f\xff\x00\x00\x28\xff\x00\x00\x2a\xff\xab\xfd\x2b\xff\x00\x00\xad\xfe\xae\xfe\x16\xfe\x14\xfe\x15\xfe\x13\xfe\x17\xfe\xb5\xfe\xb7\xfe\x00\x00\xb3\xfe\xd9\xff\xd9\xff\x7b\xfe\x00\x00\x75\xfe\x3f\xfe\x00\x00\x42\xfe\x00\x00\xde\xfd\xcf\xfd\xda\xfd\xd6\xfd\xd5\xfd\xd4\xfd\xd9\xfd\xd8\xfd\xdd\xfd\xdb\xfd\xdc\xfd\x6f\xfe\xda\xff\xa6\xff\x00\x00\x00\x00\x7c\xfe\xb8\xfe\x37\xfe\x33\xfe\x31\xfe\x30\xfe\x2f\xfe\x00\x00\x39\xfe\x82\xfe\x35\xfe\x36\xfe\xe9\xfd\xed\xfd\x80\xfe\x79\xfe\x7a\xfe\x96\xfe\x97\xfe\x00\x00\x7d\xfe\x9f\xfe\x00\x00\xa0\xfe\x00\x00\xee\xff\xeb\xff\x00\x00\x00\x00\xea\xff\xec\xff\xe9\xff\x0c\xfe\x0a\xfe\x7f\xfe\x7e\xfe\x3a\xfe\x2e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x91\xfe\x8a\xfe\xa5\xff\x73\xfe\x77\xfe\x00\x00\x71\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x12\xfe\x00\x00\x3c\xff\x00\x00\xa8\xff\xeb\xfd\xf1\xfd\xf8\xfe\x9d\xff\xf7\xfe\xf3\xfe\x00\x00\xd9\xff\xd9\xff\x9f\xff\x00\x00\x00\x00\x00\x00\x01\xff\x09\xff\x00\x00\x10\xff\x0d\xff\x08\xff\x00\x00\x00\x00\x34\xff\x00\x00\x00\x00\x00\x00\x0e\xff\x80\xff\x73\xff\x00\x00\x25\xfe\x00\x00\x00\x00\xcf\xfe\x96\xff\x00\x00\x00\x00\x00\x00\xd9\xff\xd9\xff\x22\xff\x22\xff\x21\xff\xda\xfe\x00\x00\x00\x00\x00\x00\xda\xff\x07\xfe\x00\x00\xda\xff\x8a\xff\xa1\xff\x00\x00\x7c\xff\x62\xff\x00\x00\x00\x00\x5f\xff\x5d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\xd3\xff\xf3\xff\x00\x00\xe0\xff\xd9\xff\xc9\xff\xde\xff\xc6\xff\xe1\xff\xc4\xff\x00\x00\xda\xff\xdd\xff\x73\xfe\xf0\xff\x00\x00\xd3\xff\xd1\xff\xd0\xff\xad\xfd\xcf\xff\xd4\xff\x00\x00\xe6\xff\xe4\xff\xe3\xff\x00\x00\x00\x00\x5e\xff\x60\xff\x7b\xff\x78\xff\x88\xff\x06\xfe\x00\x00\x04\xfe\xdd\xfe\xde\xfe\x00\x00\xd5\xfe\xd9\xff\xd8\xfe\xd6\xfe\xd7\xfe\xcc\xfe\x8f\xff\x00\x00\x1c\xff\x1e\xff\xe6\xfe\x00\x00\x00\x00\x6a\xff\x00\x00\xfa\xfd\xc7\xfe\x27\xfe\x13\xff\x00\x00\x00\xff\x43\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\xff\x05\xff\x00\x00\x00\x00\x09\xff\x11\xff\x00\x00\x00\x00\x00\x00\x0f\xff\xf0\xfe\xed\xfe\x00\x00\x00\x00\x00\x00\xf4\xfe\x00\x00\xf6\xfe\x9c\xff\x00\x00\x00\x00\xb6\xfe\x23\xfe\x24\xfe\xd9\xff\x20\xfe\x00\x00\x40\xfe\x00\x00\x29\xfe\x34\xfe\x32\xfe\x00\x00\x00\x00\x00\x00\x38\xfe\x2d\xfe\x2b\xfe\x2c\xfe\x00\x00\xce\xfe\x1d\xfe\x1b\xfe\x00\x00\x00\x00\xda\xff\x22\xfe\x00\x00\x24\xff\xf5\xfe\x1a\xff\x1b\xff\xd9\xff\x16\xff\x00\x00\x00\x00\x00\x00\x07\xff\x00\x00\x00\x00\x03\xff\x46\xff\x0c\xff\x00\x00\x00\x00\xfd\xfe\x0b\xff\x33\xff\x00\x00\x6b\xff\xe9\xfe\xea\xfe\xe3\xfe\xd9\xff\xe4\xfe\xe2\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\xdb\xfe\xec\xfe\x00\x00\x65\xff\xcb\xff\x00\x00\x00\x00\xd4\xff\xd5\xff\x00\x00\xca\xff\xdf\xff\xc7\xff\xc2\xff\xc5\xff\x00\x00\xc3\xff\x00\x00\xd2\xff\xd6\xff\x00\x00\xb1\xff\xb0\xff\xaf\xff\xcd\xff\x00\x00\x00\x00\xf8\xfe\x19\xff\xd9\xfe\xcd\xfe\x00\x00\x00\x00\x47\xff\xec\xfe\xec\xfe\xda\xff\xe7\xfe\xff\xfe\x0a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\x18\xff\x00\x00\x21\xfe\x1e\xfe\x00\x00\x1c\xfe\x1f\xfe\x00\x00\x00\x00\x2a\xfe\x78\xfe\x00\x00\x00\x00\x17\xff\x15\xff\x06\xff\x02\xff\xfb\xfe\xfc\xfe\x00\x00\x00\x00\xfe\xfe\xe5\xfe\xdf\xfe\xe1\xfe\x00\x00\xd4\xfe\xf8\xfe\xd3\xfe\x5c\xff\xce\xff\xcc\xff\x00\x00\x00\x00\xc0\xff\xbe\xff\x00\x00\xf1\xff\xb2\xff\xd2\xfe\xe0\xfe\x00\x00\xfa\xfe\x00\x00\x1a\xfe\xac\xfe\x00\x00\xc1\xff\xc8\xff\xbf\xff\x00\x00\xbb\xff\xd3\xff\xf9\xfe\x00\x00\xd3\xff\xb8\xff\xb7\xff\xae\xfd\xb6\xff\x00\x00\x00\x00\xd4\xff\xbc\xff\xb9\xff\xbd\xff\x00\x00\xb4\xff\x00\x00\xb5\xff\xb3\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x00\x00\x04\x00\x04\x00\x02\x00\x04\x00\x04\x00\x0b\x00\x11\x00\x12\x00\x13\x00\x2d\x00\x1c\x00\x07\x00\x11\x00\x36\x00\x32\x00\x0d\x00\x0e\x00\x2d\x00\x33\x00\x5c\x00\x07\x00\x01\x00\x32\x00\x2d\x00\x1d\x00\x1e\x00\x2d\x00\x24\x00\x32\x00\xa4\x00\x36\x00\x32\x00\x3b\x00\x3c\x00\x13\x00\x0d\x00\x0e\x00\x6b\x00\x1c\x00\x5b\x00\x5c\x00\x22\x00\x16\x00\xac\x00\x2a\x00\xac\x00\x6c\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x16\x00\x00\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x25\x00\x0c\x00\x16\x00\xac\x00\xc6\x00\xc7\x00\x1c\x00\x2a\x00\x22\x00\x0d\x00\x0e\x00\x11\x00\x66\x00\x67\x00\x28\x00\x86\x00\x0d\x00\x0e\x00\x1a\x00\xd3\x00\x0d\x00\x0e\x00\xd8\x00\x3b\x00\x3c\x00\xd3\x00\x1f\x00\xd3\x00\x4e\x00\x09\x00\x32\x00\x33\x00\x42\x00\x43\x00\x1c\x00\x57\x00\x2f\x00\x47\x00\x2e\x00\x49\x00\x4a\x00\x4b\x00\xd3\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x3a\x00\x46\x00\x1e\x00\x48\x00\x53\x00\x5d\x00\x24\x00\xbb\x00\x85\x00\x1f\x00\x20\x00\x62\x00\x26\x00\x73\x00\x14\x00\x15\x00\x1c\x00\x1f\x00\x20\x00\x2d\x00\x62\x00\xc9\x00\xca\x00\x6f\x00\xc9\x00\xca\x00\xd5\x00\x21\x00\xbb\x00\x23\x00\x75\x00\x25\x00\x26\x00\x27\x00\x28\x00\xb7\x00\x85\x00\x15\x00\x2c\x00\x6c\x00\x2e\x00\x2f\x00\xc9\x00\xca\x00\xb8\x00\x76\x00\x71\x00\x5a\x00\x71\x00\x21\x00\xc6\x00\x23\x00\xb7\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc5\x00\xc6\x00\xc7\x00\x2c\x00\x85\x00\x2e\x00\x2f\x00\xc6\x00\xc7\x00\xb8\x00\xc6\x00\xd3\x00\xbb\x00\xb6\x00\x76\x00\xbc\x00\xb2\x00\xba\x00\xbf\x00\xd3\x00\xc1\x00\x19\x00\xc5\x00\xc6\x00\xc7\x00\xd3\x00\xc9\x00\xca\x00\xd3\x00\xc6\x00\xc7\x00\xcc\x00\x85\x00\xca\x00\xcf\x00\xb8\x00\xb2\x00\xa5\x00\xbb\x00\x20\x00\xd7\x00\xd3\x00\xca\x00\xd3\x00\xd3\x00\xd6\x00\xd3\x00\xd3\x00\xc5\x00\xc6\x00\xc7\x00\xca\x00\xc9\x00\xca\x00\xa5\x00\xc6\x00\xc7\x00\xc6\x00\xc7\x00\x7a\x00\xc9\x00\xca\x00\xc6\x00\xc7\x00\x85\x00\x17\x00\xd7\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x33\x00\xd8\x00\x8b\x00\x8c\x00\x8d\x00\x43\x00\xd8\x00\x7a\x00\x28\x00\x47\x00\x93\x00\x49\x00\x4a\x00\x4b\x00\x8e\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x50\x00\xb6\x00\x8b\x00\x8c\x00\x8d\x00\xba\x00\x09\x00\xb6\x00\x0b\x00\x33\x00\x93\x00\xba\x00\x0d\x00\x0e\x00\x69\x00\xb6\x00\x5d\x00\xc6\x00\xc7\x00\xba\x00\x64\x00\xca\x00\xb5\x00\xc6\x00\xc7\x00\xb8\x00\xb9\x00\xca\x00\xbb\x00\x22\x00\x67\x00\xc6\x00\xc7\x00\xd6\x00\x6f\x00\xca\x00\x27\x00\x08\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xbf\x00\xc4\x00\xb8\x00\xb9\x00\x6f\x00\xbb\x00\xd2\x00\x39\x00\xcb\x00\xcc\x00\xcd\x00\xb7\x00\xcf\x00\xcc\x00\xd1\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x25\x00\x22\x00\x05\x00\x06\x00\x21\x00\xc6\x00\x23\x00\xd2\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x32\x00\x33\x00\x2c\x00\xb4\x00\x2e\x00\x2f\x00\x16\x00\x5d\x00\xb9\x00\xc4\x00\x5a\x00\x39\x00\x1c\x00\x21\x00\xb6\x00\x23\x00\xcb\x00\xcc\x00\xba\x00\x27\x00\x28\x00\x6f\x00\x22\x00\xc8\x00\x2c\x00\x6f\x00\x2e\x00\x2f\x00\x29\x00\x29\x00\xc6\x00\xc7\x00\xb8\x00\xb6\x00\xca\x00\xc6\x00\xc7\x00\x17\x00\xc9\x00\xca\x00\x08\x00\x22\x00\x0a\x00\x08\x00\x09\x00\xc5\x00\xc6\x00\xc7\x00\x22\x00\xc6\x00\xc7\x00\x22\x00\x2d\x00\xd8\x00\x43\x00\x44\x00\x45\x00\x28\x00\x47\x00\x59\x00\x49\x00\x4a\x00\x4b\x00\xb8\x00\x69\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x25\x00\x46\x00\x47\x00\x25\x00\x49\x00\x4a\x00\x4b\x00\xc5\x00\xc6\x00\xc7\x00\xd5\x00\x7a\x00\x31\x00\x32\x00\x33\x00\x31\x00\x32\x00\x33\x00\x19\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x18\x00\x22\x00\x8b\x00\x8c\x00\x8d\x00\x22\x00\x65\x00\x7a\x00\xaa\x00\x26\x00\x93\x00\x05\x00\x06\x00\x7b\x00\x2b\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x05\x00\x06\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x16\x00\x23\x00\x4a\x00\x4b\x00\x93\x00\x27\x00\x28\x00\xc6\x00\xc7\x00\x19\x00\x2c\x00\x16\x00\x2e\x00\x2f\x00\xd4\x00\x17\x00\xb5\x00\x17\x00\x22\x00\xb8\x00\xb9\x00\xcc\x00\xbb\x00\x43\x00\xcf\x00\xd8\x00\x22\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xc4\x00\x17\x00\xb8\x00\xb9\x00\xca\x00\xbb\x00\xd2\x00\xcb\x00\xcc\x00\xcd\x00\xb9\x00\xcf\x00\x22\x00\xd1\x00\x01\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x08\x00\x09\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xd2\x00\xbc\x00\xb0\x00\xb1\x00\xbf\x00\x21\x00\xc1\x00\x23\x00\xc6\x00\xc7\x00\xb8\x00\xc9\x00\xca\x00\xd8\x00\xd4\x00\x2b\x00\x2c\x00\xcc\x00\x2e\x00\x2f\x00\xcf\x00\x7a\x00\xd5\x00\xc5\x00\xc6\x00\xc7\x00\xd8\x00\x11\x00\x19\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x17\x00\x22\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x17\x00\x23\x00\x3f\x00\x40\x00\x93\x00\x22\x00\x30\x00\x31\x00\x01\x00\xb8\x00\x2c\x00\x22\x00\x2e\x00\x2f\x00\x94\x00\x08\x00\x09\x00\xc6\x00\xc7\x00\x19\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x43\x00\x17\x00\x45\x00\x22\x00\x47\x00\x19\x00\x49\x00\x4a\x00\x4b\x00\x16\x00\xd8\x00\x4e\x00\x4f\x00\xb5\x00\x22\x00\xd4\x00\xb8\x00\xb9\x00\x1e\x00\xbb\x00\xc6\x00\xc7\x00\x22\x00\xc9\x00\xca\x00\xcf\x00\x93\x00\x7a\x00\x95\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x69\x00\x1e\x00\x84\x00\xd8\x00\x86\x00\x22\x00\x88\x00\xd2\x00\xd4\x00\x8b\x00\x8c\x00\x8d\x00\x21\x00\x03\x00\x23\x00\x40\x00\x41\x00\x93\x00\x08\x00\x09\x00\x72\x00\x73\x00\x74\x00\x2c\x00\x94\x00\x2e\x00\x2f\x00\x47\x00\x7a\x00\x49\x00\x4a\x00\x4b\x00\x69\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xcd\x00\x84\x00\xcf\x00\x86\x00\xd1\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\x59\x00\xb3\x00\xb4\x00\xb5\x00\x43\x00\x93\x00\xb8\x00\xb9\x00\x47\x00\xbb\x00\x49\x00\x4a\x00\x4b\x00\xb6\x00\x25\x00\xd3\x00\x27\x00\xba\x00\x69\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x52\x00\x31\x00\x32\x00\x33\x00\xc6\x00\xc7\x00\xcf\x00\xd2\x00\xca\x00\xd3\x00\xb9\x00\xc5\x00\xc6\x00\xc7\x00\xb5\x00\xc9\x00\xca\x00\xb8\x00\xb9\x00\x03\x00\xbb\x00\x73\x00\x74\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x7a\x00\xd4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x0a\x00\x21\x00\x84\x00\x23\x00\x86\x00\xd8\x00\x88\x00\xd2\x00\x99\x00\x8b\x00\x8c\x00\x8d\x00\x2c\x00\x38\x00\x2e\x00\x2f\x00\x7c\x00\x93\x00\x0d\x00\x0e\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xb6\x00\xc5\x00\xc6\x00\xc7\x00\xba\x00\xc9\x00\xca\x00\x8e\x00\x28\x00\x90\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x2f\x00\xc6\x00\xc7\x00\x4d\x00\x6f\x00\xca\x00\xc6\x00\xc7\x00\x3a\x00\xc9\x00\xca\x00\xd3\x00\xb5\x00\x43\x00\xd4\x00\xb8\x00\xb9\x00\x47\x00\xbb\x00\x49\x00\x4a\x00\x4b\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\xd4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x6f\x00\xc6\x00\xc7\x00\x70\x00\xc9\x00\xca\x00\xd8\x00\xd2\x00\xbd\x00\x35\x00\x8e\x00\xc0\x00\x90\x00\xc2\x00\x8e\x00\xc4\x00\x90\x00\x7a\x00\x93\x00\xd8\x00\x95\x00\x7b\x00\xcb\x00\xcc\x00\xcd\x00\x7b\x00\xcf\x00\x84\x00\xd1\x00\x86\x00\x2b\x00\x88\x00\x2d\x00\xb8\x00\x8b\x00\x8c\x00\x8d\x00\x7f\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x93\x00\x28\x00\x30\x00\x31\x00\xc5\x00\xc6\x00\xc7\x00\x59\x00\x2f\x00\x84\x00\x27\x00\x86\x00\x29\x00\x88\x00\x0d\x00\x0e\x00\x8b\x00\x8c\x00\x8d\x00\xae\x00\x27\x00\x43\x00\x29\x00\x45\x00\x93\x00\x47\x00\xb6\x00\x49\x00\x4a\x00\x4b\x00\xba\x00\x69\x00\x4e\x00\x4f\x00\xb5\x00\x54\x00\x55\x00\xb8\x00\xb9\x00\x58\x00\xbb\x00\x8e\x00\xc6\x00\xc7\x00\x54\x00\x55\x00\xca\x00\x57\x00\x58\x00\xd4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xc6\x00\xc7\x00\xb5\x00\x99\x00\xca\x00\xb8\x00\xb9\x00\xd2\x00\xbb\x00\x1a\x00\x1b\x00\x1c\x00\xc6\x00\xc7\x00\x34\x00\xc9\x00\xca\x00\xd4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x56\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\xd8\x00\xd2\x00\xd4\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x84\x00\x34\x00\x86\x00\x27\x00\x88\x00\x29\x00\x75\x00\x8b\x00\x8c\x00\x8d\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x93\x00\x49\x00\x4a\x00\x4b\x00\xb1\x00\x39\x00\x4e\x00\x4f\x00\x96\x00\x97\x00\x98\x00\xb8\x00\xd5\x00\x42\x00\x43\x00\xb8\x00\x45\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x39\x00\xc5\x00\xc6\x00\xc7\x00\xb9\x00\x39\x00\x27\x00\xb5\x00\x29\x00\x39\x00\xb8\x00\xb9\x00\x22\x00\xbb\x00\x96\x00\x97\x00\x98\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x52\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\x94\x00\xd8\x00\xd2\x00\x47\x00\xd3\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\xa8\x00\xa9\x00\xaa\x00\x47\x00\x8e\x00\x49\x00\x4a\x00\x4b\x00\x42\x00\x43\x00\x6c\x00\x6d\x00\x6e\x00\x47\x00\xb8\x00\x49\x00\x4a\x00\x4b\x00\x0d\x00\x0e\x00\x01\x00\x02\x00\x0d\x00\x0e\x00\x05\x00\x06\x00\x17\x00\xc5\x00\xc6\x00\xc7\x00\x17\x00\xb6\x00\x43\x00\x22\x00\x45\x00\xba\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x16\x00\xb9\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\xc6\x00\xc7\x00\x16\x00\x27\x00\xca\x00\x29\x00\x22\x00\x16\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x27\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x56\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x0c\x00\x0d\x00\x0e\x00\x43\x00\x27\x00\x45\x00\x29\x00\x47\x00\x32\x00\x49\x00\x4a\x00\x4b\x00\x4a\x00\xd8\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x68\x00\x5c\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x29\x00\x8e\x00\x2b\x00\x85\x00\xc6\x00\xc7\x00\x85\x00\xc9\x00\xca\x00\xc6\x00\xc7\x00\x62\x00\x7c\x00\x4a\x00\xc6\x00\xc7\x00\x0c\x00\xc9\x00\xca\x00\x54\x00\x55\x00\x6c\x00\xd8\x00\x1c\x00\xc6\x00\xc7\x00\x28\x00\xc9\x00\xca\x00\x27\x00\x75\x00\x29\x00\xd8\x00\x29\x00\xc6\x00\xc7\x00\x74\x00\xc9\x00\xca\x00\x5e\x00\x5f\x00\x60\x00\xd8\x00\x29\x00\xb9\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x5c\x00\x8e\x00\xd8\x00\x4d\x00\x27\x00\xc4\x00\x29\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x2b\x00\xcf\x00\x2d\x00\xd1\x00\x17\x00\x40\x00\x41\x00\xb9\x00\x17\x00\x29\x00\xd8\x00\x2b\x00\xbd\x00\x5f\x00\x60\x00\xc0\x00\x0f\x00\xc2\x00\x17\x00\xc4\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x1c\x00\xcb\x00\xcc\x00\xcd\x00\xb9\x00\xcf\x00\x29\x00\xd1\x00\x47\x00\x1d\x00\x49\x00\x4a\x00\x4b\x00\xd8\x00\x32\x00\xc4\x00\x32\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x43\x00\xcf\x00\x45\x00\xd1\x00\x47\x00\x27\x00\x49\x00\x4a\x00\x4b\x00\x28\x00\xd8\x00\x4e\x00\x4f\x00\x1c\x00\x51\x00\x0c\x00\x0d\x00\x0e\x00\x2b\x00\x43\x00\x74\x00\x45\x00\x22\x00\x47\x00\x73\x00\x49\x00\x4a\x00\x4b\x00\x6d\x00\x6e\x00\x4e\x00\x4f\x00\x0c\x00\x51\x00\x6c\x00\x6d\x00\x6e\x00\x17\x00\x43\x00\x6a\x00\x45\x00\x17\x00\x47\x00\x85\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\x4d\x00\x4e\x00\x4f\x00\x1e\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x43\x00\x85\x00\x45\x00\x4d\x00\x47\x00\x05\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x4d\x00\x4e\x00\x4f\x00\x6c\x00\x6d\x00\x6e\x00\xb6\x00\x6d\x00\x6e\x00\x43\x00\xba\x00\x45\x00\x32\x00\x47\x00\x1e\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x4d\x00\x4e\x00\x4f\x00\xc6\x00\xc7\x00\x0d\x00\x0e\x00\xca\x00\x8e\x00\x43\x00\x28\x00\x45\x00\x16\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x4d\x00\x4e\x00\x4f\x00\x0d\x00\x0e\x00\xc6\x00\xc7\x00\x1c\x00\xc9\x00\xca\x00\x43\x00\x75\x00\x45\x00\xb9\x00\x47\x00\x85\x00\x49\x00\x4a\x00\x4b\x00\x7a\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x0f\x00\x10\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x74\x00\x47\x00\x85\x00\x49\x00\x4a\x00\x4b\x00\x85\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x29\x00\x47\x00\x25\x00\x49\x00\x4a\x00\x4b\x00\x85\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1c\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\x1e\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x65\x00\x49\x00\x4a\x00\x4b\x00\x60\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x85\x00\x47\x00\x1d\x00\x49\x00\x4a\x00\x4b\x00\x1d\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x97\x00\x98\x00\xb9\x00\x0d\x00\x0e\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x7d\x00\x7e\x00\x7f\x00\xd8\x00\x31\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x5c\x00\x45\x00\xb9\x00\x47\x00\x1e\x00\x49\x00\x4a\x00\x4b\x00\x05\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\x05\x00\x06\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x2b\x00\x47\x00\x57\x00\x49\x00\x4a\x00\x4b\x00\x22\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x2b\x00\x47\x00\x41\x00\x49\x00\x4a\x00\x4b\x00\x1c\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x5e\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x0c\x00\x4d\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x22\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\x0d\x00\x0e\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x28\x00\x45\x00\x24\x00\x47\x00\x24\x00\x49\x00\x4a\x00\x4b\x00\x0d\x00\x0e\x00\x4e\x00\x4f\x00\xd8\x00\x74\x00\xc6\x00\xc7\x00\x5c\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1d\x00\x47\x00\x2d\x00\x49\x00\x4a\x00\x4b\x00\x37\x00\x38\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x5c\x00\x45\x00\xb9\x00\x47\x00\x2b\x00\x49\x00\x4a\x00\x4b\x00\x08\x00\x09\x00\x4e\x00\x4f\x00\xd8\x00\x05\x00\x06\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1d\x00\x47\x00\x1d\x00\x49\x00\x4a\x00\x4b\x00\x05\x00\x06\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x2c\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\x05\x00\x06\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x1d\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\x28\x00\x29\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x2d\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x4a\x00\x4b\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x22\x00\x43\x00\xb9\x00\x45\x00\x85\x00\x47\x00\x21\x00\x49\x00\x4a\x00\x4b\x00\x7d\x00\x7e\x00\x7f\x00\xd8\x00\x0f\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x0f\x00\x47\x00\x16\x00\x49\x00\x4a\x00\x4b\x00\x03\x00\x04\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\x46\x00\x45\x00\xb9\x00\x47\x00\x4c\x00\x49\x00\x4a\x00\x4b\x00\x4a\x00\x4b\x00\x4e\x00\x4f\x00\xd8\x00\x7f\x00\x80\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x1e\x00\x49\x00\x4a\x00\x4b\x00\x28\x00\x29\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x43\x00\xb9\x00\x45\x00\x17\x00\x47\x00\x60\x00\x49\x00\x4a\x00\x4b\x00\x54\x00\x55\x00\x4e\x00\x4f\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x0f\x00\xb9\x00\x43\x00\x44\x00\x45\x00\x28\x00\x47\x00\x0c\x00\x49\x00\x4a\x00\x4b\x00\x05\x00\x06\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x21\x00\x85\x00\xb9\x00\x43\x00\x28\x00\x45\x00\x85\x00\x47\x00\x85\x00\x49\x00\x4a\x00\x4b\x00\x1e\x00\xd8\x00\x29\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x1d\x00\xb9\x00\x1e\x00\x22\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x96\x00\x97\x00\x98\x00\x17\x00\x24\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x28\x00\xb9\x00\x46\x00\x47\x00\x74\x00\x49\x00\x4a\x00\x4b\x00\x96\x00\x97\x00\x98\x00\x4f\x00\x74\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x51\x00\x52\x00\x53\x00\xb9\x00\x2b\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x74\x00\x61\x00\x62\x00\x63\x00\xd8\x00\x65\x00\x5c\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x60\x00\xb9\x00\x46\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\x82\x00\x83\x00\x84\x00\x74\x00\x24\x00\xd8\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x27\x00\x1c\x00\x1e\x00\xb9\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x1d\x00\x4c\x00\x61\x00\x62\x00\x63\x00\xd8\x00\x65\x00\x1b\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x17\x00\x24\x00\xb9\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\x24\x00\x22\x00\x05\x00\x64\x00\x85\x00\xd8\x00\x1c\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x17\x00\x01\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\x17\x00\x17\x00\x17\x00\xbb\x00\x3e\x00\x3f\x00\x40\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x2d\x00\x17\x00\xd8\x00\xc6\x00\xc7\x00\x17\x00\xc9\x00\xca\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\x22\x00\x21\x00\x2b\x00\xc0\x00\x17\x00\x41\x00\x41\x00\xc4\x00\xd8\x00\xc6\x00\xc7\x00\x41\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\x21\x00\x27\x00\x6e\x00\xbb\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x2d\x00\x4c\x00\x71\x00\xd8\x00\xd9\x00\xda\x00\xc6\x00\xc7\x00\x65\x00\xc9\x00\xca\x00\x85\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x85\x00\xd8\x00\xc6\x00\xc7\x00\x0c\x00\xc9\x00\xca\x00\x17\x00\x17\x00\x17\x00\x22\x00\x62\x00\x17\x00\x21\x00\xb8\x00\x2b\x00\x74\x00\xbb\x00\x29\x00\x28\x00\xd8\x00\x65\x00\xc6\x00\xc7\x00\x22\x00\xc9\x00\xca\x00\xc5\x00\xc6\x00\xc7\x00\x75\x00\xc9\x00\xca\x00\x20\x00\x0f\x00\x05\x00\x85\x00\x1d\x00\x6c\x00\x86\x00\xd8\x00\xc6\x00\xc7\x00\x0f\x00\xc9\x00\xca\x00\xc6\x00\xc7\x00\x20\x00\xc9\x00\xca\x00\x1d\x00\x69\x00\xb6\x00\x16\x00\x08\x00\x09\x00\xba\x00\x5f\x00\xd8\x00\x86\x00\x0c\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\x28\x00\x01\x00\xc6\x00\xc7\x00\x86\x00\x0f\x00\xca\x00\xc6\x00\xc7\x00\x0f\x00\xc9\x00\xca\x00\x0f\x00\xd8\x00\x1d\x00\x0f\x00\x24\x00\x25\x00\x1d\x00\x86\x00\x1d\x00\x2c\x00\x16\x00\x2c\x00\x1d\x00\xd8\x00\x86\x00\x00\x00\x6c\x00\x31\x00\x32\x00\x33\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xc6\x00\xc7\x00\xd8\x00\xc9\x00\xca\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xd8\x00\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x50\x00\xff\xff\xff\xff\x2a\x00\x54\x00\x55\x00\x56\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x62\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x01\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\x64\x00\xff\xff\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x16\x00\x6d\x00\xff\xff\x6f\x00\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\xff\xff\xff\xff\xff\xff\x84\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x50\x00\x23\x00\xff\xff\xff\xff\x54\x00\x55\x00\x56\x00\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x75\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\x64\x00\xff\xff\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\x6d\x00\xff\xff\x6f\x00\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\xff\xff\xff\xff\xff\xff\x84\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbd\x00\x18\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\xc4\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x2a\x00\xd1\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x01\x00\x6d\x00\xff\xff\x6f\x00\x05\x00\x06\x00\x72\x00\xff\xff\x09\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x16\x00\xff\xff\x18\x00\x84\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x01\x00\xff\xff\x20\x00\xff\xff\x05\x00\x06\x00\x24\x00\xff\xff\x09\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\x32\x00\x16\x00\x22\x00\x18\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x16\x00\x20\x00\x18\x00\xff\xff\xff\xff\x24\x00\xff\xff\x31\x00\x32\x00\x33\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x75\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x16\x00\x01\x00\x62\x00\xff\xff\x81\x00\x05\x00\x06\x00\xff\xff\x01\x00\x60\x00\xff\xff\x62\x00\x05\x00\x06\x00\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xbd\x00\x75\x00\x16\x00\xc0\x00\x18\x00\xc2\x00\xff\xff\xc4\x00\x01\x00\x16\x00\x75\x00\x18\x00\x20\x00\x81\x00\xcb\x00\xcc\x00\xcd\x00\xff\xff\xcf\x00\x20\x00\xd1\x00\xff\xff\x81\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x62\x00\x05\x00\x06\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x16\x00\x75\x00\x18\x00\xff\xff\x62\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\x20\x00\x62\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x75\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x32\x00\xff\xff\x75\x00\x62\x00\xff\xff\x24\x00\x25\x00\x81\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x81\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\x75\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x62\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x81\x00\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\x71\x00\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\x16\x00\x17\x00\x62\x00\x63\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7c\x00\x7d\x00\x7e\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\x16\x00\xff\xff\x66\x00\x67\x00\x68\x00\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\x25\x00\xff\xff\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\x16\x00\xff\xff\x66\x00\x67\x00\x68\x00\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\x6d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\x01\x00\x48\x00\x49\x00\x75\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x16\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\x66\x00\x67\x00\x68\x00\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x62\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\x01\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\x6d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\x66\x00\x67\x00\x68\x00\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x42\x00\x43\x00\x44\x00\x05\x00\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\x01\x00\xff\xff\x32\x00\xff\xff\x05\x00\x06\x00\xff\xff\x62\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x16\x00\x46\x00\x18\x00\x48\x00\x49\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\x38\x00\xff\xff\x62\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x69\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x16\x00\x17\x00\x18\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\x0b\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x01\x00\xff\xff\x75\x00\x62\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x16\x00\x75\x00\x18\x00\x20\x00\xff\xff\x22\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x31\x00\x32\x00\x33\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x16\x00\x60\x00\x01\x00\x62\x00\x03\x00\x04\x00\x05\x00\x06\x00\x1e\x00\x01\x00\x62\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x75\x00\x16\x00\xff\xff\x18\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\x20\x00\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x75\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\xff\xff\xff\xff\x01\x00\x75\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x75\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x01\x00\x75\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x01\x00\x18\x00\x20\x00\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x30\x00\xff\xff\x75\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x16\x00\x01\x00\x60\x00\xff\xff\x62\x00\x05\x00\x06\x00\xff\xff\x01\x00\xff\xff\xff\xff\x62\x00\x05\x00\x06\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x16\x00\x75\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x75\x00\x18\x00\x20\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x30\x00\xff\xff\x05\x00\x06\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x75\x00\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x75\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x75\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\x20\x00\x62\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x6c\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x17\x00\x05\x00\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x22\x00\x05\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x16\x00\x17\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x26\x00\x01\x00\xff\xff\xff\xff\x62\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\x62\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x75\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x62\x00\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x6c\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x75\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x16\x00\xff\xff\xff\xff\xff\xff\x62\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x22\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\x16\x00\x01\x00\x02\x00\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x75\x00\xff\xff\x05\x00\xff\xff\x62\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x16\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x01\x00\xff\xff\x75\x00\xff\xff\x05\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x62\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\x62\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\x93\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9f\x00\xa0\x00\xa1\x00\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x00\x9d\x00\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\x8f\x00\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xff\xff\xce\x00\xff\xff\xd0\x00\xd1\x00\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xa6\x00\xa7\x00\xff\xff\x93\x00\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xa7\x00\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xd2\x00\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\xd2\x00\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x85\x00\x86\x00\x87\x00\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\x86\x00\xff\xff\x88\x00\xff\xff\xd2\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x88\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\x96\x00\x97\x00\x98\x00\xff\xff\x9a\x00\x9b\x00\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\x93\x00\xff\xff\xff\xff\x96\x00\x97\x00\x98\x00\xff\xff\x9a\x00\x9b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\x93\x00\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb5\x00\xff\xff\xd2\x00\xb8\x00\xb9\x00\xff\xff\xbb\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x0c\x00\x09\x00\x0b\x00\x93\x00\x09\x00\x94\x00\x2b\x02\x3f\x03\x40\x03\x41\x03\xb7\x00\x56\x02\xd4\x02\x26\x04\x10\x03\x0c\x03\x81\x01\x07\x02\xb7\x00\xb0\x03\xfd\x03\x7f\x01\x28\x00\x0f\x03\xb7\x00\x27\x04\x28\x04\xb7\x00\xe3\x01\xb8\x00\x9b\x02\x60\x02\x03\x01\x4c\x03\x28\x03\xd4\x03\x81\x01\x07\x02\xf3\x02\x56\x02\xa5\x03\xa6\x03\xaf\x01\xe2\x01\xfc\x00\x08\x02\x02\x01\x9b\x00\x81\x01\x19\x03\x81\x01\xe6\x02\xba\xff\x86\x01\x81\x01\x61\x03\x81\x01\x61\x03\x7b\x03\x16\x02\x7e\x02\x05\x01\x21\x00\x69\x00\x1a\x02\x0a\x02\x74\x02\x81\x01\xe6\x02\x2d\x04\xb1\x03\xb2\x03\xec\x03\xf5\xff\x81\x01\x19\x03\x6b\x01\x9c\x02\x81\x01\x7d\x03\x18\x03\x27\x03\x28\x03\xfd\x00\x87\x01\xfd\x00\xe6\x02\xcf\x00\x7f\x02\x80\x02\xb6\x03\x0d\x02\x1c\x02\x92\x03\x17\x02\xb4\x00\x6c\x01\x62\x00\x63\x00\x64\x00\xfd\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x6d\x01\x99\x00\x30\x04\x9a\x00\xdf\x01\xdd\x03\x71\x03\xa7\x03\xd4\x02\x32\x04\xd7\x03\x56\x00\xda\x02\x93\x03\x34\x03\x35\x03\x1c\x02\xd6\x03\xd7\x03\xa3\x01\x24\x04\x24\x00\x25\x00\xde\x03\xf4\x02\x25\x00\x1f\x04\x70\x00\xa7\x03\x71\x00\x5c\x00\x36\x03\xb6\x01\xb7\x01\x73\x00\x61\x02\xd0\x02\xcc\x03\x74\x00\x9b\x00\x75\x00\x76\x00\x24\x00\x25\x00\xf2\x01\x1a\x03\x62\x03\x7e\x03\x63\x03\x70\x00\x62\x02\x71\x00\x61\x02\xcd\x03\xb6\x01\xb7\x01\x73\x00\x20\x00\x21\x00\x22\x00\x74\x00\x1b\x02\x75\x00\x76\x00\x21\x00\x29\x03\x42\x03\x62\x02\xb9\x00\x43\x03\x29\x04\x1b\x03\xe4\x01\x09\x02\x2a\x04\xe5\x01\xb9\x00\xe6\x01\x13\x04\x20\x00\x21\x00\x22\x00\xb9\x00\x24\x00\x25\x00\xb9\x00\x21\x00\x9f\x00\xe7\x01\x1d\x02\xa0\x00\xe8\x01\x42\x03\x0b\x02\xe7\x02\x43\x03\x16\x04\x44\x03\x2c\x02\x80\x01\x0a\x00\x0a\x00\x2b\x04\x0a\x00\x0a\x00\x20\x00\x21\x00\x22\x00\x80\x01\x24\x00\x25\x00\xe8\x02\x21\x00\x29\x03\x21\x00\x69\x00\x77\x00\x6a\x00\x25\x00\x21\x00\x69\x00\x20\x02\xda\x01\x44\x03\x78\x00\x10\x00\x79\x00\x12\x00\x13\x00\x14\x00\x15\x00\xb0\x03\x6b\x00\x16\x00\x17\x00\x18\x00\xd0\x01\xe0\x01\x77\x00\xdb\x01\xb4\x00\x19\x00\x62\x00\x63\x00\x64\x00\xe8\x00\x78\x00\x10\x00\x79\x00\x12\x00\x13\x00\x14\x00\x15\x00\xc1\x00\x29\x04\x16\x00\x17\x00\x18\x00\x2a\x04\xcf\x00\xd8\x03\xd1\x00\xf1\x01\x19\x00\xd9\x03\x81\x01\x7d\x03\x17\x04\xd8\x03\x84\x02\x21\x00\x9f\x00\xd9\x03\xc2\x00\xa0\x00\x1c\x00\x21\x00\x9f\x00\x1d\x00\x1e\x00\xa0\x00\x1f\x00\xdf\x02\x05\x04\x21\x00\x9f\x00\x2b\x04\x85\x02\xa0\x00\xd5\x00\xce\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x6f\x03\xe9\x00\x1d\x00\x1e\x00\x07\x04\x1f\x00\x26\x00\xe0\x02\xc8\x00\xc9\x00\xea\x00\x12\x03\xcb\x00\xe7\x01\xcc\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xd4\x00\xaf\x01\x2c\x00\x2d\x00\x70\x00\x62\x02\x71\x00\x26\x00\xb5\x01\xb6\x01\xb7\x01\x73\x00\xd7\x00\xd8\x00\xd9\x00\x74\x00\x51\x03\x75\x00\x76\x00\xa9\x03\xeb\x01\x52\x03\xb8\x01\x7f\x03\xb0\x01\x56\x02\x70\x00\xd8\x03\x71\x00\xc8\x00\xc9\x00\xd9\x03\xe1\x02\x73\x00\x08\x04\xdf\x02\x23\x00\x74\x00\xec\x01\x75\x00\x76\x00\x00\x02\x0f\x03\x21\x00\x9f\x00\xf2\x01\x0a\x03\xa0\x00\x21\x00\x69\x00\x37\x04\x6a\x00\x25\x00\xce\x00\xdf\x02\xd0\x00\xce\x00\xcf\x00\x20\x00\x21\x00\x22\x00\x11\x04\x21\x00\x9f\x00\x74\x02\xfc\x03\x6b\x00\x5f\x00\x01\x02\x02\x02\x75\x02\x61\x00\x0b\x04\x62\x00\x63\x00\x64\x00\xf2\x01\x0c\x04\xe0\x00\x67\x00\x03\x02\xe7\x00\xd4\x00\xfc\x02\xae\x03\xd4\x00\x62\x00\x63\x00\x64\x00\x20\x00\x21\x00\x22\x00\x12\x04\x77\x00\xd7\x00\xd8\x00\xd9\x00\xd7\x00\xd8\x00\xd9\x00\xa4\x01\x78\x00\x10\x00\x79\x00\x12\x00\x13\x00\x14\x00\x15\x00\xd1\x03\xa1\x01\x16\x00\x17\x00\x18\x00\xaa\x01\xaf\x03\x77\x00\xf5\x03\xab\x01\x19\x00\x2c\x00\x2d\x00\xf6\x03\xac\x01\x78\x00\x10\x00\x79\x00\x12\x00\x13\x00\x14\x00\x15\x00\x2c\x00\x2d\x00\x16\x00\x17\x00\x18\x00\x70\x00\xa9\x03\x71\x00\x36\x01\x64\x00\x19\x00\x72\x00\x73\x00\x21\x00\x69\x00\xe4\x00\x74\x00\xf6\x02\x75\x00\x76\x00\xa3\x03\x10\x04\x1c\x00\xd9\x02\xe5\x00\x1d\x00\x1e\x00\x22\x02\x1f\x00\xd1\x01\x23\x02\x8a\x02\x11\x04\xb4\x00\xe5\x00\x62\x00\x63\x00\x64\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xb8\x01\xc8\x02\x1d\x00\x1e\x00\x87\x02\x1f\x00\x26\x00\xc8\x00\xc9\x00\x62\x01\x68\x00\xcb\x00\xe5\x00\xcc\x00\x7d\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x7c\x01\x97\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x26\x00\xe4\x01\x8e\x01\x8f\x01\xe5\x01\x70\x00\xee\x02\x71\x00\x21\x00\x69\x00\x90\x01\x6a\x00\x25\x00\x6b\x00\xb7\x03\x4f\x02\x50\x02\xe7\x01\x75\x00\x76\x00\xe8\x01\x77\x00\xc6\x03\x20\x00\x21\x00\x22\x00\x6b\x00\xc8\x03\xdc\x01\x78\x00\x10\x00\x79\x00\x12\x00\x13\x00\x14\x00\x15\x00\x9e\x01\xa1\x01\x16\x00\x17\x00\x18\x00\x70\x00\xd7\x01\x71\x00\x39\x02\xa7\x00\x19\x00\xe5\x00\x4f\x03\x42\x02\x7b\x01\x11\x02\xb9\x03\xa1\x01\x75\x00\x76\x00\xcb\x03\x7c\x01\x97\x00\x21\x00\x69\x00\xdd\x01\x6a\x00\x25\x00\x20\x00\x21\x00\x22\x00\x5f\x00\xcf\x03\x60\x00\xde\x01\x61\x00\x5d\x01\x62\x00\x63\x00\x64\x00\x39\x03\x37\x01\x43\x02\x67\x00\x1c\x00\xe5\x00\x54\x03\x1d\x00\x1e\x00\xea\x03\x1f\x00\x21\x00\x69\x00\xeb\x03\x6a\x00\x25\x00\x23\x02\xbc\x01\x77\x00\xbd\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x83\x03\xcd\x02\x51\x02\x6b\x00\x13\x00\xce\x02\x15\x00\x26\x00\x87\x03\x16\x00\x17\x00\x18\x00\x70\x00\x95\x00\x71\x00\x9b\x00\x7e\x01\x19\x00\x96\x00\x97\x00\xba\x03\xbb\x03\xbc\x03\xb9\x03\x8d\x03\x75\x00\x76\x00\xab\x03\x77\x00\x62\x00\x63\x00\x64\x00\xf2\x02\xce\x00\xcf\x00\xd0\x00\xd1\x00\x62\x01\x51\x02\xcb\x00\x13\x00\xcc\x00\x15\x00\xe6\x03\xe7\x03\x16\x00\x17\x00\x18\x00\xf1\x02\x52\x02\x53\x02\x1c\x00\xd2\x01\x19\x00\x1d\x00\x54\x02\xb4\x00\x1f\x00\x62\x00\x63\x00\x64\x00\x9d\x00\xd4\x00\xf6\x02\xd5\x00\x9e\x00\xf8\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xfb\x02\xd7\x00\xd8\x00\xd9\x00\x21\x00\x9f\x00\x11\x03\x26\x00\xa0\x00\x14\x03\x68\x00\xa4\x01\x21\x00\x22\x00\x1c\x00\xa5\x01\x25\x00\x1d\x00\x1e\x00\x31\x03\x1f\x00\x06\x04\xbc\x03\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x77\x00\x33\x03\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x33\x02\x70\x00\x51\x02\x71\x00\x13\x00\x6b\x00\x15\x00\x26\x00\x31\x02\x16\x00\x17\x00\x18\x00\x50\x03\x3b\x02\x75\x00\x76\x00\xc3\x00\x19\x00\xef\x03\xf0\x03\xa4\x00\xa5\x00\xa6\x00\xa7\x00\x9d\x00\xf0\x01\x21\x00\x22\x00\x9e\x00\xa5\x01\x25\x00\x9b\x01\x56\x03\xd7\x02\xbf\x01\x4a\x00\xd4\x03\x4b\x00\x4c\x00\x57\x03\x21\x00\x9f\x00\xc1\x01\x49\x02\xa0\x00\x21\x00\x69\x00\x3c\x02\x6a\x00\x25\x00\x56\x02\x1c\x00\xb3\x00\x4b\x02\x1d\x00\x1e\x00\xb4\x00\x1f\x00\x62\x00\x63\x00\x64\x00\x21\x00\x69\x00\x6b\x00\xa5\x01\x25\x00\x4c\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x59\x02\x21\x00\x69\x00\x5e\x02\x6a\x00\x25\x00\xcf\x01\x26\x00\xc4\x00\x65\x02\x9b\x01\xc5\x00\xc6\x02\x1f\x03\x9b\x01\xc7\x00\x9c\x01\x77\x00\xbc\x01\x6b\x00\xbd\x01\x69\x02\xc8\x00\xc9\x00\xca\x00\x72\x02\xcb\x00\x51\x02\xcc\x00\x13\x00\x9d\x03\x15\x00\x9e\x03\x12\x02\x16\x00\x17\x00\x18\x00\x71\x02\x58\x03\x59\x03\x5a\x03\x5b\x03\x19\x00\x56\x03\x26\x03\x42\x02\x20\x00\x21\x00\x22\x00\x80\x02\x57\x03\x5c\x03\x43\xfe\x13\x00\x43\xfe\x15\x00\x9e\x03\x9f\x03\x16\x00\x17\x00\x18\x00\x95\x02\x55\xfe\x5f\x00\x55\xfe\x60\x00\x19\x00\x61\x00\x9d\x00\x62\x00\x63\x00\x64\x00\x9e\x00\x82\x02\x43\x02\x67\x00\x1c\x00\x5a\x02\x5b\x02\x1d\x00\x1e\x00\x60\x03\x1f\x00\xe2\x00\x21\x00\x9f\x00\x5a\x02\x5b\x02\xa0\x00\x5c\x02\x5d\x02\x93\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x21\x00\x86\x02\x1c\x00\xba\x01\x87\x02\x1d\x00\x1e\x00\x26\x00\x1f\x00\x20\x04\x21\x04\x22\x04\x21\x00\x69\x00\xf9\x01\x6a\x00\x25\x00\xb3\x02\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xfd\x01\xdf\x03\x5a\x03\x5b\x03\x41\x02\x42\x02\x6b\x00\x26\x00\x84\x01\xa8\x00\xa5\x00\xa6\x00\xa7\x00\x5c\x03\xfc\x01\x13\x00\x5f\xfe\x15\x00\x5f\xfe\x05\x02\x16\x00\x17\x00\x18\x00\x5f\x00\x60\xfe\x60\x00\x60\xfe\x61\x00\x19\x00\x62\x00\x63\x00\x64\x00\xd5\x02\x18\x02\x43\x02\x67\x00\x11\x04\x0a\x01\x0b\x01\x90\x01\x26\x02\xe2\x03\xe3\x03\x17\x02\xe4\x03\x61\xfe\xb4\x00\x61\xfe\x62\x00\x63\x00\x64\x00\x20\x02\x20\x00\x21\x00\x22\x00\xac\x00\x20\x00\x21\x00\x22\x00\x68\x00\xb1\x00\x62\xfe\x1c\x00\x62\xfe\xb2\x00\x1d\x00\x1e\x00\xdb\x00\x1f\x00\xf7\x03\x0a\x01\x0b\x01\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\xdd\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xef\x00\x63\x00\x64\x00\xbf\x03\x0d\x02\x07\x01\x6b\x00\x26\x00\xb4\x00\x3e\x01\x62\x00\x63\x00\x64\x00\x64\x03\x0d\x02\x99\x03\x9a\x03\x9b\x03\xb4\x00\x5b\x01\x62\x00\x63\x00\x64\x00\x0c\x02\x0d\x02\x84\x03\x7b\x02\x7c\x02\xb4\x00\xae\x00\x62\x00\x63\x00\x64\x00\xc1\x03\xc2\x03\x28\x00\x29\x00\x3b\x03\x3c\x03\x2c\x00\x2d\x00\x36\x04\x20\x00\x21\x00\x22\x00\x32\x04\x9d\x00\x5f\x00\x2f\x04\x60\x00\x9e\x00\x61\x00\x30\x04\x62\x00\x63\x00\x64\x00\x3e\x01\x68\x00\xe5\x00\x67\x00\xe6\x00\xe7\x00\x21\x00\x9f\x00\x2d\x04\x63\xfe\xa0\x00\x63\xfe\x46\x03\x25\x04\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x64\xfe\x61\x00\x64\xfe\x62\x00\x63\x00\x64\x00\x15\x04\x01\x04\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x2e\x02\x81\x01\x2f\x02\x5f\x00\x65\xfe\x60\x00\x65\xfe\x61\x00\x1f\x04\x62\x00\x63\x00\x64\x00\x16\x04\x6b\x00\xe5\x00\x67\x00\xe6\x00\xe7\x00\x02\x04\x84\x02\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xcd\xfe\xe8\x00\xcd\xfe\x1a\x04\x21\x00\x69\x00\x1c\x04\x6a\x00\x25\x00\x21\x00\x4b\x03\x56\x00\xc3\x00\xfb\x03\x21\x00\x69\x00\xfd\x03\x6a\x00\x25\x00\x5a\x02\x5f\x03\x47\x03\x6b\x00\x56\x02\x21\x00\x69\x00\xee\x01\x6a\x00\x25\x00\x6c\xfe\x5c\x00\x6c\xfe\x6b\x00\x4f\xff\x21\x00\x69\x00\x82\x02\x6a\x00\x25\x00\x76\x02\x77\x02\x78\x02\x6b\x00\x0a\x04\x68\x00\xbf\x01\x4a\x00\x99\x03\x4b\x00\x4c\x00\x84\x02\xe8\x00\x6b\x00\xc1\x01\x6d\xfe\x6d\x03\x6d\xfe\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\xc8\x00\xc9\x00\xea\x00\xa2\x01\xcb\x00\xa3\x01\xcc\x00\x0e\x04\x9b\x00\x9c\x00\x68\x00\x0f\x04\xf7\x01\x6b\x00\xf8\x01\xc4\x00\x69\x03\x78\x02\xc5\x00\xd3\x03\xc6\x00\xd6\x03\xc7\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x56\x02\xc8\x00\xc9\x00\xca\x00\x68\x00\xcb\x00\xe2\x03\xcc\x00\x48\x02\xf3\xfd\x62\x00\x63\x00\x64\x00\x6b\x00\xed\x03\xe9\x00\xee\x03\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\xc8\x00\xc9\x00\xea\x00\x5f\x00\xcb\x00\x60\x00\xcc\x00\x61\x00\xf2\x03\x62\x00\x63\x00\x64\x00\xef\x03\x6b\x00\xe0\x00\x67\x00\x56\x02\x80\x03\x30\x02\x81\x01\x2f\x02\x9d\x03\x5f\x00\x6b\x02\x60\x00\xdd\x02\x61\x00\xf9\x03\x62\x00\x63\x00\x64\x00\x7b\x03\x7c\x02\xe0\x00\x67\x00\xa1\x03\xe1\x00\x7a\x02\x7b\x02\x7c\x02\xa2\x03\x5f\x00\x81\x03\x60\x00\xa3\x03\x61\x00\xaa\x03\x62\x00\x63\x00\x64\x00\xde\x01\x18\x04\x66\x00\x67\x00\xa5\x03\xbf\x01\x4a\x00\xc0\x01\x4b\x00\x4c\x00\x5f\x00\xad\x03\x60\x00\xc1\x01\x61\x00\x2c\x00\x62\x00\x63\x00\x64\x00\xb5\x03\xfe\x03\x66\x00\x67\x00\x8c\x02\x7b\x02\x7c\x02\x9d\x00\xf9\x02\x7c\x02\x5f\x00\x9e\x00\x60\x00\xb6\x03\x61\x00\xb9\x03\x62\x00\x63\x00\x64\x00\x1d\x03\x0a\x04\x66\x00\x67\x00\x21\x00\x9f\x00\x1d\x03\x1e\x03\xa0\x00\xe2\x00\x5f\x00\xc5\x03\x60\x00\xc8\x03\x61\x00\xca\x03\x62\x00\x63\x00\x64\x00\xcb\x03\xdc\x03\x66\x00\x67\x00\x20\x03\x21\x03\x21\x00\x69\x00\x56\x02\x6a\x00\x25\x00\x5f\x00\xd1\x03\x60\x00\x68\x00\x61\x00\xcf\x03\x62\x00\x63\x00\x64\x00\x3b\x03\xe0\x03\x66\x00\x67\x00\x6b\x00\x2e\x03\x2f\x03\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x48\x03\x61\x00\x49\x03\x62\x00\x63\x00\x64\x00\x4a\x03\xc3\x03\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x4b\x03\x61\x00\x4e\x03\x62\x00\x63\x00\x64\x00\x4f\x03\x09\x03\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x56\x02\x61\x00\x66\x03\x62\x00\x63\x00\x64\x00\x56\x03\x22\x03\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x67\x03\x61\x00\xc4\x01\x62\x00\x63\x00\x64\x00\x7a\x02\x47\x02\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x6b\x03\x61\x00\xf4\xfd\x62\x00\x63\x00\x64\x00\x6f\x03\x8b\x01\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\xb0\x02\x0b\x01\x68\x00\xb1\x02\xb2\x02\xcd\x01\x7d\x03\x62\x00\x63\x00\x64\x00\xf3\x01\xf4\x01\xf5\x01\x6b\x00\x86\x03\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x84\x02\x60\x00\x68\x00\x61\x00\x89\x03\x62\x00\x63\x00\x64\x00\x2c\x00\xea\x01\x66\x00\x67\x00\x6b\x00\xce\x02\x77\x01\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\xa2\x01\x61\x00\x94\x03\x62\x00\x63\x00\x64\x00\xdd\x02\xef\x01\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\xde\x02\x61\x00\xe1\x02\x62\x00\x63\x00\x64\x00\x56\x02\x3f\x01\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\xea\x02\x61\x00\xe5\x02\x62\x00\x63\x00\x64\x00\xec\x02\x65\x00\x66\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x28\xff\x61\x00\xed\x02\x62\x00\x63\x00\x64\x00\x81\x01\xd1\x02\xe5\x03\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\xee\x02\x60\x00\xf0\x02\x61\x00\xf1\x02\x62\x00\x63\x00\x64\x00\x81\x01\x82\x01\x89\x02\x67\x00\x6b\x00\x82\x02\x21\x00\x69\x00\x84\x02\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\xf8\x02\x61\x00\xfb\x02\x62\x00\x63\x00\x64\x00\xa9\x00\xaa\x00\x8b\x02\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x84\x02\x60\x00\x68\x00\x61\x00\x09\x03\x62\x00\x63\x00\x64\x00\x29\x02\x97\x00\x8d\x02\x67\x00\x6b\x00\x76\x01\x77\x01\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\xbb\x00\x61\x00\xbb\x00\x62\x00\x63\x00\x64\x00\x28\x02\x29\x02\xce\x01\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x0e\x03\x61\x00\x14\x03\x62\x00\x63\x00\x64\x00\x28\x02\x29\x02\xff\x01\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x16\x03\x61\x00\x17\x03\x62\x00\x63\x00\x64\x00\xee\x01\xef\x01\x04\x02\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x18\x03\x61\x00\x1d\x03\x62\x00\x63\x00\x64\x00\x3e\x03\x3f\x03\x13\x02\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x24\x03\x5f\x00\x68\x00\x0e\x02\x25\x03\xb4\x00\x26\x03\x62\x00\x63\x00\x64\x00\xf8\x01\xf4\x01\xf5\x01\x6b\x00\x2d\x03\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x2e\x03\x61\x00\x31\x03\x62\x00\x63\x00\x64\x00\x2a\x00\x2b\x00\xbb\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x99\x00\x60\x00\x68\x00\x61\x00\x33\x02\x62\x00\x63\x00\x64\x00\xe3\x02\xe4\x02\xbf\x00\x67\x00\x6b\x00\x35\x02\x36\x02\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x37\x02\x61\x00\x39\x03\x62\x00\x63\x00\x64\x00\xee\x01\xef\x01\xd9\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x5f\x00\x68\x00\x60\x00\x38\x02\x61\x00\x3e\x02\x62\x00\x63\x00\x64\x00\xfb\x01\xfc\x01\xee\x00\x67\x00\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\xac\x00\x68\x00\x5f\x00\x96\x01\x97\x01\x3f\x02\xb4\x00\x40\x02\x62\x00\x63\x00\x64\x00\x28\x02\x29\x02\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x41\x02\x45\x02\x68\x00\x5f\x00\xee\x01\xde\x00\x46\x02\xb4\x00\x47\x02\x62\x00\x63\x00\x64\x00\x4e\x02\x6b\x00\x4b\x02\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x58\x02\x68\x00\x4f\x02\x2d\xff\x25\x04\x6c\x03\x63\x00\x64\x00\x2a\x02\x0a\x01\x0b\x01\x59\x02\x76\x02\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\xee\x01\x68\x00\xfc\x02\xfd\x02\x60\x02\x62\x00\x63\x00\x64\x00\x09\x01\x0a\x01\x0b\x01\xfe\x02\x6b\x02\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x67\x02\x68\x02\x69\x02\x68\x00\xf8\x01\xef\x00\x63\x00\x64\x00\xf0\x00\x6b\x02\xff\x02\x00\x03\x01\x03\x6b\x00\x02\x03\x84\x02\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x7a\x02\x68\x00\xfc\x02\x75\x03\x89\x02\x62\x00\x63\x00\x64\x00\x79\x01\x7a\x01\x7b\x01\x82\x02\x8f\x02\x6b\x00\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x91\x02\x97\x02\x98\x02\x68\x00\x71\x03\x6c\x03\x63\x00\x64\x00\x9e\x02\xa1\x02\x76\x03\x00\x03\x01\x03\x6b\x00\x02\x03\xcb\x02\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\x9a\x01\xc2\x02\x68\x00\x1a\x04\x6c\x03\x63\x00\x64\x00\xcc\x02\xc3\x02\xd1\x02\x2c\x00\x72\x03\xd3\x02\x6b\x00\x84\x01\x21\x00\x69\x00\x23\x00\x6a\x00\x25\x00\xc3\xfd\x28\x00\xff\x03\x6c\x03\x63\x00\x64\x00\xc5\xfd\x00\x04\x6c\x03\x63\x00\x64\x00\x21\x00\x69\x00\x6b\x00\x6a\x00\x25\x00\xc4\xfd\xc7\xfd\xca\xfd\x03\x03\x3a\x02\xa6\x00\xa7\x00\xe8\x03\x6c\x03\x63\x00\x64\x00\xa3\x01\x99\x01\x6b\x00\x21\x00\x69\x00\x9a\x01\x04\x03\x25\x00\xaa\x03\x6c\x03\x63\x00\x64\x00\x9b\x01\xa8\x01\xa9\x01\xb1\x01\xf1\x00\xb2\x01\xb3\x01\xb4\x01\xc7\x00\x6b\x00\x21\x00\x69\x00\xb5\x01\x6a\x00\x25\x00\xc8\x00\xc9\x00\xe0\x00\xba\x01\xc2\x01\x03\x03\xad\x03\x6c\x03\x63\x00\x64\x00\xc6\x01\xbc\x01\xc3\x01\x6b\x00\xf2\x00\xf3\x00\x21\x00\x69\x00\xc4\x01\x04\x03\x25\x00\xcb\x01\x6b\x03\x6c\x03\x63\x00\x64\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xcc\x01\x6b\x00\x21\x00\x69\x00\xcd\x01\x6a\x00\x25\x00\xd4\x01\xd5\x01\xd6\x01\xd8\x01\x56\x00\xd9\x01\xdf\x01\x3b\x01\xff\x01\x07\x02\x3c\x01\x11\x02\x15\x02\x6b\x00\xc4\x01\x21\x00\x69\x00\x1e\x02\x6a\x00\x25\x00\x20\x00\x21\x00\x22\x00\x5c\x00\x24\x00\x25\x00\xae\x00\x1f\x02\x2c\x00\x25\x02\x2e\x02\x9b\x00\xff\xff\x6b\x00\x21\x00\x69\x00\xac\x00\x6a\x00\x25\x00\x21\x00\x69\x00\xae\x00\x6a\x00\x25\x00\xbb\x00\xbd\x00\x9d\x00\xbe\x00\xce\x00\xcf\x00\x9e\x00\xbf\x00\x6b\x00\xff\xff\xdd\x00\x21\x00\x69\x00\x6b\x00\x6a\x00\x25\x00\xee\x00\x28\x00\x21\x00\x9f\x00\xff\xff\xfa\x00\xa0\x00\x21\x00\x69\x00\xfb\x00\x6a\x00\x25\x00\xfc\x00\x6b\x00\xff\x00\x64\x02\xea\x01\xd4\x00\xbb\x00\xff\xff\xff\x00\x6e\x01\x65\x02\x19\xfe\x6f\x01\x6b\x00\xff\xff\xff\xff\x9b\x00\xd7\x00\xd8\x00\xd9\x00\x21\x00\x69\x00\x00\x00\x6a\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x21\x00\x69\x00\x6b\x00\x6a\x00\x25\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x6b\x00\x00\x00\x00\x00\x56\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x3c\x00\x51\x00\x52\x00\x53\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x56\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x7c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x28\x00\x54\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x38\x03\x00\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x59\x00\x65\x02\x86\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x8c\x00\x5d\x00\x5e\x00\x5f\x00\x8d\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x4d\x00\x3b\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x5c\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x38\x03\x00\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x59\x00\x00\x00\x86\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x8c\x00\x5d\x00\x5e\x00\x5f\x00\x8d\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc4\x00\x39\x00\x00\x00\xc5\x00\x00\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\xc8\x00\xc9\x00\xca\x00\x00\x00\xcb\x00\x3c\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x59\x00\x28\x00\x86\x00\x00\x00\x5a\x00\x2c\x00\x2d\x00\x87\x00\x00\x00\x46\xff\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x00\x00\x8c\x00\x5d\x00\x5e\x00\x5f\x00\x8d\x00\x8e\x00\x6d\x00\x00\x00\x6e\x00\x8f\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x28\x00\x00\x00\x6f\x00\x00\x00\x2c\x00\x2d\x00\x46\xff\x00\x00\x46\xff\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x78\x03\xf9\x00\x00\x00\x79\x03\x6d\x00\xd2\x00\x6e\x00\xd3\x00\xd4\x00\x00\x00\xd5\x00\xd6\x00\x00\x00\x6d\x00\x6f\x00\x6e\x00\x00\x00\x00\x00\x46\xff\x00\x00\xd7\x00\xd8\x00\xd9\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x03\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x5c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xb0\x00\x28\x00\x56\x00\x00\x00\x7a\x03\x2c\x00\x2d\x00\x00\x00\x28\x00\x70\x00\x00\x00\x56\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\xc4\x00\x5c\x00\x6d\x00\xc5\x00\x6e\x00\x70\x01\x00\x00\xc7\x00\x28\x00\x6d\x00\x5c\x00\x6e\x00\x6f\x00\x7a\x03\xc8\x00\xc9\x00\xca\x00\x00\x00\xcb\x00\x6f\x00\xcc\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x03\x07\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x56\x00\x2c\x00\x2d\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x06\x03\x5c\x00\x6e\x00\x00\x00\x56\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\x6f\x00\x56\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x5c\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x07\x03\x00\x00\x5c\x00\x56\x00\x00\x00\xd3\x00\xd4\x00\x08\x03\xd5\x00\xc1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x75\x03\x00\x00\x00\x00\x00\x00\xd7\x00\xd8\x00\xd9\x00\x00\x00\x5c\x00\x00\x00\xd3\x00\xd4\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xd7\x00\xd8\x00\xd9\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x56\x00\x56\x01\xcf\x00\xd0\x00\xd1\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xca\x02\x39\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\xa1\x01\x3b\x00\x58\x01\x59\x01\x08\x03\xd5\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x5a\x01\x5b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x56\x01\xcf\x00\xd0\x00\xd1\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xa0\x01\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\xa1\x01\x3b\x00\x58\x01\x59\x01\x00\x00\xd5\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x5a\x01\x5b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x65\x01\xcf\x00\xd0\x00\xd1\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x66\x01\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\xe5\x00\x3b\x00\x58\x01\x67\x01\x00\x00\xd5\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x68\x01\x69\x01\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x56\x01\xcf\x00\xd0\x00\xd1\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x57\x01\x00\x00\x3b\x00\x58\x01\x59\x01\x00\x00\xd5\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x5a\x01\x5b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x56\x01\xcf\x00\xd0\x00\xd1\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x58\x01\x59\x01\x00\x00\xd5\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x5a\x01\x5b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x56\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\xdc\x02\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\xa2\x00\x34\x04\x56\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x59\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x35\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x56\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\xe2\x01\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x03\xe3\x01\x00\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x0c\x03\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x56\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x5e\x03\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x2b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x03\x00\x00\x00\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x56\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x28\x00\x4b\x00\x4c\x00\x5c\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x56\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x23\xff\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x5e\x03\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x03\x00\x00\x00\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x23\xff\x23\xff\x23\xff\x23\xff\x23\xff\x23\xff\x23\xff\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\xff\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x23\xff\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x81\x00\x82\x00\x83\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xa6\x02\x29\x00\x2a\x00\x2b\x00\xa7\x02\x2d\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x01\xa8\x02\xa9\x02\xaa\x02\xab\x02\xac\x02\xad\x02\xae\x02\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\xaf\x02\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\xb0\x02\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x28\x00\x47\x00\x48\x00\x49\x00\x2c\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\xae\x01\x00\x00\x3d\x00\x28\x00\x00\x00\x02\x01\x00\x00\x2c\x00\x2d\x00\x00\x00\x56\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x6d\x00\x4a\x00\x6e\x00\x4b\x00\x4c\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x3d\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x40\x00\x00\x00\x56\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xb7\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x0f\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x10\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x6d\x00\xec\x00\x6e\x00\x2c\x00\x2d\x00\x00\x00\xf5\x00\xcf\x00\x00\x00\xd1\x00\x6f\x00\x00\x00\xe5\x00\x00\x00\x00\x00\xd4\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\xed\x00\x00\x00\x00\x00\x00\x00\xd7\x00\xd8\x00\xd9\x00\x6f\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\xf8\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x56\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x28\x00\x00\x00\x5c\x00\x56\x00\x2c\x00\x2d\x00\x00\x00\xf5\x00\xcf\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x5c\x00\x6e\x00\x6f\x00\x00\x00\xe5\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x6f\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\xd3\x00\xd4\x00\x00\x00\xd5\x00\xd6\x00\xcc\xfe\x00\x00\xcc\xfe\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\xd7\x00\xd8\x00\xd9\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\xb0\x00\x70\x00\x28\x00\x56\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x92\x01\x28\x00\x56\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x6d\x00\x83\x03\x6e\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x6d\x00\x00\x00\x6e\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x5c\x00\x00\x00\x70\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x28\x00\x5c\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x5c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x6f\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x28\x00\x5c\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x28\x00\x6e\x00\x6f\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x90\x02\x00\x00\x5c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xb0\x00\x28\x00\x70\x00\x00\x00\x56\x00\x2c\x00\x2d\x00\x00\x00\x28\x00\x00\x00\x00\x00\x56\x00\x2c\x00\x2d\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x6d\x00\x5c\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x5c\x00\x6e\x00\x6f\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x90\x02\x00\x00\x2c\x00\x2d\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x3e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5c\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x5c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x01\x00\x00\x3a\x01\x6f\x00\x56\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\x3b\x01\x00\x00\x00\x00\x00\x00\x47\x03\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\xec\x00\x2c\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\xe5\x00\x2c\x00\x00\x00\xd4\x00\x00\x00\xd5\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00\xd7\x00\xd8\x00\xd9\x00\xa2\x00\xdb\x03\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xdc\x03\x28\x00\x00\x00\x00\x00\x56\x00\x2c\x00\x00\x00\x00\x00\x28\x00\x29\x00\x00\x00\x56\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x01\x5c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x56\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x5c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x56\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x46\x03\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\xb0\x00\x28\x00\x29\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\xb4\x03\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x5c\x00\x00\x00\x2c\x00\x00\x00\x56\x00\x28\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x28\x00\x00\x00\x5c\x00\x00\x00\x2c\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x56\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x56\x00\x6b\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x19\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x02\xb8\x02\xb9\x02\xba\x02\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x00\xd4\x00\x00\x00\xd5\x00\x72\x01\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\xd7\x00\xd8\x00\xd9\x00\x73\x01\x74\x01\x75\x01\x76\x01\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x6b\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x03\xb9\x02\xba\x02\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x6b\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x03\xba\x02\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x6b\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x03\x6d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xea\x02\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x6b\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x02\x6d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x94\x02\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x6b\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x02\x6d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xc6\x01\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\xc9\x01\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x6b\x02\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x1c\x04\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xf9\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xf3\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x95\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x96\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x97\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xc5\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x53\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x67\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x68\x03\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xda\x02\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x70\x02\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x93\x01\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x42\x01\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x43\x01\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x91\x00\x92\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x5d\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x5e\x01\x5f\x01\x00\x00\x00\x00\x60\x01\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x00\x00\x00\x00\x51\x01\x61\x01\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc8\x00\xc9\x00\x62\x01\x52\x01\xcb\x00\x53\x01\x63\x01\x26\x00\x4b\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x4c\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x4e\x01\x00\x00\xbe\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x00\x00\x00\x00\x51\x01\xc7\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc8\x00\xc9\x00\x00\x00\x52\x01\x00\x00\x53\x01\x54\x01\x26\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x00\x00\x00\x00\x51\x01\xc7\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc8\x00\xc9\x00\x00\x00\x52\x01\x00\x00\x53\x01\x54\x01\x26\x00\x4b\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x00\x00\x00\x00\x51\x01\xc7\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc8\x00\xc9\x00\x00\x00\x52\x01\x00\x00\x53\x01\x54\x01\x26\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x00\x00\x00\x00\x51\x01\xc7\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc8\x00\xc9\x00\x00\x00\x52\x01\x00\x00\x53\x01\x54\x01\x26\x00\x4b\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x4f\x01\x00\x00\x50\x01\x00\x00\x00\x00\x51\x01\xc7\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xc8\x00\xc9\x00\x00\x00\x52\x01\x00\x00\x53\x01\x54\x01\x26\x00\x8f\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x89\x03\x8a\x03\x00\x00\x19\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x9e\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x9f\x02\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x02\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x44\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x1d\x04\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x86\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x94\x03\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xd6\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x91\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x92\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x98\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x99\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x9a\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xb5\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xb6\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xbd\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\xc3\x02\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x87\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x88\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x89\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x8a\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x04\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x06\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x08\x01\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x2b\x03\x10\x00\x41\x01\x12\x00\x13\x00\x14\x00\x15\x00\x26\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x01\x10\x00\x41\x01\x12\x00\x13\x00\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x40\x01\x10\x00\x41\x01\x12\x00\x13\x00\x14\x00\x15\x00\x26\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x01\x8d\x01\x14\x00\x15\x00\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x15\x00\x00\x00\x26\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x01\x00\x00\x00\x00\x16\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x49\x01\x4a\x01\x00\x01\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x00\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\x00\x00\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\xa2\x02\x0a\x01\x0b\x01\x00\x00\xa3\x02\x32\x03\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xa1\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x19\x00\x00\x00\x00\x00\xa2\x02\x0a\x01\x0b\x01\x00\x00\xa3\x02\xa4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x03\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x38\x02\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x94\x01\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x95\x01\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x6f\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\xc4\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x21\x02\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x25\x02\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\xc2\x00\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x46\x01\x17\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x48\x01\x17\x00\x18\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x19\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x6f\x01\x17\x00\x18\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x26\x00\x1d\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyReduceArr = array (8, 598) [- (8 , happyReduce_8),- (9 , happyReduce_9),- (10 , happyReduce_10),- (11 , happyReduce_11),- (12 , happyReduce_12),- (13 , happyReduce_13),- (14 , happyReduce_14),- (15 , happyReduce_15),- (16 , happyReduce_16),- (17 , happyReduce_17),- (18 , happyReduce_18),- (19 , happyReduce_19),- (20 , happyReduce_20),- (21 , happyReduce_21),- (22 , happyReduce_22),- (23 , happyReduce_23),- (24 , happyReduce_24),- (25 , happyReduce_25),- (26 , happyReduce_26),- (27 , happyReduce_27),- (28 , happyReduce_28),- (29 , happyReduce_29),- (30 , happyReduce_30),- (31 , happyReduce_31),- (32 , happyReduce_32),- (33 , happyReduce_33),- (34 , happyReduce_34),- (35 , happyReduce_35),- (36 , happyReduce_36),- (37 , happyReduce_37),- (38 , happyReduce_38),- (39 , happyReduce_39),- (40 , happyReduce_40),- (41 , happyReduce_41),- (42 , happyReduce_42),- (43 , happyReduce_43),- (44 , happyReduce_44),- (45 , happyReduce_45),- (46 , happyReduce_46),- (47 , happyReduce_47),- (48 , happyReduce_48),- (49 , happyReduce_49),- (50 , happyReduce_50),- (51 , happyReduce_51),- (52 , happyReduce_52),- (53 , happyReduce_53),- (54 , happyReduce_54),- (55 , happyReduce_55),- (56 , happyReduce_56),- (57 , happyReduce_57),- (58 , happyReduce_58),- (59 , happyReduce_59),- (60 , happyReduce_60),- (61 , happyReduce_61),- (62 , happyReduce_62),- (63 , happyReduce_63),- (64 , happyReduce_64),- (65 , happyReduce_65),- (66 , happyReduce_66),- (67 , happyReduce_67),- (68 , happyReduce_68),- (69 , happyReduce_69),- (70 , happyReduce_70),- (71 , happyReduce_71),- (72 , happyReduce_72),- (73 , happyReduce_73),- (74 , happyReduce_74),- (75 , happyReduce_75),- (76 , happyReduce_76),- (77 , happyReduce_77),- (78 , happyReduce_78),- (79 , happyReduce_79),- (80 , happyReduce_80),- (81 , happyReduce_81),- (82 , happyReduce_82),- (83 , happyReduce_83),- (84 , happyReduce_84),- (85 , happyReduce_85),- (86 , happyReduce_86),- (87 , happyReduce_87),- (88 , happyReduce_88),- (89 , happyReduce_89),- (90 , happyReduce_90),- (91 , happyReduce_91),- (92 , happyReduce_92),- (93 , happyReduce_93),- (94 , happyReduce_94),- (95 , happyReduce_95),- (96 , happyReduce_96),- (97 , happyReduce_97),- (98 , happyReduce_98),- (99 , happyReduce_99),- (100 , happyReduce_100),- (101 , happyReduce_101),- (102 , happyReduce_102),- (103 , happyReduce_103),- (104 , happyReduce_104),- (105 , happyReduce_105),- (106 , happyReduce_106),- (107 , happyReduce_107),- (108 , happyReduce_108),- (109 , happyReduce_109),- (110 , happyReduce_110),- (111 , happyReduce_111),- (112 , happyReduce_112),- (113 , happyReduce_113),- (114 , happyReduce_114),- (115 , happyReduce_115),- (116 , happyReduce_116),- (117 , happyReduce_117),- (118 , happyReduce_118),- (119 , happyReduce_119),- (120 , happyReduce_120),- (121 , happyReduce_121),- (122 , happyReduce_122),- (123 , happyReduce_123),- (124 , happyReduce_124),- (125 , happyReduce_125),- (126 , happyReduce_126),- (127 , happyReduce_127),- (128 , happyReduce_128),- (129 , happyReduce_129),- (130 , happyReduce_130),- (131 , happyReduce_131),- (132 , happyReduce_132),- (133 , happyReduce_133),- (134 , happyReduce_134),- (135 , happyReduce_135),- (136 , happyReduce_136),- (137 , happyReduce_137),- (138 , happyReduce_138),- (139 , happyReduce_139),- (140 , happyReduce_140),- (141 , happyReduce_141),- (142 , happyReduce_142),- (143 , happyReduce_143),- (144 , happyReduce_144),- (145 , happyReduce_145),- (146 , happyReduce_146),- (147 , happyReduce_147),- (148 , happyReduce_148),- (149 , happyReduce_149),- (150 , happyReduce_150),- (151 , happyReduce_151),- (152 , happyReduce_152),- (153 , happyReduce_153),- (154 , happyReduce_154),- (155 , happyReduce_155),- (156 , happyReduce_156),- (157 , happyReduce_157),- (158 , happyReduce_158),- (159 , happyReduce_159),- (160 , happyReduce_160),- (161 , happyReduce_161),- (162 , happyReduce_162),- (163 , happyReduce_163),- (164 , happyReduce_164),- (165 , happyReduce_165),- (166 , happyReduce_166),- (167 , happyReduce_167),- (168 , happyReduce_168),- (169 , happyReduce_169),- (170 , happyReduce_170),- (171 , happyReduce_171),- (172 , happyReduce_172),- (173 , happyReduce_173),- (174 , happyReduce_174),- (175 , happyReduce_175),- (176 , happyReduce_176),- (177 , happyReduce_177),- (178 , happyReduce_178),- (179 , happyReduce_179),- (180 , happyReduce_180),- (181 , happyReduce_181),- (182 , happyReduce_182),- (183 , happyReduce_183),- (184 , happyReduce_184),- (185 , happyReduce_185),- (186 , happyReduce_186),- (187 , happyReduce_187),- (188 , happyReduce_188),- (189 , happyReduce_189),- (190 , happyReduce_190),- (191 , happyReduce_191),- (192 , happyReduce_192),- (193 , happyReduce_193),- (194 , happyReduce_194),- (195 , happyReduce_195),- (196 , happyReduce_196),- (197 , happyReduce_197),- (198 , happyReduce_198),- (199 , happyReduce_199),- (200 , happyReduce_200),- (201 , happyReduce_201),- (202 , happyReduce_202),- (203 , happyReduce_203),- (204 , happyReduce_204),- (205 , happyReduce_205),- (206 , happyReduce_206),- (207 , happyReduce_207),- (208 , happyReduce_208),- (209 , happyReduce_209),- (210 , happyReduce_210),- (211 , happyReduce_211),- (212 , happyReduce_212),- (213 , happyReduce_213),- (214 , happyReduce_214),- (215 , happyReduce_215),- (216 , happyReduce_216),- (217 , happyReduce_217),- (218 , happyReduce_218),- (219 , happyReduce_219),- (220 , happyReduce_220),- (221 , happyReduce_221),- (222 , happyReduce_222),- (223 , happyReduce_223),- (224 , happyReduce_224),- (225 , happyReduce_225),- (226 , happyReduce_226),- (227 , happyReduce_227),- (228 , happyReduce_228),- (229 , happyReduce_229),- (230 , happyReduce_230),- (231 , happyReduce_231),- (232 , happyReduce_232),- (233 , happyReduce_233),- (234 , happyReduce_234),- (235 , happyReduce_235),- (236 , happyReduce_236),- (237 , happyReduce_237),- (238 , happyReduce_238),- (239 , happyReduce_239),- (240 , happyReduce_240),- (241 , happyReduce_241),- (242 , happyReduce_242),- (243 , happyReduce_243),- (244 , happyReduce_244),- (245 , happyReduce_245),- (246 , happyReduce_246),- (247 , happyReduce_247),- (248 , happyReduce_248),- (249 , happyReduce_249),- (250 , happyReduce_250),- (251 , happyReduce_251),- (252 , happyReduce_252),- (253 , happyReduce_253),- (254 , happyReduce_254),- (255 , happyReduce_255),- (256 , happyReduce_256),- (257 , happyReduce_257),- (258 , happyReduce_258),- (259 , happyReduce_259),- (260 , happyReduce_260),- (261 , happyReduce_261),- (262 , happyReduce_262),- (263 , happyReduce_263),- (264 , happyReduce_264),- (265 , happyReduce_265),- (266 , happyReduce_266),- (267 , happyReduce_267),- (268 , happyReduce_268),- (269 , happyReduce_269),- (270 , happyReduce_270),- (271 , happyReduce_271),- (272 , happyReduce_272),- (273 , happyReduce_273),- (274 , happyReduce_274),- (275 , happyReduce_275),- (276 , happyReduce_276),- (277 , happyReduce_277),- (278 , happyReduce_278),- (279 , happyReduce_279),- (280 , happyReduce_280),- (281 , happyReduce_281),- (282 , happyReduce_282),- (283 , happyReduce_283),- (284 , happyReduce_284),- (285 , happyReduce_285),- (286 , happyReduce_286),- (287 , happyReduce_287),- (288 , happyReduce_288),- (289 , happyReduce_289),- (290 , happyReduce_290),- (291 , happyReduce_291),- (292 , happyReduce_292),- (293 , happyReduce_293),- (294 , happyReduce_294),- (295 , happyReduce_295),- (296 , happyReduce_296),- (297 , happyReduce_297),- (298 , happyReduce_298),- (299 , happyReduce_299),- (300 , happyReduce_300),- (301 , happyReduce_301),- (302 , happyReduce_302),- (303 , happyReduce_303),- (304 , happyReduce_304),- (305 , happyReduce_305),- (306 , happyReduce_306),- (307 , happyReduce_307),- (308 , happyReduce_308),- (309 , happyReduce_309),- (310 , happyReduce_310),- (311 , happyReduce_311),- (312 , happyReduce_312),- (313 , happyReduce_313),- (314 , happyReduce_314),- (315 , happyReduce_315),- (316 , happyReduce_316),- (317 , happyReduce_317),- (318 , happyReduce_318),- (319 , happyReduce_319),- (320 , happyReduce_320),- (321 , happyReduce_321),- (322 , happyReduce_322),- (323 , happyReduce_323),- (324 , happyReduce_324),- (325 , happyReduce_325),- (326 , happyReduce_326),- (327 , happyReduce_327),- (328 , happyReduce_328),- (329 , happyReduce_329),- (330 , happyReduce_330),- (331 , happyReduce_331),- (332 , happyReduce_332),- (333 , happyReduce_333),- (334 , happyReduce_334),- (335 , happyReduce_335),- (336 , happyReduce_336),- (337 , happyReduce_337),- (338 , happyReduce_338),- (339 , happyReduce_339),- (340 , happyReduce_340),- (341 , happyReduce_341),- (342 , happyReduce_342),- (343 , happyReduce_343),- (344 , happyReduce_344),- (345 , happyReduce_345),- (346 , happyReduce_346),- (347 , happyReduce_347),- (348 , happyReduce_348),- (349 , happyReduce_349),- (350 , happyReduce_350),- (351 , happyReduce_351),- (352 , happyReduce_352),- (353 , happyReduce_353),- (354 , happyReduce_354),- (355 , happyReduce_355),- (356 , happyReduce_356),- (357 , happyReduce_357),- (358 , happyReduce_358),- (359 , happyReduce_359),- (360 , happyReduce_360),- (361 , happyReduce_361),- (362 , happyReduce_362),- (363 , happyReduce_363),- (364 , happyReduce_364),- (365 , happyReduce_365),- (366 , happyReduce_366),- (367 , happyReduce_367),- (368 , happyReduce_368),- (369 , happyReduce_369),- (370 , happyReduce_370),- (371 , happyReduce_371),- (372 , happyReduce_372),- (373 , happyReduce_373),- (374 , happyReduce_374),- (375 , happyReduce_375),- (376 , happyReduce_376),- (377 , happyReduce_377),- (378 , happyReduce_378),- (379 , happyReduce_379),- (380 , happyReduce_380),- (381 , happyReduce_381),- (382 , happyReduce_382),- (383 , happyReduce_383),- (384 , happyReduce_384),- (385 , happyReduce_385),- (386 , happyReduce_386),- (387 , happyReduce_387),- (388 , happyReduce_388),- (389 , happyReduce_389),- (390 , happyReduce_390),- (391 , happyReduce_391),- (392 , happyReduce_392),- (393 , happyReduce_393),- (394 , happyReduce_394),- (395 , happyReduce_395),- (396 , happyReduce_396),- (397 , happyReduce_397),- (398 , happyReduce_398),- (399 , happyReduce_399),- (400 , happyReduce_400),- (401 , happyReduce_401),- (402 , happyReduce_402),- (403 , happyReduce_403),- (404 , happyReduce_404),- (405 , happyReduce_405),- (406 , happyReduce_406),- (407 , happyReduce_407),- (408 , happyReduce_408),- (409 , happyReduce_409),- (410 , happyReduce_410),- (411 , happyReduce_411),- (412 , happyReduce_412),- (413 , happyReduce_413),- (414 , happyReduce_414),- (415 , happyReduce_415),- (416 , happyReduce_416),- (417 , happyReduce_417),- (418 , happyReduce_418),- (419 , happyReduce_419),- (420 , happyReduce_420),- (421 , happyReduce_421),- (422 , happyReduce_422),- (423 , happyReduce_423),- (424 , happyReduce_424),- (425 , happyReduce_425),- (426 , happyReduce_426),- (427 , happyReduce_427),- (428 , happyReduce_428),- (429 , happyReduce_429),- (430 , happyReduce_430),- (431 , happyReduce_431),- (432 , happyReduce_432),- (433 , happyReduce_433),- (434 , happyReduce_434),- (435 , happyReduce_435),- (436 , happyReduce_436),- (437 , happyReduce_437),- (438 , happyReduce_438),- (439 , happyReduce_439),- (440 , happyReduce_440),- (441 , happyReduce_441),- (442 , happyReduce_442),- (443 , happyReduce_443),- (444 , happyReduce_444),- (445 , happyReduce_445),- (446 , happyReduce_446),- (447 , happyReduce_447),- (448 , happyReduce_448),- (449 , happyReduce_449),- (450 , happyReduce_450),- (451 , happyReduce_451),- (452 , happyReduce_452),- (453 , happyReduce_453),- (454 , happyReduce_454),- (455 , happyReduce_455),- (456 , happyReduce_456),- (457 , happyReduce_457),- (458 , happyReduce_458),- (459 , happyReduce_459),- (460 , happyReduce_460),- (461 , happyReduce_461),- (462 , happyReduce_462),- (463 , happyReduce_463),- (464 , happyReduce_464),- (465 , happyReduce_465),- (466 , happyReduce_466),- (467 , happyReduce_467),- (468 , happyReduce_468),- (469 , happyReduce_469),- (470 , happyReduce_470),- (471 , happyReduce_471),- (472 , happyReduce_472),- (473 , happyReduce_473),- (474 , happyReduce_474),- (475 , happyReduce_475),- (476 , happyReduce_476),- (477 , happyReduce_477),- (478 , happyReduce_478),- (479 , happyReduce_479),- (480 , happyReduce_480),- (481 , happyReduce_481),- (482 , happyReduce_482),- (483 , happyReduce_483),- (484 , happyReduce_484),- (485 , happyReduce_485),- (486 , happyReduce_486),- (487 , happyReduce_487),- (488 , happyReduce_488),- (489 , happyReduce_489),- (490 , happyReduce_490),- (491 , happyReduce_491),- (492 , happyReduce_492),- (493 , happyReduce_493),- (494 , happyReduce_494),- (495 , happyReduce_495),- (496 , happyReduce_496),- (497 , happyReduce_497),- (498 , happyReduce_498),- (499 , happyReduce_499),- (500 , happyReduce_500),- (501 , happyReduce_501),- (502 , happyReduce_502),- (503 , happyReduce_503),- (504 , happyReduce_504),- (505 , happyReduce_505),- (506 , happyReduce_506),- (507 , happyReduce_507),- (508 , happyReduce_508),- (509 , happyReduce_509),- (510 , happyReduce_510),- (511 , happyReduce_511),- (512 , happyReduce_512),- (513 , happyReduce_513),- (514 , happyReduce_514),- (515 , happyReduce_515),- (516 , happyReduce_516),- (517 , happyReduce_517),- (518 , happyReduce_518),- (519 , happyReduce_519),- (520 , happyReduce_520),- (521 , happyReduce_521),- (522 , happyReduce_522),- (523 , happyReduce_523),- (524 , happyReduce_524),- (525 , happyReduce_525),- (526 , happyReduce_526),- (527 , happyReduce_527),- (528 , happyReduce_528),- (529 , happyReduce_529),- (530 , happyReduce_530),- (531 , happyReduce_531),- (532 , happyReduce_532),- (533 , happyReduce_533),- (534 , happyReduce_534),- (535 , happyReduce_535),- (536 , happyReduce_536),- (537 , happyReduce_537),- (538 , happyReduce_538),- (539 , happyReduce_539),- (540 , happyReduce_540),- (541 , happyReduce_541),- (542 , happyReduce_542),- (543 , happyReduce_543),- (544 , happyReduce_544),- (545 , happyReduce_545),- (546 , happyReduce_546),- (547 , happyReduce_547),- (548 , happyReduce_548),- (549 , happyReduce_549),- (550 , happyReduce_550),- (551 , happyReduce_551),- (552 , happyReduce_552),- (553 , happyReduce_553),- (554 , happyReduce_554),- (555 , happyReduce_555),- (556 , happyReduce_556),- (557 , happyReduce_557),- (558 , happyReduce_558),- (559 , happyReduce_559),- (560 , happyReduce_560),- (561 , happyReduce_561),- (562 , happyReduce_562),- (563 , happyReduce_563),- (564 , happyReduce_564),- (565 , happyReduce_565),- (566 , happyReduce_566),- (567 , happyReduce_567),- (568 , happyReduce_568),- (569 , happyReduce_569),- (570 , happyReduce_570),- (571 , happyReduce_571),- (572 , happyReduce_572),- (573 , happyReduce_573),- (574 , happyReduce_574),- (575 , happyReduce_575),- (576 , happyReduce_576),- (577 , happyReduce_577),- (578 , happyReduce_578),- (579 , happyReduce_579),- (580 , happyReduce_580),- (581 , happyReduce_581),- (582 , happyReduce_582),- (583 , happyReduce_583),- (584 , happyReduce_584),- (585 , happyReduce_585),- (586 , happyReduce_586),- (587 , happyReduce_587),- (588 , happyReduce_588),- (589 , happyReduce_589),- (590 , happyReduce_590),- (591 , happyReduce_591),- (592 , happyReduce_592),- (593 , happyReduce_593),- (594 , happyReduce_594),- (595 , happyReduce_595),- (596 , happyReduce_596),- (597 , happyReduce_597),- (598 , happyReduce_598)- ]--happy_n_terms = 135 :: Int-happy_n_nonterms = 219 :: Int--happyReduce_8 = happySpecReduce_2 0# happyReduction_8-happyReduction_8 happy_x_2- happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn11- (let (os,ss,l) = happy_var_1 in map (\x -> x os ss l) happy_var_2- )}}--happyReduce_9 = happySpecReduce_2 1# happyReduction_9-happyReduction_9 happy_x_2- happy_x_1- = case happyOut19 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn12- (happy_var_1 : happy_var_2- )}}--happyReduce_10 = happySpecReduce_1 1# happyReduction_10-happyReduction_10 happy_x_1- = case happyOut19 happy_x_1 of { happy_var_1 -> - happyIn12- ([happy_var_1]- )}--happyReduce_11 = happyMonadReduce 2# 2# happyReduction_11-happyReduction_11 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut14 happy_x_2 of { happy_var_2 -> - ( checkPageModule happy_var_2 happy_var_1)}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_12 = happyMonadReduce 5# 2# happyReduction_12-happyReduction_12 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 XCodeTagOpen) -> - case happyOut19 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 XCodeTagClose) -> - case happyOut14 happy_x_5 of { happy_var_5 -> - ( let (os,ss,l) = happy_var_1 in checkHybridModule happy_var_5 (happy_var_3 os ss l) happy_var_2 happy_var_4)}}}}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_13 = happySpecReduce_2 2# happyReduction_13-happyReduction_13 happy_x_2- happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn13- (let (os,ss,l) = happy_var_1 in happy_var_2 os ss l- )}}--happyReduce_14 = happyMonadReduce 9# 3# happyReduction_14-happyReduction_14 (happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> - case happyOut159 happy_x_6 of { happy_var_6 -> - case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> - case happyOut161 happy_x_8 of { happy_var_8 -> - case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> - ( do { n <- checkEqNames happy_var_2 happy_var_8;- let { cn = reverse happy_var_6;- as = reverse happy_var_3; };- return $ XTag (happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,happy_var_9]) n as happy_var_4 cn })}}}}}}}}}- ) (\r -> happyReturn (happyIn14 r))--happyReduce_15 = happyReduce 5# 3# happyReduction_15-happyReduction_15 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> - happyIn14- (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4- ) `HappyStk` happyRest}}}}}--happyReduce_16 = happySpecReduce_3 4# happyReduction_16-happyReduction_16 happy_x_3- happy_x_2- happy_x_1- = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut16 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn15- (let (os,ss,ml) = happy_var_2 in (os,happy_var_1:ss++[happy_var_3],happy_var_1 <^^> happy_var_3)- )}}}--happyReduce_17 = happySpecReduce_3 5# happyReduction_17-happyReduction_17 happy_x_3- happy_x_2- happy_x_1- = case happyOut17 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - case happyOut16 happy_x_3 of { happy_var_3 -> - happyIn16- (let (os,ss,ml) = happy_var_3 in (happy_var_1 : os, happy_var_2 : ss, Just $ ann happy_var_1 <++> nIS happy_var_2 <+?> ml)- )}}}--happyReduce_18 = happySpecReduce_0 5# happyReduction_18-happyReduction_18 = happyIn16- (([],[],Nothing)- )--happyReduce_19 = happyReduce 4# 6# happyReduction_19-happyReduction_19 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LANGUAGE) -> - case happyOut18 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn17- (LanguagePragma (happy_var_1 <^^> happy_var_4 <** (happy_var_1:snd happy_var_2 ++ reverse happy_var_3 ++ [happy_var_4])) (fst happy_var_2)- ) `HappyStk` happyRest}}}}--happyReduce_20 = happySpecReduce_3 6# happyReduction_20-happyReduction_20 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn17- (let Loc l (OPTIONS (mc, s)) = happy_var_1- in OptionsPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) (readTool mc) s- )}}}--happyReduce_21 = happySpecReduce_3 6# happyReduction_21-happyReduction_21 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> - case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn17- (AnnModulePragma (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2- )}}}--happyReduce_22 = happySpecReduce_3 7# happyReduction_22-happyReduction_22 happy_x_3- happy_x_2- happy_x_1- = case happyOut213 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut18 happy_x_3 of { happy_var_3 -> - happyIn18- ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)- )}}}--happyReduce_23 = happySpecReduce_1 7# happyReduction_23-happyReduction_23 happy_x_1- = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn18- (([happy_var_1],[])- )}--happyReduce_24 = happySpecReduce_2 8# happyReduction_24-happyReduction_24 happy_x_2- happy_x_1- = case happyOut20 happy_x_1 of { happy_var_1 -> - case happyOut22 happy_x_2 of { happy_var_2 -> - happyIn19- (let (is,ds,ss1,inf) = happy_var_2- in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) happy_var_1 os is ds- )}}--happyReduce_25 = happyReduce 5# 9# happyReduction_25-happyReduction_25 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut224 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - case happyOut26 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Where) -> - happyIn20- (Just $ ModuleHead (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 happy_var_3 happy_var_4- ) `HappyStk` happyRest}}}}}--happyReduce_26 = happySpecReduce_0 9# happyReduction_26-happyReduction_26 = happyIn20- (Nothing- )--happyReduce_27 = happySpecReduce_3 10# happyReduction_27-happyReduction_27 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn21- (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ DeprText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s- )}}}--happyReduce_28 = happySpecReduce_3 10# happyReduction_28-happyReduction_28 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn21- (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ WarnText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s- )}}}--happyReduce_29 = happySpecReduce_0 10# happyReduction_29-happyReduction_29 = happyIn21- (Nothing- )--happyReduce_30 = happySpecReduce_3 11# happyReduction_30-happyReduction_30 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut23 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn22- (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3)- )}}}--happyReduce_31 = happySpecReduce_3 11# happyReduction_31-happyReduction_31 happy_x_3- happy_x_2- happy_x_1- = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut23 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn22- (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3)- )}}}--happyReduce_32 = happyReduce 4# 12# happyReduction_32-happyReduction_32 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_3 of { happy_var_3 -> - case happyOut48 happy_x_4 of { happy_var_4 -> - happyIn23- ((reverse (fst happy_var_2), fst happy_var_4, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3 ++ snd happy_var_4)- ) `HappyStk` happyRest}}}}--happyReduce_33 = happySpecReduce_2 12# happyReduction_33-happyReduction_33 happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn23- (([], fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2)- )}}--happyReduce_34 = happySpecReduce_3 12# happyReduction_34-happyReduction_34 happy_x_3- happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn23- ((reverse (fst happy_var_2), [], reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)- )}}}--happyReduce_35 = happySpecReduce_1 12# happyReduction_35-happyReduction_35 happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn23- (([], [], reverse happy_var_1)- )}--happyReduce_36 = happySpecReduce_2 13# happyReduction_36-happyReduction_36 happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - happyIn24- (happy_var_2 : happy_var_1- )}}--happyReduce_37 = happySpecReduce_1 14# happyReduction_37-happyReduction_37 happy_x_1- = case happyOut24 happy_x_1 of { happy_var_1 -> - happyIn25- (happy_var_1- )}--happyReduce_38 = happySpecReduce_0 14# happyReduction_38-happyReduction_38 = happyIn25- ([]- )--happyReduce_39 = happySpecReduce_1 15# happyReduction_39-happyReduction_39 happy_x_1- = case happyOut27 happy_x_1 of { happy_var_1 -> - happyIn26- (Just happy_var_1- )}--happyReduce_40 = happySpecReduce_0 15# happyReduction_40-happyReduction_40 = happyIn26- (Nothing- )--happyReduce_41 = happyReduce 4# 16# happyReduction_41-happyReduction_41 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut29 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn27- (ExportSpecList (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse (snd happy_var_2) ++ happy_var_3 ++ [happy_var_4])) (reverse (fst happy_var_2))- ) `HappyStk` happyRest}}}}--happyReduce_42 = happySpecReduce_3 16# happyReduction_42-happyReduction_42 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut28 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn27- (ExportSpecList (happy_var_1 <^^> happy_var_3 <** (happy_var_1:happy_var_2++[happy_var_3])) []- )}}}--happyReduce_43 = happySpecReduce_1 17# happyReduction_43-happyReduction_43 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> - happyIn28- ([happy_var_1]- )}--happyReduce_44 = happySpecReduce_0 17# happyReduction_44-happyReduction_44 = happyIn28- ([ ]- )--happyReduce_45 = happySpecReduce_3 18# happyReduction_45-happyReduction_45 happy_x_3- happy_x_2- happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn29- ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)- )}}}--happyReduce_46 = happySpecReduce_1 18# happyReduction_46-happyReduction_46 happy_x_1- = case happyOut30 happy_x_1 of { happy_var_1 -> - happyIn29- (([happy_var_1],[])- )}--happyReduce_47 = happySpecReduce_1 19# happyReduction_47-happyReduction_47 happy_x_1- = case happyOut195 happy_x_1 of { happy_var_1 -> - happyIn30- (EVar (ann happy_var_1) happy_var_1- )}--happyReduce_48 = happySpecReduce_1 19# happyReduction_48-happyReduction_48 happy_x_1- = case happyOut226 happy_x_1 of { happy_var_1 -> - happyIn30- (EAbs (ann happy_var_1) happy_var_1- )}--happyReduce_49 = happyReduce 4# 19# happyReduction_49-happyReduction_49 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut226 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn30- (EThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1- ) `HappyStk` happyRest}}}}--happyReduce_50 = happySpecReduce_3 19# happyReduction_50-happyReduction_50 happy_x_3- happy_x_2- happy_x_1- = case happyOut226 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn30- (EThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 []- )}}}--happyReduce_51 = happyReduce 4# 19# happyReduction_51-happyReduction_51 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut226 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut42 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn30- (EThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3))- ) `HappyStk` happyRest}}}}--happyReduce_52 = happySpecReduce_2 19# happyReduction_52-happyReduction_52 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut224 happy_x_2 of { happy_var_2 -> - happyIn30- (EModuleContents (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_53 = happySpecReduce_3 20# happyReduction_53-happyReduction_53 happy_x_3- happy_x_2- happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn31- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)- )}}}--happyReduce_54 = happySpecReduce_1 20# happyReduction_54-happyReduction_54 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn31- (([happy_var_1],[])- )}--happyReduce_55 = happyReduce 7# 21# happyReduction_55-happyReduction_55 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> - case happyOut33 happy_x_2 of { happy_var_2 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - case happyOut35 happy_x_4 of { happy_var_4 -> - case happyOut224 happy_x_5 of { happy_var_5 -> - case happyOut36 happy_x_6 of { happy_var_6 -> - case happyOut37 happy_x_7 of { happy_var_7 -> - happyIn32- (let { (mmn,ss,ml) = happy_var_6 ;- l = nIS happy_var_1 <++> ann happy_var_5 <+?> ml <+?> (fmap ann) happy_var_7 <** (happy_var_1:snd happy_var_2 ++ snd happy_var_3 ++ snd happy_var_4 ++ ss)}- in ImportDecl l happy_var_5 (fst happy_var_3) (fst happy_var_2) (fst happy_var_4) mmn happy_var_7- ) `HappyStk` happyRest}}}}}}}--happyReduce_56 = happySpecReduce_2 22# happyReduction_56-happyReduction_56 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 SOURCE) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - happyIn33- ((True,[happy_var_1,happy_var_2])- )}}--happyReduce_57 = happySpecReduce_0 22# happyReduction_57-happyReduction_57 = happyIn33- ((False,[])- )--happyReduce_58 = happySpecReduce_1 23# happyReduction_58-happyReduction_58 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn34- ((True,[happy_var_1])- )}--happyReduce_59 = happySpecReduce_0 23# happyReduction_59-happyReduction_59 = happyIn34- ((False, [])- )--happyReduce_60 = happyMonadReduce 1# 24# happyReduction_60-happyReduction_60 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( do { checkEnabled PackageImports ;- let { Loc l (StringTok (s,_)) = happy_var_1 } ;- return $ (Just s,[l]) })}- ) (\r -> happyReturn (happyIn35 r))--happyReduce_61 = happySpecReduce_0 24# happyReduction_61-happyReduction_61 = happyIn35- ((Nothing,[])- )--happyReduce_62 = happySpecReduce_2 25# happyReduction_62-happyReduction_62 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - case happyOut224 happy_x_2 of { happy_var_2 -> - happyIn36- ((Just happy_var_2,[happy_var_1],Just (nIS happy_var_1 <++> ann happy_var_2))- )}}--happyReduce_63 = happySpecReduce_0 25# happyReduction_63-happyReduction_63 = happyIn36- ((Nothing,[],Nothing)- )--happyReduce_64 = happySpecReduce_1 26# happyReduction_64-happyReduction_64 happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - happyIn37- (Just happy_var_1- )}--happyReduce_65 = happySpecReduce_0 26# happyReduction_65-happyReduction_65 = happyIn37- (Nothing- )--happyReduce_66 = happyReduce 5# 27# happyReduction_66-happyReduction_66 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut40 happy_x_3 of { happy_var_3 -> - case happyOut28 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn38- (let {(b,ml,s) = happy_var_1 ;- l = (ml <?+> (happy_var_2 <^^> happy_var_5)) <** (s ++ happy_var_2:reverse (snd happy_var_3) ++ happy_var_4 ++ [happy_var_5])}- in ImportSpecList l b (reverse (fst happy_var_3))- ) `HappyStk` happyRest}}}}}--happyReduce_67 = happyReduce 4# 27# happyReduction_67-happyReduction_67 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut28 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn38- (let {(b,ml,s) = happy_var_1 ; l = (ml <?+> (happy_var_2 <^^> happy_var_4)) <** (s ++ happy_var_2:happy_var_3 ++ [happy_var_4])}- in ImportSpecList l b []- ) `HappyStk` happyRest}}}}--happyReduce_68 = happySpecReduce_1 28# happyReduction_68-happyReduction_68 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn39- ((True,Just (nIS happy_var_1),[happy_var_1])- )}--happyReduce_69 = happySpecReduce_0 28# happyReduction_69-happyReduction_69 = happyIn39- ((False,Nothing,[])- )--happyReduce_70 = happySpecReduce_3 29# happyReduction_70-happyReduction_70 happy_x_3- happy_x_2- happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn40- ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)- )}}}--happyReduce_71 = happySpecReduce_1 29# happyReduction_71-happyReduction_71 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn40- (([happy_var_1],[])- )}--happyReduce_72 = happySpecReduce_1 30# happyReduction_72-happyReduction_72 happy_x_1- = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn41- (IVar (ann happy_var_1) happy_var_1- )}--happyReduce_73 = happySpecReduce_1 30# happyReduction_73-happyReduction_73 happy_x_1- = case happyOut225 happy_x_1 of { happy_var_1 -> - happyIn41- (IAbs (ann happy_var_1) happy_var_1- )}--happyReduce_74 = happyReduce 4# 30# happyReduction_74-happyReduction_74 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut225 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn41- (IThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1- ) `HappyStk` happyRest}}}}--happyReduce_75 = happySpecReduce_3 30# happyReduction_75-happyReduction_75 happy_x_3- happy_x_2- happy_x_1- = case happyOut225 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn41- (IThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 []- )}}}--happyReduce_76 = happyReduce 4# 30# happyReduction_76-happyReduction_76 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut225 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut42 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn41- (IThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3))- ) `HappyStk` happyRest}}}}--happyReduce_77 = happySpecReduce_3 31# happyReduction_77-happyReduction_77 happy_x_3- happy_x_2- happy_x_1- = case happyOut42 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn42- ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)- )}}}--happyReduce_78 = happySpecReduce_1 31# happyReduction_78-happyReduction_78 happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn42- (([happy_var_1],[])- )}--happyReduce_79 = happySpecReduce_1 32# happyReduction_79-happyReduction_79 happy_x_1- = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn43- (VarName (ann happy_var_1) happy_var_1- )}--happyReduce_80 = happySpecReduce_1 32# happyReduction_80-happyReduction_80 happy_x_1- = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn43- (ConName (ann happy_var_1) happy_var_1- )}--happyReduce_81 = happySpecReduce_3 33# happyReduction_81-happyReduction_81 happy_x_3- happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - case happyOut47 happy_x_3 of { happy_var_3 -> - happyIn44- (let (ops,ss,l) = happy_var_3- in InfixDecl (ann happy_var_1 <++> l <** (snd happy_var_2 ++ reverse ss)) happy_var_1 (fst happy_var_2) (reverse ops)- )}}}--happyReduce_82 = happySpecReduce_0 34# happyReduction_82-happyReduction_82 = happyIn45- ((Nothing, [])- )--happyReduce_83 = happyMonadReduce 1# 34# happyReduction_83-happyReduction_83 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( let Loc l (IntTok (i,_)) = happy_var_1 in checkPrec i >>= \i -> return (Just i, [l]))}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_84 = happySpecReduce_1 35# happyReduction_84-happyReduction_84 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> - happyIn46- (AssocNone $ nIS happy_var_1- )}--happyReduce_85 = happySpecReduce_1 35# happyReduction_85-happyReduction_85 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> - happyIn46- (AssocLeft $ nIS happy_var_1- )}--happyReduce_86 = happySpecReduce_1 35# happyReduction_86-happyReduction_86 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> - happyIn46- (AssocRight $ nIS happy_var_1- )}--happyReduce_87 = happySpecReduce_3 36# happyReduction_87-happyReduction_87 happy_x_3- happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut204 happy_x_3 of { happy_var_3 -> - happyIn47- (let (ops,ss,l) = happy_var_1 in (happy_var_3 : ops, happy_var_2 : ss, l <++> ann happy_var_3)- )}}}--happyReduce_88 = happySpecReduce_1 36# happyReduction_88-happyReduction_88 happy_x_1- = case happyOut204 happy_x_1 of { happy_var_1 -> - happyIn47- (([happy_var_1],[],ann happy_var_1)- )}--happyReduce_89 = happyMonadReduce 2# 37# happyReduction_89-happyReduction_89 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_2 of { happy_var_2 -> - ( checkRevDecls (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1 ++ reverse happy_var_2))}}- ) (\r -> happyReturn (happyIn48 r))--happyReduce_90 = happySpecReduce_3 38# happyReduction_90-happyReduction_90 happy_x_3- happy_x_2- happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - happyIn49- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)- )}}}--happyReduce_91 = happySpecReduce_1 38# happyReduction_91-happyReduction_91 happy_x_1- = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn49- (([happy_var_1],[])- )}--happyReduce_92 = happyMonadReduce 4# 39# happyReduction_92-happyReduction_92 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut78 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - ( do { dh <- checkSimpleType happy_var_2;- let {l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]};- return (TypeDecl l dh happy_var_4) })}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_93 = happyMonadReduce 4# 39# happyReduction_93-happyReduction_93 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> - case happyOut80 happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( do { dh <- checkSimpleType happy_var_3;- let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)};- return (TypeFamDecl l dh (fst happy_var_4)) })}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_94 = happyMonadReduce 5# 39# happyReduction_94-happyReduction_94 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut77 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Equals) -> - case happyOut88 happy_x_5 of { happy_var_5 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns- checkEnabled TypeFamilies ;- let {l = nIS happy_var_1 <++> ann happy_var_5 <** [happy_var_1,happy_var_2,happy_var_4]};- return (TypeInsDecl l happy_var_3 happy_var_5) })}}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_95 = happyMonadReduce 4# 39# happyReduction_95-happyReduction_95 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut104 happy_x_3 of { happy_var_3 -> - case happyOut116 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2;- let { (qds,ss,minf) = happy_var_3;- l = happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss};- checkDataOrNew happy_var_1 qds;- return (DataDecl l happy_var_1 cs dh (reverse qds) happy_var_4) })}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_96 = happyMonadReduce 5# 39# happyReduction_96-happyReduction_96 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut100 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_5 of { happy_var_5 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2;- let { (gs,ss,minf) = happy_var_4;- l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)};- checkDataOrNewG happy_var_1 gs;- case (gs, fst happy_var_3) of- ([], Nothing) -> return (DataDecl l happy_var_1 cs dh [] happy_var_5)- _ -> checkEnabled GADTs >> return (GDataDecl l happy_var_1 cs dh (fst happy_var_3) (reverse gs) happy_var_5) })}}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_97 = happyMonadReduce 4# 39# happyReduction_97-happyReduction_97 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkDataHeader happy_var_3;- let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)};- return (DataFamDecl l cs dh (fst happy_var_4)) })}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_98 = happyMonadReduce 5# 39# happyReduction_98-happyReduction_98 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - case happyOut104 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_5 of { happy_var_5 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4;- checkEnabled TypeFamilies ;- let { (qds,ss,minf) = happy_var_4 ;- l = happy_var_1 <> happy_var_3 <+?> minf <+?> fmap ann happy_var_5 <** happy_var_2:ss };- checkDataOrNew happy_var_1 qds;- return (DataInsDecl l happy_var_1 happy_var_3 (reverse qds) happy_var_5) })}}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_99 = happyMonadReduce 6# 39# happyReduction_99-happyReduction_99 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - case happyOut100 happy_x_5 of { happy_var_5 -> - case happyOut116 happy_x_6 of { happy_var_6 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4;- checkEnabled TypeFamilies ;- let {(gs,ss,minf) = happy_var_5;- l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_6 <** (happy_var_2:snd happy_var_4 ++ ss)};- checkDataOrNewG happy_var_1 gs;- return (GDataInsDecl l happy_var_1 happy_var_3 (fst happy_var_4) (reverse gs) happy_var_6) })}}}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_100 = happyMonadReduce 4# 39# happyReduction_100-happyReduction_100 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut97 happy_x_3 of { happy_var_3 -> - case happyOut123 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkClassHeader happy_var_2;- let {(fds,ss1,minf1) = happy_var_3;(mcs,ss2,minf2) = happy_var_4} ;- let { l = nIS happy_var_1 <++> ann happy_var_2 <+?> minf1 <+?> minf2 <** (happy_var_1:ss1 ++ ss2)} ;- return (ClassDecl l cs dh fds mcs) })}}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_101 = happyMonadReduce 3# 39# happyReduction_101-happyReduction_101 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut128 happy_x_3 of { happy_var_3 -> - ( do { (cs,ih) <- checkInstHeader happy_var_2;- let {(mis,ss,minf) = happy_var_3};- return (InstDecl (nIS happy_var_1 <++> ann happy_var_2 <+?> minf <** (happy_var_1:ss)) cs ih mis) })}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_102 = happyMonadReduce 3# 39# happyReduction_102-happyReduction_102 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled StandaloneDeriving ;- (cs, ih) <- checkInstHeader happy_var_3;- let {l = nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1,happy_var_2]};- return (DerivDecl l cs ih) })}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_103 = happyReduce 4# 39# happyReduction_103-happyReduction_103 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut52 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn50- (DefaultDecl (happy_var_1 <^^> happy_var_4 <** (happy_var_1:happy_var_2 : snd happy_var_3 ++ [happy_var_4])) (fst happy_var_3)- ) `HappyStk` happyRest}}}}--happyReduce_104 = happyMonadReduce 1# 39# happyReduction_104-happyReduction_104 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut141 happy_x_1 of { happy_var_1 -> - ( checkEnabled TemplateHaskell >> checkExpr happy_var_1 >>= \e -> return (SpliceDecl (ann e) e))}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_105 = happyReduce 5# 39# happyReduction_105-happyReduction_105 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Import) -> - case happyOut63 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - case happyOut65 happy_x_5 of { happy_var_5 -> - happyIn50- (let (s,n,t,ss) = happy_var_5 in ForImp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 happy_var_4 s n t- ) `HappyStk` happyRest}}}}}--happyReduce_106 = happyReduce 4# 39# happyReduction_106-happyReduction_106 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Export) -> - case happyOut63 happy_x_3 of { happy_var_3 -> - case happyOut65 happy_x_4 of { happy_var_4 -> - happyIn50- (let (s,n,t,ss) = happy_var_4 in ForExp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 s n t- ) `HappyStk` happyRest}}}}--happyReduce_107 = happySpecReduce_3 39# happyReduction_107-happyReduction_107 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 RULES) -> - case happyOut66 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50- (RulePragmaDecl (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ reverse happy_var_2- )}}}--happyReduce_108 = happySpecReduce_3 39# happyReduction_108-happyReduction_108 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> - case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50- (DeprPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2)- )}}}--happyReduce_109 = happySpecReduce_3 39# happyReduction_109-happyReduction_109 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> - case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50- (WarnPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2)- )}}}--happyReduce_110 = happySpecReduce_3 39# happyReduction_110-happyReduction_110 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> - case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn50- (AnnPragma (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2- )}}}--happyReduce_111 = happySpecReduce_1 39# happyReduction_111-happyReduction_111 happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn50- (happy_var_1- )}--happyReduce_112 = happySpecReduce_1 40# happyReduction_112-happyReduction_112 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - happyIn51- (DataType $ nIS happy_var_1- )}--happyReduce_113 = happySpecReduce_1 40# happyReduction_113-happyReduction_113 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> - happyIn51- (NewType $ nIS happy_var_1- )}--happyReduce_114 = happyMonadReduce 1# 41# happyReduction_114-happyReduction_114 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut91 happy_x_1 of { happy_var_1 -> - ( do { ts <- mapM checkType (fst happy_var_1);- return $ (reverse ts, reverse (snd happy_var_1)) })}- ) (\r -> happyReturn (happyIn52 r))--happyReduce_115 = happySpecReduce_1 41# happyReduction_115-happyReduction_115 happy_x_1- = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn52- (([happy_var_1],[])- )}--happyReduce_116 = happySpecReduce_0 41# happyReduction_116-happyReduction_116 = happyIn52- (([],[])- )--happyReduce_117 = happyMonadReduce 3# 42# happyReduction_117-happyReduction_117 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut54 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - ( checkRevDecls (fst happy_var_2) >>= \ds -> return (ds, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}}- ) (\r -> happyReturn (happyIn53 r))--happyReduce_118 = happySpecReduce_1 42# happyReduction_118-happyReduction_118 happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn53- (([],reverse happy_var_1)- )}--happyReduce_119 = happySpecReduce_3 43# happyReduction_119-happyReduction_119 happy_x_3- happy_x_2- happy_x_1- = case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut55 happy_x_3 of { happy_var_3 -> - happyIn54- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)- )}}}--happyReduce_120 = happySpecReduce_1 43# happyReduction_120-happyReduction_120 happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn54- (([happy_var_1],[])- )}--happyReduce_121 = happySpecReduce_1 44# happyReduction_121-happyReduction_121 happy_x_1- = case happyOut57 happy_x_1 of { happy_var_1 -> - happyIn55- (happy_var_1- )}--happyReduce_122 = happySpecReduce_1 44# happyReduction_122-happyReduction_122 happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 -> - happyIn55- (happy_var_1- )}--happyReduce_123 = happySpecReduce_1 44# happyReduction_123-happyReduction_123 happy_x_1- = case happyOut133 happy_x_1 of { happy_var_1 -> - happyIn55- (happy_var_1- )}--happyReduce_124 = happySpecReduce_3 45# happyReduction_124-happyReduction_124 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut53 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn56- (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2)- )}}}--happyReduce_125 = happySpecReduce_3 45# happyReduction_125-happyReduction_125 happy_x_3- happy_x_2- happy_x_1- = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn56- (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2)- )}}}--happyReduce_126 = happyMonadReduce 3# 46# happyReduction_126-happyReduction_126 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - ( do { v <- checkSigVar happy_var_1;- return $ TypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) [v] happy_var_3 })}}}- ) (\r -> happyReturn (happyIn57 r))--happyReduce_127 = happyMonadReduce 5# 46# happyReduction_127-happyReduction_127 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut62 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> - case happyOut88 happy_x_5 of { happy_var_5 -> - ( do { v <- checkSigVar happy_var_1;- let {(vs,ss,_) = happy_var_3 ; l = happy_var_1 <> happy_var_5 <** (happy_var_2 : reverse ss ++ [happy_var_4]) } ;- return $ TypeSig l (v : reverse vs) happy_var_5 })}}}}}- ) (\r -> happyReturn (happyIn57 r))--happyReduce_128 = happySpecReduce_1 46# happyReduction_128-happyReduction_128 happy_x_1- = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn57- (happy_var_1- )}--happyReduce_129 = happyReduce 4# 47# happyReduction_129-happyReduction_129 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut195 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn58- (let Loc l (INLINE s) = happy_var_1 in InlineSig (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3- ) `HappyStk` happyRest}}}}--happyReduce_130 = happyReduce 4# 47# happyReduction_130-happyReduction_130 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 INLINE_CONLIKE) -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut195 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn58- (InlineConlikeSig (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_4]) happy_var_2 happy_var_3- ) `HappyStk` happyRest}}}}--happyReduce_131 = happyReduce 5# 47# happyReduction_131-happyReduction_131 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> - case happyOut195 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut59 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 PragmaEnd) -> - happyIn58- (SpecSig (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 (fst happy_var_4)- ) `HappyStk` happyRest}}}}}--happyReduce_132 = happyReduce 6# 47# happyReduction_132-happyReduction_132 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut195 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> - case happyOut59 happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (Loc happy_var_6 PragmaEnd) -> - happyIn58- (let Loc l (SPECIALISE_INLINE s) = happy_var_1- in SpecInlineSig (l <^^> happy_var_6 <** (l:happy_var_4:snd happy_var_5++[happy_var_6])) s happy_var_2 happy_var_3 (fst happy_var_5)- ) `HappyStk` happyRest}}}}}}--happyReduce_133 = happyMonadReduce 4# 47# happyReduction_133-happyReduction_133 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - ( do { (cs,ih) <- checkInstHeader happy_var_3;- let {l = happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,happy_var_4]};- return $ InstSig l cs ih })}}}}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_134 = happySpecReduce_1 48# happyReduction_134-happyReduction_134 happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn59- (([happy_var_1],[])- )}--happyReduce_135 = happySpecReduce_3 48# happyReduction_135-happyReduction_135 happy_x_3- happy_x_2- happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn59- ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)- )}}}--happyReduce_136 = happyMonadReduce 1# 49# happyReduction_136-happyReduction_136 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut89 happy_x_1 of { happy_var_1 -> - ( checkType $ mkTyForall (ann happy_var_1) Nothing Nothing happy_var_1)}- ) (\r -> happyReturn (happyIn60 r))--happyReduce_137 = happySpecReduce_1 50# happyReduction_137-happyReduction_137 happy_x_1- = case happyOut56 happy_x_1 of { happy_var_1 -> - happyIn61- (happy_var_1- )}--happyReduce_138 = happySpecReduce_3 50# happyReduction_138-happyReduction_138 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut189 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn61- (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2)- )}}}--happyReduce_139 = happySpecReduce_3 50# happyReduction_139-happyReduction_139 happy_x_3- happy_x_2- happy_x_1- = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut189 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn61- (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2)- )}}}--happyReduce_140 = happySpecReduce_3 51# happyReduction_140-happyReduction_140 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut193 happy_x_3 of { happy_var_3 -> - happyIn62- (let (ns,ss,l) = happy_var_1 in (happy_var_3 : ns, happy_var_2 : ss, l <++> ann happy_var_3)- )}}}--happyReduce_141 = happyMonadReduce 1# 51# happyReduction_141-happyReduction_141 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - ( do { n <- checkUnQual happy_var_1;- return ([n],[],ann n) })}- ) (\r -> happyReturn (happyIn62 r))--happyReduce_142 = happySpecReduce_1 52# happyReduction_142-happyReduction_142 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn63- (StdCall (nIS happy_var_1)- )}--happyReduce_143 = happySpecReduce_1 52# happyReduction_143-happyReduction_143 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn63- (CCall (nIS happy_var_1)- )}--happyReduce_144 = happySpecReduce_1 53# happyReduction_144-happyReduction_144 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn64- (Just $ PlaySafe (nIS happy_var_1) False- )}--happyReduce_145 = happySpecReduce_1 53# happyReduction_145-happyReduction_145 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn64- (Just $ PlayRisky (nIS happy_var_1)- )}--happyReduce_146 = happySpecReduce_1 53# happyReduction_146-happyReduction_146 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn64- (Just $ PlaySafe (nIS happy_var_1) True- )}--happyReduce_147 = happySpecReduce_0 53# happyReduction_147-happyReduction_147 = happyIn64- (Nothing- )--happyReduce_148 = happyReduce 4# 54# happyReduction_148-happyReduction_148 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut194 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut77 happy_x_4 of { happy_var_4 -> - happyIn65- (let Loc l (StringTok (s,_)) = happy_var_1 in (Just s, happy_var_2, happy_var_4, [l,happy_var_3])- ) `HappyStk` happyRest}}}}--happyReduce_149 = happySpecReduce_3 54# happyReduction_149-happyReduction_149 happy_x_3- happy_x_2- happy_x_1- = case happyOut194 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut77 happy_x_3 of { happy_var_3 -> - happyIn65- ((Nothing, happy_var_1, happy_var_3, [happy_var_2])- )}}}--happyReduce_150 = happySpecReduce_3 55# happyReduction_150-happyReduction_150 happy_x_3- happy_x_2- happy_x_1- = case happyOut66 happy_x_1 of { happy_var_1 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - happyIn66- (happy_var_3 : happy_var_1- )}}--happyReduce_151 = happySpecReduce_2 55# happyReduction_151-happyReduction_151 happy_x_2- happy_x_1- = case happyOut66 happy_x_1 of { happy_var_1 -> - happyIn66- (happy_var_1- )}--happyReduce_152 = happySpecReduce_1 55# happyReduction_152-happyReduction_152 happy_x_1- = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn66- ([happy_var_1]- )}--happyReduce_153 = happySpecReduce_0 55# happyReduction_153-happyReduction_153 = happyIn66- ([]- )--happyReduce_154 = happyMonadReduce 6# 56# happyReduction_154-happyReduction_154 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_2 of { happy_var_2 -> - case happyOut69 happy_x_3 of { happy_var_3 -> - case happyOut141 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 Equals) -> - case happyOut139 happy_x_6 of { happy_var_6 -> - ( do { let {Loc l (StringTok (s,_)) = happy_var_1};- e <- checkRuleExpr happy_var_4;- return $ Rule (nIS l <++> ann happy_var_6 <** l:snd happy_var_3 ++ [happy_var_5]) s happy_var_2 (fst happy_var_3) e happy_var_6 })}}}}}}- ) (\r -> happyReturn (happyIn67 r))--happyReduce_155 = happySpecReduce_0 57# happyReduction_155-happyReduction_155 = happyIn68- (Nothing- )--happyReduce_156 = happySpecReduce_3 57# happyReduction_156-happyReduction_156 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn68- (let Loc l (IntTok (i,_)) = happy_var_2 in Just $ ActiveFrom (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) (fromInteger i)- )}}}--happyReduce_157 = happyReduce 4# 57# happyReduction_157-happyReduction_157 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightSquare) -> - happyIn68- (let Loc l (IntTok (i,_)) = happy_var_3 in Just $ ActiveUntil (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,l,happy_var_4]) (fromInteger i)- ) `HappyStk` happyRest}}}}--happyReduce_158 = happySpecReduce_0 58# happyReduction_158-happyReduction_158 = happyIn69- ((Nothing,[])- )--happyReduce_159 = happySpecReduce_3 58# happyReduction_159-happyReduction_159 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut70 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - happyIn69- ((Just happy_var_2,[happy_var_1,happy_var_3])- )}}}--happyReduce_160 = happySpecReduce_1 59# happyReduction_160-happyReduction_160 happy_x_1- = case happyOut71 happy_x_1 of { happy_var_1 -> - happyIn70- ([happy_var_1]- )}--happyReduce_161 = happySpecReduce_2 59# happyReduction_161-happyReduction_161 happy_x_2- happy_x_1- = case happyOut71 happy_x_1 of { happy_var_1 -> - case happyOut70 happy_x_2 of { happy_var_2 -> - happyIn70- (happy_var_1 : happy_var_2- )}}--happyReduce_162 = happySpecReduce_1 60# happyReduction_162-happyReduction_162 happy_x_1- = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn71- (RuleVar (ann happy_var_1) happy_var_1- )}--happyReduce_163 = happyReduce 5# 60# happyReduction_163-happyReduction_163 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut210 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn71- (TypedRuleVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}}}--happyReduce_164 = happySpecReduce_3 61# happyReduction_164-happyReduction_164 happy_x_3- happy_x_2- happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - case happyOut73 happy_x_3 of { happy_var_3 -> - happyIn72- ((fst happy_var_3 : fst happy_var_1, snd happy_var_1 ++ (happy_var_2:snd happy_var_3))- )}}}--happyReduce_165 = happySpecReduce_2 61# happyReduction_165-happyReduction_165 happy_x_2- happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - happyIn72- ((fst happy_var_1, snd happy_var_1 ++ [happy_var_2])- )}}--happyReduce_166 = happySpecReduce_1 61# happyReduction_166-happyReduction_166 happy_x_1- = case happyOut73 happy_x_1 of { happy_var_1 -> - happyIn72- (([fst happy_var_1],snd happy_var_1)- )}--happyReduce_167 = happySpecReduce_0 61# happyReduction_167-happyReduction_167 = happyIn72- (([],[])- )--happyReduce_168 = happySpecReduce_2 62# happyReduction_168-happyReduction_168 happy_x_2- happy_x_1- = case happyOut74 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - happyIn73- (let Loc l (StringTok (s,_)) = happy_var_2 in ((fst happy_var_1,s),snd happy_var_1 ++ [l])- )}}--happyReduce_169 = happySpecReduce_1 63# happyReduction_169-happyReduction_169 happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn74- (([happy_var_1],[])- )}--happyReduce_170 = happySpecReduce_3 63# happyReduction_170-happyReduction_170 happy_x_3- happy_x_2- happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut74 happy_x_3 of { happy_var_3 -> - happyIn74- ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)- )}}}--happyReduce_171 = happySpecReduce_1 64# happyReduction_171-happyReduction_171 happy_x_1- = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn75- (happy_var_1- )}--happyReduce_172 = happySpecReduce_1 64# happyReduction_172-happyReduction_172 happy_x_1- = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn75- (happy_var_1- )}--happyReduce_173 = happyMonadReduce 3# 65# happyReduction_173-happyReduction_173 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut213 happy_x_2 of { happy_var_2 -> - case happyOut150 happy_x_3 of { happy_var_3 -> - ( checkExpr happy_var_3 >>= \e -> return (TypeAnn (nIS happy_var_1 <++> ann e <** [happy_var_1]) happy_var_2 e))}}}- ) (\r -> happyReturn (happyIn76 r))--happyReduce_174 = happyMonadReduce 2# 65# happyReduction_174-happyReduction_174 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkExpr happy_var_2 >>= \e -> return (ModuleAnn (nIS happy_var_1 <++> ann e <** [happy_var_1]) e))}}- ) (\r -> happyReturn (happyIn76 r))--happyReduce_175 = happyMonadReduce 2# 65# happyReduction_175-happyReduction_175 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkExpr happy_var_2 >>= \e -> return (Ann (happy_var_1 <> e) happy_var_1 e))}}- ) (\r -> happyReturn (happyIn76 r))--happyReduce_176 = happyMonadReduce 1# 66# happyReduction_176-happyReduction_176 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut78 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)}- ) (\r -> happyReturn (happyIn77 r))--happyReduce_177 = happySpecReduce_1 67# happyReduction_177-happyReduction_177 happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn78- (happy_var_1- )}--happyReduce_178 = happySpecReduce_3 67# happyReduction_178-happyReduction_178 happy_x_3- happy_x_2- happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - case happyOut78 happy_x_3 of { happy_var_3 -> - happyIn78- (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3- )}}}--happyReduce_179 = happySpecReduce_3 67# happyReduction_179-happyReduction_179 happy_x_3- happy_x_2- happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut228 happy_x_2 of { happy_var_2 -> - case happyOut78 happy_x_3 of { happy_var_3 -> - happyIn78- (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3- )}}}--happyReduce_180 = happySpecReduce_3 67# happyReduction_180-happyReduction_180 happy_x_3- happy_x_2- happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn78- (TyFun (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_181 = happyMonadReduce 3# 67# happyReduction_181-happyReduction_181 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled TypeFamilies ;- let {l = happy_var_1 <> happy_var_3 <** [happy_var_2]};- return $ TyPred l $ EqualP l happy_var_1 happy_var_3 })}}}- ) (\r -> happyReturn (happyIn78 r))--happyReduce_182 = happyMonadReduce 1# 68# happyReduction_182-happyReduction_182 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut80 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)}- ) (\r -> happyReturn (happyIn79 r))--happyReduce_183 = happySpecReduce_3 69# happyReduction_183-happyReduction_183 happy_x_3- happy_x_2- happy_x_1- = case happyOut196 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut78 happy_x_3 of { happy_var_3 -> - happyIn80- (let l = (happy_var_1 <> happy_var_3 <** [happy_var_2]) in TyPred l $ IParam l happy_var_1 happy_var_3- )}}}--happyReduce_184 = happySpecReduce_1 69# happyReduction_184-happyReduction_184 happy_x_1- = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn80- (happy_var_1- )}--happyReduce_185 = happyMonadReduce 1# 70# happyReduction_185-happyReduction_185 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_186 = happySpecReduce_2 71# happyReduction_186-happyReduction_186 happy_x_2- happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { happy_var_2 -> - happyIn82- (TyApp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2- )}}--happyReduce_187 = happySpecReduce_1 71# happyReduction_187-happyReduction_187 happy_x_1- = case happyOut84 happy_x_1 of { happy_var_1 -> - happyIn82- (happy_var_1- )}--happyReduce_188 = happyMonadReduce 1# 72# happyReduction_188-happyReduction_188 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut84 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)}- ) (\r -> happyReturn (happyIn83 r))--happyReduce_189 = happySpecReduce_1 73# happyReduction_189-happyReduction_189 happy_x_1- = case happyOut85 happy_x_1 of { happy_var_1 -> - happyIn84- (TyCon (ann happy_var_1) happy_var_1- )}--happyReduce_190 = happySpecReduce_1 73# happyReduction_190-happyReduction_190 happy_x_1- = case happyOut227 happy_x_1 of { happy_var_1 -> - happyIn84- (TyVar (ann happy_var_1) happy_var_1- )}--happyReduce_191 = happySpecReduce_3 73# happyReduction_191-happyReduction_191 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut91 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn84- (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Boxed (reverse (fst happy_var_2))- )}}}--happyReduce_192 = happySpecReduce_3 73# happyReduction_192-happyReduction_192 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut92 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn84- (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Unboxed (reverse (fst happy_var_2))- )}}}--happyReduce_193 = happySpecReduce_3 73# happyReduction_193-happyReduction_193 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOut80 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn84- (TyList (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2- )}}}--happyReduce_194 = happySpecReduce_3 73# happyReduction_194-happyReduction_194 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn84- (TyParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2- )}}}--happyReduce_195 = happyReduce 5# 73# happyReduction_195-happyReduction_195 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut119 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn84- (TyKind (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}}}--happyReduce_196 = happySpecReduce_1 74# happyReduction_196-happyReduction_196 happy_x_1- = case happyOut86 happy_x_1 of { happy_var_1 -> - happyIn85- (happy_var_1- )}--happyReduce_197 = happySpecReduce_2 74# happyReduction_197-happyReduction_197 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn85- (unit_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])- )}}--happyReduce_198 = happySpecReduce_3 74# happyReduction_198-happyReduction_198 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn85- (fun_tycon_name (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3])- )}}}--happyReduce_199 = happySpecReduce_2 74# happyReduction_199-happyReduction_199 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> - happyIn85- (list_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])- )}}--happyReduce_200 = happySpecReduce_3 74# happyReduction_200-happyReduction_200 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn85- (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Boxed (length happy_var_2)- )}}}--happyReduce_201 = happySpecReduce_2 74# happyReduction_201-happyReduction_201 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> - happyIn85- (unboxed_singleton_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])- )}}--happyReduce_202 = happySpecReduce_3 74# happyReduction_202-happyReduction_202 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn85- (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Unboxed (length happy_var_2)- )}}}--happyReduce_203 = happySpecReduce_1 75# happyReduction_203-happyReduction_203 happy_x_1- = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn86- (happy_var_1- )}--happyReduce_204 = happySpecReduce_3 75# happyReduction_204-happyReduction_204 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut207 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn86- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_205 = happySpecReduce_3 75# happyReduction_205-happyReduction_205 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut216 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn86- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_206 = happySpecReduce_1 76# happyReduction_206-happyReduction_206 happy_x_1- = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn87- (happy_var_1- )}--happyReduce_207 = happyMonadReduce 1# 77# happyReduction_207-happyReduction_207 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut89 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_208 = happyReduce 4# 78# happyReduction_208-happyReduction_208 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut93 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - case happyOut89 happy_x_4 of { happy_var_4 -> - happyIn89- (TyForall (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (Just (reverse (fst happy_var_2))) Nothing happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_209 = happySpecReduce_2 78# happyReduction_209-happyReduction_209 happy_x_2- happy_x_1- = case happyOut90 happy_x_1 of { happy_var_1 -> - case happyOut89 happy_x_2 of { happy_var_2 -> - happyIn89- (TyForall (happy_var_1 <> happy_var_2) Nothing (Just happy_var_1) happy_var_2- )}}--happyReduce_210 = happySpecReduce_1 78# happyReduction_210-happyReduction_210 happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn89- (happy_var_1- )}--happyReduce_211 = happyMonadReduce 2# 79# happyReduction_211-happyReduction_211 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleArrow) -> - ( checkPContext $ (amap (\l -> l <++> nIS happy_var_2 <** (srcInfoPoints l ++ [happy_var_2]))) happy_var_1)}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_212 = happyMonadReduce 4# 79# happyReduction_212-happyReduction_212 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleArrow) -> - ( do { checkEnabled TypeFamilies;- let {l = happy_var_1 <> happy_var_3 <** [happy_var_2,happy_var_4]};- checkPContext (TyPred l $ EqualP l happy_var_1 happy_var_3) })}}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_213 = happySpecReduce_3 80# happyReduction_213-happyReduction_213 happy_x_3- happy_x_2- happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn91- ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)- )}}}--happyReduce_214 = happySpecReduce_1 81# happyReduction_214-happyReduction_214 happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 -> - happyIn92- (([happy_var_1],[])- )}--happyReduce_215 = happySpecReduce_3 81# happyReduction_215-happyReduction_215 happy_x_3- happy_x_2- happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut89 happy_x_3 of { happy_var_3 -> - happyIn92- ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)- )}}}--happyReduce_216 = happySpecReduce_2 82# happyReduction_216-happyReduction_216 happy_x_2- happy_x_1- = case happyOut93 happy_x_1 of { happy_var_1 -> - case happyOut94 happy_x_2 of { happy_var_2 -> - happyIn93- ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2))- )}}--happyReduce_217 = happySpecReduce_0 82# happyReduction_217-happyReduction_217 = happyIn93- (([],Nothing)- )--happyReduce_218 = happySpecReduce_1 83# happyReduction_218-happyReduction_218 happy_x_1- = case happyOut227 happy_x_1 of { happy_var_1 -> - happyIn94- (UnkindedVar (ann happy_var_1) happy_var_1- )}--happyReduce_219 = happyReduce 5# 83# happyReduction_219-happyReduction_219 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut227 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut119 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn94- (KindedVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}}}--happyReduce_220 = happySpecReduce_2 84# happyReduction_220-happyReduction_220 happy_x_2- happy_x_1- = case happyOut95 happy_x_1 of { happy_var_1 -> - case happyOut227 happy_x_2 of { happy_var_2 -> - happyIn95- ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2))- )}}--happyReduce_221 = happySpecReduce_0 84# happyReduction_221-happyReduction_221 = happyIn95- (([], Nothing)- )--happyReduce_222 = happySpecReduce_2 85# happyReduction_222-happyReduction_222 happy_x_2- happy_x_1- = case happyOut95 happy_x_1 of { happy_var_1 -> - case happyOut227 happy_x_2 of { happy_var_2 -> - happyIn96- ((happy_var_2 : fst happy_var_1, snd happy_var_1 <?+> ann happy_var_2)- )}}--happyReduce_223 = happySpecReduce_0 86# happyReduction_223-happyReduction_223 = happyIn97- (([],[], Nothing)- )--happyReduce_224 = happyMonadReduce 2# 86# happyReduction_224-happyReduction_224 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut98 happy_x_2 of { happy_var_2 -> - ( do { checkEnabled FunctionalDependencies ;- let {(fds,ss,l) = happy_var_2} ;- return (reverse fds, happy_var_1 : reverse ss, Just (nIS happy_var_1 <++> l)) })}}- ) (\r -> happyReturn (happyIn97 r))--happyReduce_225 = happySpecReduce_3 87# happyReduction_225-happyReduction_225 happy_x_3- happy_x_2- happy_x_1- = case happyOut98 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut99 happy_x_3 of { happy_var_3 -> - happyIn98- (let (fds,ss,l) = happy_var_1 in (happy_var_3 : fds, happy_var_2 : ss, l <++> ann happy_var_3)- )}}}--happyReduce_226 = happySpecReduce_1 87# happyReduction_226-happyReduction_226 happy_x_1- = case happyOut99 happy_x_1 of { happy_var_1 -> - happyIn98- (([happy_var_1],[],ann happy_var_1)- )}--happyReduce_227 = happySpecReduce_3 88# happyReduction_227-happyReduction_227 happy_x_3- happy_x_2- happy_x_1- = case happyOut96 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut96 happy_x_3 of { happy_var_3 -> - happyIn99- (FunDep (snd happy_var_1 <++> snd happy_var_3 <** [happy_var_2]) (reverse (fst happy_var_1)) (reverse (fst happy_var_3))- )}}}--happyReduce_228 = happyMonadReduce 4# 89# happyReduction_228-happyReduction_228 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut101 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_229 = happyMonadReduce 4# 89# happyReduction_229-happyReduction_229 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut222 happy_x_2 of { happy_var_2 -> - case happyOut101 happy_x_3 of { happy_var_3 -> - case happyOut223 happy_x_4 of { happy_var_4 -> - ( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_230 = happyMonadReduce 0# 89# happyReduction_230-happyReduction_230 (happyRest) tk- = happyThen (( checkEnabled EmptyDataDecls >> return ([],[],Nothing))- ) (\r -> happyReturn (happyIn100 r))--happyReduce_231 = happySpecReduce_3 90# happyReduction_231-happyReduction_231 happy_x_3- happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut102 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn101- ((fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)- )}}}--happyReduce_232 = happySpecReduce_3 91# happyReduction_232-happyReduction_232 happy_x_3- happy_x_2- happy_x_1- = case happyOut102 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut103 happy_x_3 of { happy_var_3 -> - happyIn102- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)- )}}}--happyReduce_233 = happySpecReduce_1 91# happyReduction_233-happyReduction_233 happy_x_1- = case happyOut103 happy_x_1 of { happy_var_1 -> - happyIn102- (([happy_var_1],[])- )}--happyReduce_234 = happyMonadReduce 3# 92# happyReduction_234-happyReduction_234 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - ( do { c <- checkUnQual happy_var_1;- return $ GadtDecl (happy_var_1 <> happy_var_3 <** [happy_var_2]) c happy_var_3 })}}}- ) (\r -> happyReturn (happyIn103 r))--happyReduce_235 = happySpecReduce_2 93# happyReduction_235-happyReduction_235 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> - case happyOut105 happy_x_2 of { happy_var_2 -> - happyIn104- (let (ds,ss,l) = happy_var_2 in (ds, happy_var_1 : reverse ss, Just $ nIS happy_var_1 <++> l)- )}}--happyReduce_236 = happySpecReduce_3 94# happyReduction_236-happyReduction_236 happy_x_3- happy_x_2- happy_x_1- = case happyOut105 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut106 happy_x_3 of { happy_var_3 -> - happyIn105- (let (ds,ss,l) = happy_var_1 in (happy_var_3 : ds, happy_var_2 : ss, l <++> ann happy_var_3)- )}}}--happyReduce_237 = happySpecReduce_1 94# happyReduction_237-happyReduction_237 happy_x_1- = case happyOut106 happy_x_1 of { happy_var_1 -> - happyIn105- (([happy_var_1],[],ann happy_var_1)- )}--happyReduce_238 = happyMonadReduce 3# 95# happyReduction_238-happyReduction_238 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> - case happyOut90 happy_x_2 of { happy_var_2 -> - case happyOut108 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled ExistentialQuantification ;- ctxt <- checkContext (Just happy_var_2) ;- let {(mtvs,ss,ml) = happy_var_1} ;- return $ QualConDecl (ml <?+> ann happy_var_3 <** ss) mtvs ctxt happy_var_3 })}}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_239 = happySpecReduce_2 95# happyReduction_239-happyReduction_239 happy_x_2- happy_x_1- = case happyOut107 happy_x_1 of { happy_var_1 -> - case happyOut108 happy_x_2 of { happy_var_2 -> - happyIn106- (let (mtvs, ss, ml) = happy_var_1 in QualConDecl (ml <?+> ann happy_var_2 <** ss) mtvs Nothing happy_var_2- )}}--happyReduce_240 = happyMonadReduce 3# 96# happyReduction_240-happyReduction_240 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut93 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - ( checkEnabled ExistentialQuantification >> return (Just (fst happy_var_2), [happy_var_1,happy_var_3], Just $ happy_var_1 <^^> happy_var_3))}}}- ) (\r -> happyReturn (happyIn107 r))--happyReduce_241 = happySpecReduce_0 96# happyReduction_241-happyReduction_241 = happyIn107- ((Nothing, [], Nothing)- )--happyReduce_242 = happySpecReduce_1 97# happyReduction_242-happyReduction_242 happy_x_1- = case happyOut109 happy_x_1 of { happy_var_1 -> - happyIn108- (let (n,ts,l) = happy_var_1 in ConDecl l n ts- )}--happyReduce_243 = happySpecReduce_3 97# happyReduction_243-happyReduction_243 happy_x_3- happy_x_2- happy_x_1- = case happyOut112 happy_x_1 of { happy_var_1 -> - case happyOut202 happy_x_2 of { happy_var_2 -> - case happyOut112 happy_x_3 of { happy_var_3 -> - happyIn108- (InfixConDecl (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3- )}}}--happyReduce_244 = happyMonadReduce 3# 97# happyReduction_244-happyReduction_244 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - ( do { c <- checkUnQual happy_var_1; return $ RecDecl (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) c [] })}}}- ) (\r -> happyReturn (happyIn108 r))--happyReduce_245 = happyMonadReduce 4# 97# happyReduction_245-happyReduction_245 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut198 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut113 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( do { c <- checkUnQual happy_var_1;- return $ RecDecl (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) c (reverse (fst happy_var_3)) })}}}}- ) (\r -> happyReturn (happyIn108 r))--happyReduce_246 = happyMonadReduce 1# 98# happyReduction_246-happyReduction_246 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - ( do { (c,ts) <- splitTyConApp happy_var_1;- return (c,map (\t -> UnBangedTy (ann t) t) ts,ann happy_var_1) })}- ) (\r -> happyReturn (happyIn109 r))--happyReduce_247 = happySpecReduce_1 98# happyReduction_247-happyReduction_247 happy_x_1- = case happyOut110 happy_x_1 of { happy_var_1 -> - happyIn109- (happy_var_1- )}--happyReduce_248 = happyMonadReduce 3# 99# happyReduction_248-happyReduction_248 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Exclamation) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - ( do { (c,ts) <- splitTyConApp happy_var_1;- return (c,map (\t -> UnBangedTy (ann t) t) ts++- [BangedTy (nIS happy_var_2 <++> ann happy_var_3 <** [happy_var_2]) happy_var_3], happy_var_1 <> happy_var_3) })}}}- ) (\r -> happyReturn (happyIn110 r))--happyReduce_249 = happyMonadReduce 5# 99# happyReduction_249-happyReduction_249 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 UNPACK) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Exclamation) -> - case happyOut83 happy_x_5 of { happy_var_5 -> - ( do { (c,ts) <- splitTyConApp happy_var_1;- return (c,map (\t -> UnBangedTy (ann t) t) ts++- [UnpackedTy (nIS happy_var_2 <++> ann happy_var_5 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_5], happy_var_1 <> happy_var_5) })}}}}}- ) (\r -> happyReturn (happyIn110 r))--happyReduce_250 = happySpecReduce_2 99# happyReduction_250-happyReduction_250 happy_x_2- happy_x_1- = case happyOut110 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_2 of { happy_var_2 -> - happyIn110- (let (n,ts,l) = happy_var_1 in (n, ts ++ [happy_var_2],l <++> ann happy_var_2)- )}}--happyReduce_251 = happySpecReduce_1 100# happyReduction_251-happyReduction_251 happy_x_1- = case happyOut83 happy_x_1 of { happy_var_1 -> - happyIn111- (UnBangedTy (ann happy_var_1) happy_var_1- )}--happyReduce_252 = happySpecReduce_2 100# happyReduction_252-happyReduction_252 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn111- (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_253 = happyReduce 4# 100# happyReduction_253-happyReduction_253 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn111- (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_254 = happySpecReduce_1 101# happyReduction_254-happyReduction_254 happy_x_1- = case happyOut81 happy_x_1 of { happy_var_1 -> - happyIn112- (UnBangedTy (ann happy_var_1) happy_var_1- )}--happyReduce_255 = happySpecReduce_2 101# happyReduction_255-happyReduction_255 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn112- (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_256 = happyReduce 4# 101# happyReduction_256-happyReduction_256 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn112- (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_257 = happySpecReduce_3 102# happyReduction_257-happyReduction_257 happy_x_3- happy_x_2- happy_x_1- = case happyOut113 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut114 happy_x_3 of { happy_var_3 -> - happyIn113- ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)- )}}}--happyReduce_258 = happySpecReduce_1 102# happyReduction_258-happyReduction_258 happy_x_1- = case happyOut114 happy_x_1 of { happy_var_1 -> - happyIn113- (([happy_var_1],[])- )}--happyReduce_259 = happySpecReduce_3 103# happyReduction_259-happyReduction_259 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut115 happy_x_3 of { happy_var_3 -> - happyIn114- (let (ns,ss,l) = happy_var_1 in FieldDecl (l <++> ann happy_var_3 <** (reverse ss ++ [happy_var_2])) (reverse ns) happy_var_3- )}}}--happyReduce_260 = happySpecReduce_1 104# happyReduction_260-happyReduction_260 happy_x_1- = case happyOut88 happy_x_1 of { happy_var_1 -> - happyIn115- (UnBangedTy (ann happy_var_1) happy_var_1- )}--happyReduce_261 = happySpecReduce_2 104# happyReduction_261-happyReduction_261 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn115- (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_262 = happyReduce 4# 104# happyReduction_262-happyReduction_262 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn115- (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_263 = happySpecReduce_0 105# happyReduction_263-happyReduction_263 = happyIn116- (Nothing- )--happyReduce_264 = happySpecReduce_2 105# happyReduction_264-happyReduction_264 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOut118 happy_x_2 of { happy_var_2 -> - happyIn116- (let l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] in Just $ Deriving l [IHead (ann happy_var_2) happy_var_2 []]- )}}--happyReduce_265 = happySpecReduce_3 105# happyReduction_265-happyReduction_265 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn116- (Just $ Deriving (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) []- )}}}--happyReduce_266 = happyReduce 4# 105# happyReduction_266-happyReduction_266 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut117 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn116- (Just $ Deriving (happy_var_1 <^^> happy_var_4 <** happy_var_1:happy_var_2: reverse (snd happy_var_3) ++ [happy_var_4]) (reverse (fst happy_var_3))- ) `HappyStk` happyRest}}}}--happyReduce_267 = happyMonadReduce 1# 106# happyReduction_267-happyReduction_267 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut92 happy_x_1 of { happy_var_1 -> - ( checkDeriving (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1))}- ) (\r -> happyReturn (happyIn117 r))--happyReduce_268 = happySpecReduce_1 107# happyReduction_268-happyReduction_268 happy_x_1- = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn118- (happy_var_1- )}--happyReduce_269 = happyMonadReduce 1# 108# happyReduction_269-happyReduction_269 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut120 happy_x_1 of { happy_var_1 -> - ( checkEnabled KindSignatures >> return happy_var_1)}- ) (\r -> happyReturn (happyIn119 r))--happyReduce_270 = happySpecReduce_1 109# happyReduction_270-happyReduction_270 happy_x_1- = case happyOut121 happy_x_1 of { happy_var_1 -> - happyIn120- (happy_var_1- )}--happyReduce_271 = happySpecReduce_3 109# happyReduction_271-happyReduction_271 happy_x_3- happy_x_2- happy_x_1- = case happyOut121 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut120 happy_x_3 of { happy_var_3 -> - happyIn120- (KindFn (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_272 = happySpecReduce_1 110# happyReduction_272-happyReduction_272 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn121- (KindStar (nIS happy_var_1)- )}--happyReduce_273 = happySpecReduce_1 110# happyReduction_273-happyReduction_273 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn121- (KindBang (nIS happy_var_1)- )}--happyReduce_274 = happySpecReduce_3 110# happyReduction_274-happyReduction_274 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut120 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn121- (KindParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2- )}}}--happyReduce_275 = happySpecReduce_0 111# happyReduction_275-happyReduction_275 = happyIn122- ((Nothing,[])- )--happyReduce_276 = happySpecReduce_2 111# happyReduction_276-happyReduction_276 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> - case happyOut119 happy_x_2 of { happy_var_2 -> - happyIn122- ((Just happy_var_2,[happy_var_1])- )}}--happyReduce_277 = happyMonadReduce 4# 112# happyReduction_277-happyReduction_277 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut124 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}- ) (\r -> happyReturn (happyIn123 r))--happyReduce_278 = happyMonadReduce 4# 112# happyReduction_278-happyReduction_278 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut222 happy_x_2 of { happy_var_2 -> - case happyOut124 happy_x_3 of { happy_var_3 -> - case happyOut223 happy_x_4 of { happy_var_4 -> - ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}- ) (\r -> happyReturn (happyIn123 r))--happyReduce_279 = happySpecReduce_0 112# happyReduction_279-happyReduction_279 = happyIn123- ((Nothing,[],Nothing)- )--happyReduce_280 = happyMonadReduce 3# 113# happyReduction_280-happyReduction_280 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut125 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - ( checkRevClsDecls (fst happy_var_2) >>= \cs -> return (cs, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}}- ) (\r -> happyReturn (happyIn124 r))--happyReduce_281 = happySpecReduce_1 113# happyReduction_281-happyReduction_281 happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn124- (([],reverse happy_var_1)- )}--happyReduce_282 = happySpecReduce_3 114# happyReduction_282-happyReduction_282 happy_x_3- happy_x_2- happy_x_1- = case happyOut125 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - happyIn125- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)- )}}}--happyReduce_283 = happySpecReduce_1 114# happyReduction_283-happyReduction_283 happy_x_1- = case happyOut126 happy_x_1 of { happy_var_1 -> - happyIn125- (([happy_var_1],[])- )}--happyReduce_284 = happySpecReduce_1 115# happyReduction_284-happyReduction_284 happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn126- (ClsDecl (ann happy_var_1) happy_var_1- )}--happyReduce_285 = happyMonadReduce 1# 115# happyReduction_285-happyReduction_285 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)}- ) (\r -> happyReturn (happyIn126 r))--happyReduce_286 = happyMonadReduce 3# 116# happyReduction_286-happyReduction_286 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut80 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( do { dh <- checkSimpleType happy_var_2;- return (ClsTyFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) dh (fst happy_var_3)) })}}}- ) (\r -> happyReturn (happyIn127 r))--happyReduce_287 = happyReduce 4# 116# happyReduction_287-happyReduction_287 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut77 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn127- (ClsTyDef (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_288 = happyMonadReduce 3# 116# happyReduction_288-happyReduction_288 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - case happyOut89 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2;- return (ClsDataFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) cs dh (fst happy_var_3)) })}}}- ) (\r -> happyReturn (happyIn127 r))--happyReduce_289 = happyMonadReduce 4# 117# happyReduction_289-happyReduction_289 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut129 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}- ) (\r -> happyReturn (happyIn128 r))--happyReduce_290 = happyMonadReduce 4# 117# happyReduction_290-happyReduction_290 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut222 happy_x_2 of { happy_var_2 -> - case happyOut129 happy_x_3 of { happy_var_3 -> - case happyOut223 happy_x_4 of { happy_var_4 -> - ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}}- ) (\r -> happyReturn (happyIn128 r))--happyReduce_291 = happySpecReduce_0 117# happyReduction_291-happyReduction_291 = happyIn128- ((Nothing, [], Nothing)- )--happyReduce_292 = happyMonadReduce 3# 118# happyReduction_292-happyReduction_292 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut130 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - ( checkRevInstDecls (fst happy_var_2) >>= \is -> return (is, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}}- ) (\r -> happyReturn (happyIn129 r))--happyReduce_293 = happySpecReduce_1 118# happyReduction_293-happyReduction_293 happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn129- (([],reverse happy_var_1)- )}--happyReduce_294 = happySpecReduce_3 119# happyReduction_294-happyReduction_294 happy_x_3- happy_x_2- happy_x_1- = case happyOut130 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - happyIn130- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)- )}}}--happyReduce_295 = happySpecReduce_1 119# happyReduction_295-happyReduction_295 happy_x_1- = case happyOut131 happy_x_1 of { happy_var_1 -> - happyIn130- (([happy_var_1],[])- )}--happyReduce_296 = happySpecReduce_1 120# happyReduction_296-happyReduction_296 happy_x_1- = case happyOut133 happy_x_1 of { happy_var_1 -> - happyIn131- (InsDecl (ann happy_var_1) happy_var_1- )}--happyReduce_297 = happyMonadReduce 1# 120# happyReduction_297-happyReduction_297 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut132 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)}- ) (\r -> happyReturn (happyIn131 r))--happyReduce_298 = happySpecReduce_1 120# happyReduction_298-happyReduction_298 happy_x_1- = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn131- (InsDecl (ann happy_var_1) happy_var_1- )}--happyReduce_299 = happyMonadReduce 4# 121# happyReduction_299-happyReduction_299 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut77 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut88 happy_x_4 of { happy_var_4 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns- return (InsType (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4) })}}}}- ) (\r -> happyReturn (happyIn132 r))--happyReduce_300 = happyMonadReduce 4# 121# happyReduction_300-happyReduction_300 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - case happyOut104 happy_x_3 of { happy_var_3 -> - case happyOut116 happy_x_4 of { happy_var_4 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4;- let {(ds,ss,minf) = happy_var_3};- checkDataOrNew happy_var_1 ds;- return (InsData (happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss ) happy_var_1 happy_var_2 (reverse ds) happy_var_4) })}}}}- ) (\r -> happyReturn (happyIn132 r))--happyReduce_301 = happyMonadReduce 5# 121# happyReduction_301-happyReduction_301 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut100 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_5 of { happy_var_5 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4;- let { (gs,ss,minf) = happy_var_4 } ;- checkDataOrNewG happy_var_1 gs;- return $ InsGData (ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)) happy_var_1 happy_var_2 (fst happy_var_3) (reverse gs) happy_var_5 })}}}}}- ) (\r -> happyReturn (happyIn132 r))--happyReduce_302 = happyMonadReduce 4# 122# happyReduction_302-happyReduction_302 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOut136 happy_x_3 of { happy_var_3 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - ( checkValDef ((happy_var_1 <> happy_var_3 <+?> (fmap ann) (fst happy_var_4)) <** (snd happy_var_2 ++ snd happy_var_4)) happy_var_1 (fst happy_var_2) happy_var_3 (fst happy_var_4))}}}}- ) (\r -> happyReturn (happyIn133 r))--happyReduce_303 = happyMonadReduce 4# 122# happyReduction_303-happyReduction_303 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - case happyOut136 happy_x_3 of { happy_var_3 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - ( do { checkEnabled BangPatterns ;- let { l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] };- p <- checkPattern (BangPat l happy_var_2);- return $ PatBind (p <> happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** snd happy_var_4)- p Nothing happy_var_3 (fst happy_var_4) })}}}}- ) (\r -> happyReturn (happyIn133 r))--happyReduce_304 = happySpecReduce_2 123# happyReduction_304-happyReduction_304 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn134- ((Just happy_var_2, [happy_var_1])- )}}--happyReduce_305 = happySpecReduce_0 123# happyReduction_305-happyReduction_305 = happyIn134- ((Nothing, [])- )--happyReduce_306 = happyMonadReduce 2# 124# happyReduction_306-happyReduction_306 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> - case happyOut88 happy_x_2 of { happy_var_2 -> - ( checkEnabled ScopedTypeVariables >> return (Just happy_var_2, [happy_var_1]))}}- ) (\r -> happyReturn (happyIn135 r))--happyReduce_307 = happySpecReduce_0 124# happyReduction_307-happyReduction_307 = happyIn135- ((Nothing,[])- )--happyReduce_308 = happySpecReduce_2 125# happyReduction_308-happyReduction_308 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - happyIn136- (UnGuardedRhs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_309 = happySpecReduce_1 125# happyReduction_309-happyReduction_309 happy_x_1- = case happyOut137 happy_x_1 of { happy_var_1 -> - happyIn136- (GuardedRhss (snd happy_var_1) (reverse $ fst happy_var_1)- )}--happyReduce_310 = happySpecReduce_2 126# happyReduction_310-happyReduction_310 happy_x_2- happy_x_1- = case happyOut137 happy_x_1 of { happy_var_1 -> - case happyOut138 happy_x_2 of { happy_var_2 -> - happyIn137- ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2)- )}}--happyReduce_311 = happySpecReduce_1 126# happyReduction_311-happyReduction_311 happy_x_1- = case happyOut138 happy_x_1 of { happy_var_1 -> - happyIn137- (([happy_var_1],ann happy_var_1)- )}--happyReduce_312 = happyMonadReduce 4# 127# happyReduction_312-happyReduction_312 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut173 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - ( do { checkPatternGuards (fst happy_var_2);- return $ GuardedRhs (nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])) (reverse (fst happy_var_2)) happy_var_4 })}}}}- ) (\r -> happyReturn (happyIn138 r))--happyReduce_313 = happyMonadReduce 1# 128# happyReduction_313-happyReduction_313 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> - ( checkExpr happy_var_1)}- ) (\r -> happyReturn (happyIn139 r))--happyReduce_314 = happySpecReduce_3 129# happyReduction_314-happyReduction_314 happy_x_3- happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut88 happy_x_3 of { happy_var_3 -> - happyIn140- (ExpTypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_315 = happySpecReduce_1 129# happyReduction_315-happyReduction_315 happy_x_1- = case happyOut141 happy_x_1 of { happy_var_1 -> - happyIn140- (happy_var_1- )}--happyReduce_316 = happySpecReduce_2 129# happyReduction_316-happyReduction_316 happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut205 happy_x_2 of { happy_var_2 -> - happyIn140- (PostOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2- )}}--happyReduce_317 = happySpecReduce_3 129# happyReduction_317-happyReduction_317 happy_x_3- happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140- (LeftArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_318 = happySpecReduce_3 129# happyReduction_318-happyReduction_318 happy_x_3- happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140- (RightArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_319 = happySpecReduce_3 129# happyReduction_319-happyReduction_319 happy_x_3- happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftDblArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140- (LeftArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_320 = happySpecReduce_3 129# happyReduction_320-happyReduction_320 happy_x_3- happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightDblArrowTail) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn140- (RightArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_321 = happySpecReduce_1 130# happyReduction_321-happyReduction_321 happy_x_1- = case happyOut142 happy_x_1 of { happy_var_1 -> - happyIn141- (happy_var_1- )}--happyReduce_322 = happySpecReduce_1 130# happyReduction_322-happyReduction_322 happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - happyIn141- (happy_var_1- )}--happyReduce_323 = happySpecReduce_3 131# happyReduction_323-happyReduction_323 happy_x_3- happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut205 happy_x_2 of { happy_var_2 -> - case happyOut144 happy_x_3 of { happy_var_3 -> - happyIn142- (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3- )}}}--happyReduce_324 = happySpecReduce_1 131# happyReduction_324-happyReduction_324 happy_x_1- = case happyOut144 happy_x_1 of { happy_var_1 -> - happyIn142- (happy_var_1- )}--happyReduce_325 = happySpecReduce_3 132# happyReduction_325-happyReduction_325 happy_x_3- happy_x_2- happy_x_1- = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut205 happy_x_2 of { happy_var_2 -> - case happyOut145 happy_x_3 of { happy_var_3 -> - happyIn143- (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3- )}}}--happyReduce_326 = happySpecReduce_1 132# happyReduction_326-happyReduction_326 happy_x_1- = case happyOut145 happy_x_1 of { happy_var_1 -> - happyIn143- (happy_var_1- )}--happyReduce_327 = happyReduce 4# 133# happyReduction_327-happyReduction_327 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Backslash) -> - case happyOut148 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn144- (Lambda (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (reverse happy_var_2) happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_328 = happyReduce 4# 133# happyReduction_328-happyReduction_328 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_In) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn144- (Let (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_329 = happyReduce 6# 133# happyReduction_329-happyReduction_329 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Then) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Else) -> - case happyOut140 happy_x_6 of { happy_var_6 -> - happyIn144- (If (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 happy_var_6- ) `HappyStk` happyRest}}}}}}--happyReduce_330 = happyReduce 4# 133# happyReduction_330-happyReduction_330 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn144- (Proc (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_331 = happySpecReduce_1 133# happyReduction_331-happyReduction_331 happy_x_1- = case happyOut146 happy_x_1 of { happy_var_1 -> - happyIn144- (happy_var_1- )}--happyReduce_332 = happyReduce 4# 134# happyReduction_332-happyReduction_332 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Of) -> - case happyOut175 happy_x_4 of { happy_var_4 -> - happyIn145- (let (als, inf, ss) = happy_var_4 in Case (nIS happy_var_1 <++> inf <** (happy_var_1:happy_var_3:ss)) happy_var_2 als- ) `HappyStk` happyRest}}}}--happyReduce_333 = happySpecReduce_2 134# happyReduction_333-happyReduction_333 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> - case happyOut147 happy_x_2 of { happy_var_2 -> - happyIn145- (NegApp (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_334 = happySpecReduce_2 134# happyReduction_334-happyReduction_334 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> - case happyOut183 happy_x_2 of { happy_var_2 -> - happyIn145- (let (sts, inf, ss) = happy_var_2 in Do (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts- )}}--happyReduce_335 = happySpecReduce_2 134# happyReduction_335-happyReduction_335 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> - case happyOut183 happy_x_2 of { happy_var_2 -> - happyIn145- (let (sts, inf, ss) = happy_var_2 in MDo (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts- )}}--happyReduce_336 = happySpecReduce_1 134# happyReduction_336-happyReduction_336 happy_x_1- = case happyOut147 happy_x_1 of { happy_var_1 -> - happyIn145- (happy_var_1- )}--happyReduce_337 = happyReduce 4# 135# happyReduction_337-happyReduction_337 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 CORE) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn146- (let Loc l (StringTok (s,_)) = happy_var_2 in CorePragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_338 = happyReduce 4# 135# happyReduction_338-happyReduction_338 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 SCC) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOut140 happy_x_4 of { happy_var_4 -> - happyIn146- (let Loc l (StringTok (s,_)) = happy_var_2 in SCCPragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_339 = happyReduce 11# 135# happyReduction_339-happyReduction_339 (happy_x_11 `HappyStk`- happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 GENERATED) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Colon) -> - case happyOutTok happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (Loc happy_var_6 Minus) -> - case happyOutTok happy_x_7 of { happy_var_7 -> - case happyOutTok happy_x_8 of { (Loc happy_var_8 Colon) -> - case happyOutTok happy_x_9 of { happy_var_9 -> - case happyOutTok happy_x_10 of { (Loc happy_var_10 PragmaEnd) -> - case happyOut140 happy_x_11 of { happy_var_11 -> - happyIn146- (let { Loc l0 (StringTok (s,_)) = happy_var_2;- Loc l1 (IntTok (i1,_)) = happy_var_3;- Loc l2 (IntTok (i2,_)) = happy_var_5;- Loc l3 (IntTok (i3,_)) = happy_var_7;- Loc l4 (IntTok (i4,_)) = happy_var_9}- in GenPragma (nIS happy_var_1 <++> ann happy_var_11 <** [happy_var_1,l0,l1,happy_var_4,l2,happy_var_6,l3,happy_var_8,l4,happy_var_10])- s (fromInteger i1, fromInteger i2)- (fromInteger i3, fromInteger i4) happy_var_11- ) `HappyStk` happyRest}}}}}}}}}}}--happyReduce_340 = happySpecReduce_2 136# happyReduction_340-happyReduction_340 happy_x_2- happy_x_1- = case happyOut147 happy_x_1 of { happy_var_1 -> - case happyOut150 happy_x_2 of { happy_var_2 -> - happyIn147- (App (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2- )}}--happyReduce_341 = happySpecReduce_1 136# happyReduction_341-happyReduction_341 happy_x_1- = case happyOut150 happy_x_1 of { happy_var_1 -> - happyIn147- (happy_var_1- )}--happyReduce_342 = happySpecReduce_2 137# happyReduction_342-happyReduction_342 happy_x_2- happy_x_1- = case happyOut148 happy_x_1 of { happy_var_1 -> - case happyOut149 happy_x_2 of { happy_var_2 -> - happyIn148- (happy_var_2 : happy_var_1- )}}--happyReduce_343 = happySpecReduce_1 137# happyReduction_343-happyReduction_343 happy_x_1- = case happyOut149 happy_x_1 of { happy_var_1 -> - happyIn148- ([happy_var_1]- )}--happyReduce_344 = happyMonadReduce 1# 138# happyReduction_344-happyReduction_344 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut150 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)}- ) (\r -> happyReturn (happyIn149 r))--happyReduce_345 = happyMonadReduce 2# 138# happyReduction_345-happyReduction_345 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}}- ) (\r -> happyReturn (happyIn149 r))--happyReduce_346 = happyMonadReduce 3# 139# happyReduction_346-happyReduction_346 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 At) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1;- return (AsPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}}- ) (\r -> happyReturn (happyIn150 r))--happyReduce_347 = happyMonadReduce 3# 139# happyReduction_347-happyReduction_347 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RPCAt) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1;- return (CAsRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}}- ) (\r -> happyReturn (happyIn150 r))--happyReduce_348 = happySpecReduce_2 139# happyReduction_348-happyReduction_348 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Tilde) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - happyIn150- (IrrPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_349 = happySpecReduce_1 139# happyReduction_349-happyReduction_349 happy_x_1- = case happyOut151 happy_x_1 of { happy_var_1 -> - happyIn150- (happy_var_1- )}--happyReduce_350 = happyMonadReduce 3# 140# happyReduction_350-happyReduction_350 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut151 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]))) $ mkRecConstrOrUpdate happy_var_1 [])}}}- ) (\r -> happyReturn (happyIn151 r))--happyReduce_351 = happyMonadReduce 4# 140# happyReduction_351-happyReduction_351 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut151 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut187 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4]))))- $ mkRecConstrOrUpdate happy_var_1 (reverse (fst happy_var_3)))}}}}- ) (\r -> happyReturn (happyIn151 r))--happyReduce_352 = happyReduce 4# 140# happyReduction_352-happyReduction_352 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurlyBar) -> - case happyOut79 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurlyBar) -> - happyIn151- (ExplTypeArg (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3- ) `HappyStk` happyRest}}}}--happyReduce_353 = happySpecReduce_1 140# happyReduction_353-happyReduction_353 happy_x_1- = case happyOut152 happy_x_1 of { happy_var_1 -> - happyIn151- (happy_var_1- )}--happyReduce_354 = happySpecReduce_1 141# happyReduction_354-happyReduction_354 happy_x_1- = case happyOut196 happy_x_1 of { happy_var_1 -> - happyIn152- (IPVar (ann happy_var_1) happy_var_1- )}--happyReduce_355 = happySpecReduce_1 141# happyReduction_355-happyReduction_355 happy_x_1- = case happyOut195 happy_x_1 of { happy_var_1 -> - happyIn152- (Var (ann happy_var_1) happy_var_1- )}--happyReduce_356 = happySpecReduce_1 141# happyReduction_356-happyReduction_356 happy_x_1- = case happyOut192 happy_x_1 of { happy_var_1 -> - happyIn152- (happy_var_1- )}--happyReduce_357 = happySpecReduce_1 141# happyReduction_357-happyReduction_357 happy_x_1- = case happyOut221 happy_x_1 of { happy_var_1 -> - happyIn152- (Lit (ann happy_var_1) happy_var_1- )}--happyReduce_358 = happySpecReduce_3 141# happyReduction_358-happyReduction_358 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn152- (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2- )}}}--happyReduce_359 = happySpecReduce_3 141# happyReduction_359-happyReduction_359 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOut155 happy_x_3 of { happy_var_3 -> - happyIn152- (TupleSection (happy_var_1 <^^> head (snd happy_var_3) <** happy_var_1:reverse (snd happy_var_3)) (Just happy_var_2 : fst happy_var_3)- )}}}--happyReduce_360 = happyReduce 4# 141# happyReduction_360-happyReduction_360 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOut154 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn152- (TupleSection (happy_var_1 <^^> happy_var_4 <** happy_var_1:reverse (happy_var_4:happy_var_2))- (replicate (length happy_var_2) Nothing ++ [Just happy_var_3])- ) `HappyStk` happyRest}}}}--happyReduce_361 = happyReduce 4# 141# happyReduction_361-happyReduction_361 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOut154 happy_x_3 of { happy_var_3 -> - case happyOut155 happy_x_4 of { happy_var_4 -> - happyIn152- (TupleSection (happy_var_1 <^^> head (snd happy_var_4) <** happy_var_1:reverse (snd happy_var_4 ++ happy_var_2))- (replicate (length happy_var_2) Nothing ++ Just happy_var_3 : fst happy_var_4)- ) `HappyStk` happyRest}}}}--happyReduce_362 = happySpecReduce_3 141# happyReduction_362-happyReduction_362 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOut167 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn152- (amap (\l -> l <** [happy_var_3]) $ happy_var_2 (happy_var_1 <^^> happy_var_3 <** [happy_var_1])- )}}}--happyReduce_363 = happySpecReduce_1 141# happyReduction_363-happyReduction_363 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> - happyIn152- (WildCard (nIS happy_var_1)- )}--happyReduce_364 = happyMonadReduce 3# 141# happyReduction_364-happyReduction_364 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut157 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - ( checkEnabled RegularPatterns >> return (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2))}}}- ) (\r -> happyReturn (happyIn152 r))--happyReduce_365 = happySpecReduce_3 141# happyReduction_365-happyReduction_365 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> - case happyOut156 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RPGuardClose) -> - happyIn152- (SeqRP (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (snd happy_var_2) ++ [happy_var_3])) $ reverse (fst happy_var_2)- )}}}--happyReduce_366 = happyReduce 5# 141# happyReduction_366-happyReduction_366 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Bar) -> - case happyOut173 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RPGuardClose) -> - happyIn152- (GuardRP (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 $ (reverse $ fst happy_var_4)- ) `HappyStk` happyRest}}}}}--happyReduce_367 = happySpecReduce_1 141# happyReduction_367-happyReduction_367 happy_x_1- = case happyOut158 happy_x_1 of { happy_var_1 -> - happyIn152- (happy_var_1- )}--happyReduce_368 = happySpecReduce_1 141# happyReduction_368-happyReduction_368 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn152- (let Loc l (THIdEscape s) = happy_var_1 in SpliceExp (nIS l) $ IdSplice (nIS l) s- )}--happyReduce_369 = happySpecReduce_3 141# happyReduction_369-happyReduction_369 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn152- (SpliceExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ParenSplice (ann happy_var_2) happy_var_2- )}}}--happyReduce_370 = happySpecReduce_3 141# happyReduction_370-happyReduction_370 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THExpQuote) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - happyIn152- (BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ExpBracket (ann happy_var_2) happy_var_2- )}}}--happyReduce_371 = happyMonadReduce 3# 141# happyReduction_371-happyReduction_371 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 THPatQuote) -> - case happyOut141 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - ( do { p <- checkPattern happy_var_2;- return $ BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ PatBracket (ann p) p })}}}- ) (\r -> happyReturn (happyIn152 r))--happyReduce_372 = happySpecReduce_3 141# happyReduction_372-happyReduction_372 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTypQuote) -> - case happyOut88 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - happyIn152- (let l = happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3] in BracketExp l $ TypeBracket l happy_var_2- )}}}--happyReduce_373 = happyReduce 5# 141# happyReduction_373-happyReduction_373 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THDecQuote) -> - case happyOut48 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 THCloseQuote) -> - happyIn152- (let l = happy_var_1 <^^> happy_var_5 <** (happy_var_1:snd happy_var_3 ++ [happy_var_5]) in BracketExp l $ DeclBracket l (fst happy_var_3)- ) `HappyStk` happyRest}}}--happyReduce_374 = happySpecReduce_2 141# happyReduction_374-happyReduction_374 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> - case happyOut195 happy_x_2 of { happy_var_2 -> - happyIn152- (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_375 = happySpecReduce_2 141# happyReduction_375-happyReduction_375 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> - case happyOut198 happy_x_2 of { happy_var_2 -> - happyIn152- (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_376 = happySpecReduce_2 141# happyReduction_376-happyReduction_376 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> - case happyOut227 happy_x_2 of { happy_var_2 -> - happyIn152- (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) (UnQual (ann happy_var_2) happy_var_2)- )}}--happyReduce_377 = happySpecReduce_2 141# happyReduction_377-happyReduction_377 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> - case happyOut85 happy_x_2 of { happy_var_2 -> - happyIn152- (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_378 = happySpecReduce_1 141# happyReduction_378-happyReduction_378 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn152- (let Loc l (THQuasiQuote (n,q)) = happy_var_1 in QuasiQuote (nIS l) n q- )}--happyReduce_379 = happySpecReduce_2 142# happyReduction_379-happyReduction_379 happy_x_2- happy_x_1- = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - happyIn153- (happy_var_2 : happy_var_1- )}}--happyReduce_380 = happySpecReduce_1 142# happyReduction_380-happyReduction_380 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> - happyIn153- ([happy_var_1]- )}--happyReduce_381 = happySpecReduce_1 143# happyReduction_381-happyReduction_381 happy_x_1- = case happyOut140 happy_x_1 of { happy_var_1 -> - happyIn154- (happy_var_1- )}--happyReduce_382 = happySpecReduce_2 143# happyReduction_382-happyReduction_382 happy_x_2- happy_x_1- = case happyOut206 happy_x_1 of { happy_var_1 -> - case happyOut141 happy_x_2 of { happy_var_2 -> - happyIn154- (PreOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2- )}}--happyReduce_383 = happyMonadReduce 3# 143# happyReduction_383-happyReduction_383 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - ( do {checkEnabled ViewPatterns;- return $ ViewPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3})}}}- ) (\r -> happyReturn (happyIn154 r))--happyReduce_384 = happySpecReduce_3 144# happyReduction_384-happyReduction_384 happy_x_3- happy_x_2- happy_x_1- = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOut155 happy_x_3 of { happy_var_3 -> - happyIn155- (let (mes, ss) = happy_var_3 in (replicate (length happy_var_1 - 1) Nothing ++ Just happy_var_2 : mes, ss ++ happy_var_1)- )}}}--happyReduce_385 = happySpecReduce_3 144# happyReduction_385-happyReduction_385 happy_x_3- happy_x_2- happy_x_1- = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOut154 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn155- ((replicate (length happy_var_1 - 1) Nothing ++ [Just happy_var_2], happy_var_3 : happy_var_1)- )}}}--happyReduce_386 = happySpecReduce_2 144# happyReduction_386-happyReduction_386 happy_x_2- happy_x_1- = case happyOut153 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn155- ((replicate (length happy_var_1) Nothing, happy_var_2 : happy_var_1)- )}}--happyReduce_387 = happySpecReduce_3 145# happyReduction_387-happyReduction_387 happy_x_3- happy_x_2- happy_x_1- = case happyOut156 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn156- ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)- )}}}--happyReduce_388 = happySpecReduce_1 145# happyReduction_388-happyReduction_388 happy_x_1- = case happyOut140 happy_x_1 of { happy_var_1 -> - happyIn156- (([happy_var_1],[])- )}--happyReduce_389 = happySpecReduce_3 146# happyReduction_389-happyReduction_389 happy_x_3- happy_x_2- happy_x_1- = case happyOut140 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut157 happy_x_3 of { happy_var_3 -> - happyIn157- (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_390 = happySpecReduce_3 146# happyReduction_390-happyReduction_390 happy_x_3- happy_x_2- happy_x_1- = case happyOut140 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn157- (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_391 = happyMonadReduce 9# 147# happyReduction_391-happyReduction_391 (happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> - case happyOut159 happy_x_6 of { happy_var_6 -> - case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> - case happyOut161 happy_x_8 of { happy_var_8 -> - case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> - ( do { n <- checkEqNames happy_var_2 happy_var_8;- let { cn = reverse happy_var_6;- as = reverse happy_var_3;- l = happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,srcInfoSpan (ann happy_var_8),happy_var_9] };- return $ XTag l n as happy_var_4 cn })}}}}}}}}}- ) (\r -> happyReturn (happyIn158 r))--happyReduce_392 = happyReduce 5# 147# happyReduction_392-happyReduction_392 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut161 happy_x_2 of { happy_var_2 -> - case happyOut164 happy_x_3 of { happy_var_3 -> - case happyOut166 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> - happyIn158- (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4- ) `HappyStk` happyRest}}}}}--happyReduce_393 = happySpecReduce_3 147# happyReduction_393-happyReduction_393 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 XCodeTagOpen) -> - case happyOut140 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 XCodeTagClose) -> - happyIn158- (XExpTag (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2- )}}}--happyReduce_394 = happyReduce 4# 147# happyReduction_394-happyReduction_394 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 XChildTagOpen) -> - case happyOut159 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 XCloseTagOpen) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 XCodeTagClose) -> - happyIn158- (XChildTag (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_3,happy_var_4]) (reverse happy_var_2)- ) `HappyStk` happyRest}}}}--happyReduce_395 = happySpecReduce_2 148# happyReduction_395-happyReduction_395 happy_x_2- happy_x_1- = case happyOut159 happy_x_1 of { happy_var_1 -> - case happyOut160 happy_x_2 of { happy_var_2 -> - happyIn159- (happy_var_2 : happy_var_1- )}}--happyReduce_396 = happySpecReduce_0 148# happyReduction_396-happyReduction_396 = happyIn159- ([]- )--happyReduce_397 = happySpecReduce_1 149# happyReduction_397-happyReduction_397 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn160- (let Loc l (XPCDATA pcd) = happy_var_1 in XPcdata (nIS l) pcd- )}--happyReduce_398 = happySpecReduce_3 149# happyReduction_398-happyReduction_398 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 XRPatOpen) -> - case happyOut156 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 XRPatClose) -> - happyIn160- (XRPats (happy_var_1 <^^> happy_var_3 <** (snd happy_var_2 ++ [happy_var_1,happy_var_3])) $ reverse (fst happy_var_2)- )}}}--happyReduce_399 = happySpecReduce_1 149# happyReduction_399-happyReduction_399 happy_x_1- = case happyOut158 happy_x_1 of { happy_var_1 -> - happyIn160- (happy_var_1- )}--happyReduce_400 = happySpecReduce_3 150# happyReduction_400-happyReduction_400 happy_x_3- happy_x_2- happy_x_1- = case happyOut162 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Colon) -> - case happyOut162 happy_x_3 of { happy_var_3 -> - happyIn161- (let {Loc l1 s1 = happy_var_1; Loc l2 s2 = happy_var_3}- in XDomName (nIS l1 <++> nIS l2 <** [l1,happy_var_2,l2]) s1 s2- )}}}--happyReduce_401 = happySpecReduce_1 150# happyReduction_401-happyReduction_401 happy_x_1- = case happyOut162 happy_x_1 of { happy_var_1 -> - happyIn161- (let Loc l str = happy_var_1 in XName (nIS l) str- )}--happyReduce_402 = happySpecReduce_1 151# happyReduction_402-happyReduction_402 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn162- (let Loc l (VarId s) = happy_var_1 in Loc l s- )}--happyReduce_403 = happySpecReduce_1 151# happyReduction_403-happyReduction_403 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn162- (let Loc l (ConId s) = happy_var_1 in Loc l s- )}--happyReduce_404 = happySpecReduce_1 151# happyReduction_404-happyReduction_404 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn162- (let Loc l (DVarId s) = happy_var_1 in Loc l $ mkDVar s- )}--happyReduce_405 = happySpecReduce_1 151# happyReduction_405-happyReduction_405 happy_x_1- = case happyOut163 happy_x_1 of { happy_var_1 -> - happyIn162- (happy_var_1- )}--happyReduce_406 = happySpecReduce_1 152# happyReduction_406-happyReduction_406 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - happyIn163- (Loc happy_var_1 "type"- )}--happyReduce_407 = happySpecReduce_1 152# happyReduction_407-happyReduction_407 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> - happyIn163- (Loc happy_var_1 "class"- )}--happyReduce_408 = happySpecReduce_1 152# happyReduction_408-happyReduction_408 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - happyIn163- (Loc happy_var_1 "data"- )}--happyReduce_409 = happySpecReduce_1 152# happyReduction_409-happyReduction_409 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - happyIn163- (Loc happy_var_1 "foreign"- )}--happyReduce_410 = happySpecReduce_1 152# happyReduction_410-happyReduction_410 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> - happyIn163- (Loc happy_var_1 "export"- )}--happyReduce_411 = happySpecReduce_1 152# happyReduction_411-happyReduction_411 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn163- (Loc happy_var_1 "safe"- )}--happyReduce_412 = happySpecReduce_1 152# happyReduction_412-happyReduction_412 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn163- (Loc happy_var_1 "unsafe"- )}--happyReduce_413 = happySpecReduce_1 152# happyReduction_413-happyReduction_413 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn163- (Loc happy_var_1 "threadsafe"- )}--happyReduce_414 = happySpecReduce_1 152# happyReduction_414-happyReduction_414 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn163- (Loc happy_var_1 "stdcall"- )}--happyReduce_415 = happySpecReduce_1 152# happyReduction_415-happyReduction_415 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn163- (Loc happy_var_1 "ccall"- )}--happyReduce_416 = happySpecReduce_1 152# happyReduction_416-happyReduction_416 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - happyIn163- (Loc happy_var_1 "as"- )}--happyReduce_417 = happySpecReduce_1 152# happyReduction_417-happyReduction_417 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_By) -> - happyIn163- (Loc happy_var_1 "by"- )}--happyReduce_418 = happySpecReduce_1 152# happyReduction_418-happyReduction_418 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> - happyIn163- (Loc happy_var_1 "case"- )}--happyReduce_419 = happySpecReduce_1 152# happyReduction_419-happyReduction_419 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> - happyIn163- (Loc happy_var_1 "default"- )}--happyReduce_420 = happySpecReduce_1 152# happyReduction_420-happyReduction_420 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - happyIn163- (Loc happy_var_1 "deriving"- )}--happyReduce_421 = happySpecReduce_1 152# happyReduction_421-happyReduction_421 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> - happyIn163- (Loc happy_var_1 "do"- )}--happyReduce_422 = happySpecReduce_1 152# happyReduction_422-happyReduction_422 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Else) -> - happyIn163- (Loc happy_var_1 "else"- )}--happyReduce_423 = happySpecReduce_1 152# happyReduction_423-happyReduction_423 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> - happyIn163- (Loc happy_var_1 "family"- )}--happyReduce_424 = happySpecReduce_1 152# happyReduction_424-happyReduction_424 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - happyIn163- (Loc happy_var_1 "forall"- )}--happyReduce_425 = happySpecReduce_1 152# happyReduction_425-happyReduction_425 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Group) -> - happyIn163- (Loc happy_var_1 "group"- )}--happyReduce_426 = happySpecReduce_1 152# happyReduction_426-happyReduction_426 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn163- (Loc happy_var_1 "hiding"- )}--happyReduce_427 = happySpecReduce_1 152# happyReduction_427-happyReduction_427 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> - happyIn163- (Loc happy_var_1 "if"- )}--happyReduce_428 = happySpecReduce_1 152# happyReduction_428-happyReduction_428 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> - happyIn163- (Loc happy_var_1 "import"- )}--happyReduce_429 = happySpecReduce_1 152# happyReduction_429-happyReduction_429 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_In) -> - happyIn163- (Loc happy_var_1 "in"- )}--happyReduce_430 = happySpecReduce_1 152# happyReduction_430-happyReduction_430 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> - happyIn163- (Loc happy_var_1 "infix"- )}--happyReduce_431 = happySpecReduce_1 152# happyReduction_431-happyReduction_431 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> - happyIn163- (Loc happy_var_1 "infixl"- )}--happyReduce_432 = happySpecReduce_1 152# happyReduction_432-happyReduction_432 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> - happyIn163- (Loc happy_var_1 "infixr"- )}--happyReduce_433 = happySpecReduce_1 152# happyReduction_433-happyReduction_433 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> - happyIn163- (Loc happy_var_1 "instance"- )}--happyReduce_434 = happySpecReduce_1 152# happyReduction_434-happyReduction_434 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - happyIn163- (Loc happy_var_1 "let"- )}--happyReduce_435 = happySpecReduce_1 152# happyReduction_435-happyReduction_435 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> - happyIn163- (Loc happy_var_1 "mdo"- )}--happyReduce_436 = happySpecReduce_1 152# happyReduction_436-happyReduction_436 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - happyIn163- (Loc happy_var_1 "module"- )}--happyReduce_437 = happySpecReduce_1 152# happyReduction_437-happyReduction_437 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> - happyIn163- (Loc happy_var_1 "newtype"- )}--happyReduce_438 = happySpecReduce_1 152# happyReduction_438-happyReduction_438 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Of) -> - happyIn163- (Loc happy_var_1 "of"- )}--happyReduce_439 = happySpecReduce_1 152# happyReduction_439-happyReduction_439 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> - happyIn163- (Loc happy_var_1 "proc"- )}--happyReduce_440 = happySpecReduce_1 152# happyReduction_440-happyReduction_440 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> - happyIn163- (Loc happy_var_1 "rec"- )}--happyReduce_441 = happySpecReduce_1 152# happyReduction_441-happyReduction_441 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - happyIn163- (Loc happy_var_1 "then"- )}--happyReduce_442 = happySpecReduce_1 152# happyReduction_442-happyReduction_442 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Using) -> - happyIn163- (Loc happy_var_1 "using"- )}--happyReduce_443 = happySpecReduce_1 152# happyReduction_443-happyReduction_443 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - happyIn163- (Loc happy_var_1 "where"- )}--happyReduce_444 = happySpecReduce_1 152# happyReduction_444-happyReduction_444 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn163- (Loc happy_var_1 "qualified"- )}--happyReduce_445 = happySpecReduce_2 153# happyReduction_445-happyReduction_445 happy_x_2- happy_x_1- = case happyOut164 happy_x_1 of { happy_var_1 -> - case happyOut165 happy_x_2 of { happy_var_2 -> - happyIn164- (happy_var_2 : happy_var_1- )}}--happyReduce_446 = happySpecReduce_0 153# happyReduction_446-happyReduction_446 = happyIn164- ([]- )--happyReduce_447 = happySpecReduce_3 154# happyReduction_447-happyReduction_447 happy_x_3- happy_x_2- happy_x_1- = case happyOut161 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - happyIn165- (XAttr (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_448 = happySpecReduce_1 155# happyReduction_448-happyReduction_448 happy_x_1- = case happyOut150 happy_x_1 of { happy_var_1 -> - happyIn166- (Just happy_var_1- )}--happyReduce_449 = happySpecReduce_0 155# happyReduction_449-happyReduction_449 = happyIn166- (Nothing- )--happyReduce_450 = happySpecReduce_1 156# happyReduction_450-happyReduction_450 happy_x_1- = case happyOut154 happy_x_1 of { happy_var_1 -> - happyIn167- (\l -> List l [happy_var_1]- )}--happyReduce_451 = happySpecReduce_1 156# happyReduction_451-happyReduction_451 happy_x_1- = case happyOut168 happy_x_1 of { happy_var_1 -> - happyIn167- (\l -> let (ps,ss) = happy_var_1 in List (l <** reverse ss) (reverse ps)- )}--happyReduce_452 = happySpecReduce_2 156# happyReduction_452-happyReduction_452 happy_x_2- happy_x_1- = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> - happyIn167- (\l -> EnumFrom (l <** [happy_var_2]) happy_var_1- )}}--happyReduce_453 = happyReduce 4# 156# happyReduction_453-happyReduction_453 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> - happyIn167- (\l -> EnumFromThen (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3- ) `HappyStk` happyRest}}}}--happyReduce_454 = happySpecReduce_3 156# happyReduction_454-happyReduction_454 happy_x_3- happy_x_2- happy_x_1- = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn167- (\l -> EnumFromTo (l <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_455 = happyReduce 5# 156# happyReduction_455-happyReduction_455 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> - case happyOut140 happy_x_5 of { happy_var_5 -> - happyIn167- (\l -> EnumFromThenTo (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 happy_var_5- ) `HappyStk` happyRest}}}}}--happyReduce_456 = happySpecReduce_3 156# happyReduction_456-happyReduction_456 happy_x_3- happy_x_2- happy_x_1- = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut169 happy_x_3 of { happy_var_3 -> - happyIn167- (\l -> let (stss, ss) = happy_var_3 in ParComp (l <** (happy_var_2:ss)) happy_var_1 (reverse stss)- )}}}--happyReduce_457 = happySpecReduce_3 157# happyReduction_457-happyReduction_457 happy_x_3- happy_x_2- happy_x_1- = case happyOut168 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut154 happy_x_3 of { happy_var_3 -> - happyIn168- (let (es, ss) = happy_var_1 in (happy_var_3 : es, happy_var_2 : ss)- )}}}--happyReduce_458 = happySpecReduce_3 157# happyReduction_458-happyReduction_458 happy_x_3- happy_x_2- happy_x_1- = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut154 happy_x_3 of { happy_var_3 -> - happyIn168- (([happy_var_3,happy_var_1], [happy_var_2])- )}}}--happyReduce_459 = happySpecReduce_3 158# happyReduction_459-happyReduction_459 happy_x_3- happy_x_2- happy_x_1- = case happyOut169 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut170 happy_x_3 of { happy_var_3 -> - happyIn169- (let { (stss, ss1) = happy_var_1;- (sts, ss2) = happy_var_3 }- in (reverse sts : stss, ss1 ++ [happy_var_2] ++ reverse ss2)- )}}}--happyReduce_460 = happySpecReduce_1 158# happyReduction_460-happyReduction_460 happy_x_1- = case happyOut170 happy_x_1 of { happy_var_1 -> - happyIn169- (let (sts, ss) = happy_var_1 in ([reverse sts], reverse ss)- )}--happyReduce_461 = happySpecReduce_3 159# happyReduction_461-happyReduction_461 happy_x_3- happy_x_2- happy_x_1- = case happyOut170 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut171 happy_x_3 of { happy_var_3 -> - happyIn170- (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss)- )}}}--happyReduce_462 = happySpecReduce_1 159# happyReduction_462-happyReduction_462 happy_x_1- = case happyOut171 happy_x_1 of { happy_var_1 -> - happyIn170- (([happy_var_1],[])- )}--happyReduce_463 = happySpecReduce_1 160# happyReduction_463-happyReduction_463 happy_x_1- = case happyOut172 happy_x_1 of { happy_var_1 -> - happyIn171- (happy_var_1- )}--happyReduce_464 = happySpecReduce_1 160# happyReduction_464-happyReduction_464 happy_x_1- = case happyOut174 happy_x_1 of { happy_var_1 -> - happyIn171- (QualStmt (ann happy_var_1) happy_var_1- )}--happyReduce_465 = happySpecReduce_2 161# happyReduction_465-happyReduction_465 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - happyIn172- (ThenTrans (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_466 = happyReduce 4# 161# happyReduction_466-happyReduction_466 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - happyIn172- (ThenBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_467 = happyReduce 4# 161# happyReduction_467-happyReduction_467 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - happyIn172- (GroupBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_468 = happyReduce 4# 161# happyReduction_468-happyReduction_468 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Using) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - happyIn172- (GroupUsing (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4- ) `HappyStk` happyRest}}}}--happyReduce_469 = happyReduce 6# 161# happyReduction_469-happyReduction_469 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Using) -> - case happyOut139 happy_x_6 of { happy_var_6 -> - happyIn172- (GroupByUsing (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_2,happy_var_3,happy_var_5]) happy_var_4 happy_var_6- ) `HappyStk` happyRest}}}}}}--happyReduce_470 = happySpecReduce_3 162# happyReduction_470-happyReduction_470 happy_x_3- happy_x_2- happy_x_1- = case happyOut173 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut174 happy_x_3 of { happy_var_3 -> - happyIn173- (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss)- )}}}--happyReduce_471 = happySpecReduce_1 162# happyReduction_471-happyReduction_471 happy_x_1- = case happyOut174 happy_x_1 of { happy_var_1 -> - happyIn173- (([happy_var_1],[])- )}--happyReduce_472 = happySpecReduce_3 163# happyReduction_472-happyReduction_472 happy_x_3- happy_x_2- happy_x_1- = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> - case happyOut139 happy_x_3 of { happy_var_3 -> - happyIn174- (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_473 = happySpecReduce_1 163# happyReduction_473-happyReduction_473 happy_x_1- = case happyOut139 happy_x_1 of { happy_var_1 -> - happyIn174- (Qualifier (ann happy_var_1) happy_var_1- )}--happyReduce_474 = happySpecReduce_2 163# happyReduction_474-happyReduction_474 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn174- (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_475 = happySpecReduce_3 164# happyReduction_475-happyReduction_475 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut176 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn175- ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])- )}}}--happyReduce_476 = happySpecReduce_3 164# happyReduction_476-happyReduction_476 happy_x_3- happy_x_2- happy_x_1- = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut176 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn175- ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])- )}}}--happyReduce_477 = happySpecReduce_3 165# happyReduction_477-happyReduction_477 happy_x_3- happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut177 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn176- ((reverse $ fst happy_var_2, happy_var_1 ++ snd happy_var_2 ++ happy_var_3)- )}}}--happyReduce_478 = happySpecReduce_3 166# happyReduction_478-happyReduction_478 happy_x_3- happy_x_2- happy_x_1- = case happyOut177 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut178 happy_x_3 of { happy_var_3 -> - happyIn177- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ happy_var_2)- )}}}--happyReduce_479 = happySpecReduce_1 166# happyReduction_479-happyReduction_479 happy_x_1- = case happyOut178 happy_x_1 of { happy_var_1 -> - happyIn177- (([happy_var_1],[])- )}--happyReduce_480 = happySpecReduce_3 167# happyReduction_480-happyReduction_480 happy_x_3- happy_x_2- happy_x_1- = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOut179 happy_x_2 of { happy_var_2 -> - case happyOut134 happy_x_3 of { happy_var_3 -> - happyIn178- (Alt (happy_var_1 <> happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** snd happy_var_3) happy_var_1 happy_var_2 (fst happy_var_3)- )}}}--happyReduce_481 = happySpecReduce_2 168# happyReduction_481-happyReduction_481 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 RightArrow) -> - case happyOut139 happy_x_2 of { happy_var_2 -> - happyIn179- (UnGuardedAlt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_482 = happySpecReduce_1 168# happyReduction_482-happyReduction_482 happy_x_1- = case happyOut180 happy_x_1 of { happy_var_1 -> - happyIn179- (GuardedAlts (snd happy_var_1) (reverse $ fst happy_var_1)- )}--happyReduce_483 = happySpecReduce_2 169# happyReduction_483-happyReduction_483 happy_x_2- happy_x_1- = case happyOut180 happy_x_1 of { happy_var_1 -> - case happyOut181 happy_x_2 of { happy_var_2 -> - happyIn180- ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2)- )}}--happyReduce_484 = happySpecReduce_1 169# happyReduction_484-happyReduction_484 happy_x_1- = case happyOut181 happy_x_1 of { happy_var_1 -> - happyIn180- (([happy_var_1], ann happy_var_1)- )}--happyReduce_485 = happyMonadReduce 4# 170# happyReduction_485-happyReduction_485 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut173 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut139 happy_x_4 of { happy_var_4 -> - ( do { checkPatternGuards (fst happy_var_2);- let {l = nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])};- return (GuardedAlt l (reverse (fst happy_var_2)) happy_var_4) })}}}}- ) (\r -> happyReturn (happyIn181 r))--happyReduce_486 = happyMonadReduce 1# 171# happyReduction_486-happyReduction_486 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut140 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)}- ) (\r -> happyReturn (happyIn182 r))--happyReduce_487 = happyMonadReduce 2# 171# happyReduction_487-happyReduction_487 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}}- ) (\r -> happyReturn (happyIn182 r))--happyReduce_488 = happySpecReduce_3 172# happyReduction_488-happyReduction_488 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut184 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn183- ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])- )}}}--happyReduce_489 = happySpecReduce_3 172# happyReduction_489-happyReduction_489 happy_x_3- happy_x_2- happy_x_1- = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut184 happy_x_2 of { happy_var_2 -> - case happyOut223 happy_x_3 of { happy_var_3 -> - happyIn183- ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])- )}}}--happyReduce_490 = happySpecReduce_2 173# happyReduction_490-happyReduction_490 happy_x_2- happy_x_1- = case happyOut186 happy_x_1 of { happy_var_1 -> - case happyOut185 happy_x_2 of { happy_var_2 -> - happyIn184- ((happy_var_1 : fst happy_var_2, snd happy_var_2)- )}}--happyReduce_491 = happySpecReduce_2 173# happyReduction_491-happyReduction_491 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> - case happyOut184 happy_x_2 of { happy_var_2 -> - happyIn184- ((fst happy_var_2, happy_var_1 : snd happy_var_2)- )}}--happyReduce_492 = happySpecReduce_0 173# happyReduction_492-happyReduction_492 = happyIn184- (([],[])- )--happyReduce_493 = happySpecReduce_2 174# happyReduction_493-happyReduction_493 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> - case happyOut184 happy_x_2 of { happy_var_2 -> - happyIn185- ((fst happy_var_2, happy_var_1 : snd happy_var_2)- )}}--happyReduce_494 = happySpecReduce_0 174# happyReduction_494-happyReduction_494 = happyIn185- (([],[])- )--happyReduce_495 = happySpecReduce_2 175# happyReduction_495-happyReduction_495 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn186- (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2- )}}--happyReduce_496 = happySpecReduce_3 175# happyReduction_496-happyReduction_496 happy_x_3- happy_x_2- happy_x_1- = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> - case happyOut139 happy_x_3 of { happy_var_3 -> - happyIn186- (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_497 = happySpecReduce_1 175# happyReduction_497-happyReduction_497 happy_x_1- = case happyOut139 happy_x_1 of { happy_var_1 -> - happyIn186- (Qualifier (ann happy_var_1) happy_var_1- )}--happyReduce_498 = happySpecReduce_2 175# happyReduction_498-happyReduction_498 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> - case happyOut183 happy_x_2 of { happy_var_2 -> - happyIn186- (let (stms,inf,ss) = happy_var_2 in RecStmt (nIS happy_var_1 <++> inf <** happy_var_1:ss) stms- )}}--happyReduce_499 = happySpecReduce_3 176# happyReduction_499-happyReduction_499 happy_x_3- happy_x_2- happy_x_1- = case happyOut187 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut188 happy_x_3 of { happy_var_3 -> - happyIn187- (let (fbs, ss) = happy_var_1 in (happy_var_3 : fbs, happy_var_2 : ss)- )}}}--happyReduce_500 = happySpecReduce_1 176# happyReduction_500-happyReduction_500 happy_x_1- = case happyOut188 happy_x_1 of { happy_var_1 -> - happyIn187- (([happy_var_1],[])- )}--happyReduce_501 = happySpecReduce_3 177# happyReduction_501-happyReduction_501 happy_x_3- happy_x_2- happy_x_1- = case happyOut195 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn188- (FieldUpdate (happy_var_1 <>happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_502 = happyMonadReduce 1# 177# happyReduction_502-happyReduction_502 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut195 happy_x_1 of { happy_var_1 -> - ( checkEnabled NamedFieldPuns >> checkUnQual happy_var_1 >>= return . FieldPun (ann happy_var_1))}- ) (\r -> happyReturn (happyIn188 r))--happyReduce_503 = happyMonadReduce 1# 177# happyReduction_503-happyReduction_503 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DotDot) -> - ( checkEnabled RecordWildCards >> return (FieldWildcard (nIS happy_var_1)))}- ) (\r -> happyReturn (happyIn188 r))--happyReduce_504 = happySpecReduce_3 178# happyReduction_504-happyReduction_504 happy_x_3- happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut190 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn189- ((reverse (fst happy_var_2), reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)- )}}}--happyReduce_505 = happySpecReduce_3 179# happyReduction_505-happyReduction_505 happy_x_3- happy_x_2- happy_x_1- = case happyOut190 happy_x_1 of { happy_var_1 -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOut191 happy_x_3 of { happy_var_3 -> - happyIn190- ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)- )}}}--happyReduce_506 = happySpecReduce_1 179# happyReduction_506-happyReduction_506 happy_x_1- = case happyOut191 happy_x_1 of { happy_var_1 -> - happyIn190- (([happy_var_1],[])- )}--happyReduce_507 = happySpecReduce_3 180# happyReduction_507-happyReduction_507 happy_x_3- happy_x_2- happy_x_1- = case happyOut196 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut139 happy_x_3 of { happy_var_3 -> - happyIn191- (IPBind (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3- )}}}--happyReduce_508 = happySpecReduce_2 181# happyReduction_508-happyReduction_508 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn192- (p_unit_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])- )}}--happyReduce_509 = happySpecReduce_2 181# happyReduction_509-happyReduction_509 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> - happyIn192- (List (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) []- )}}--happyReduce_510 = happySpecReduce_3 181# happyReduction_510-happyReduction_510 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn192- (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Boxed (length happy_var_2)- )}}}--happyReduce_511 = happySpecReduce_2 181# happyReduction_511-happyReduction_511 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> - happyIn192- (p_unboxed_singleton_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])- )}}--happyReduce_512 = happySpecReduce_3 181# happyReduction_512-happyReduction_512 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn192- (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Unboxed (length happy_var_2)- )}}}--happyReduce_513 = happySpecReduce_1 181# happyReduction_513-happyReduction_513 happy_x_1- = case happyOut198 happy_x_1 of { happy_var_1 -> - happyIn192- (Con (ann happy_var_1) happy_var_1- )}--happyReduce_514 = happySpecReduce_1 182# happyReduction_514-happyReduction_514 happy_x_1- = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn193- (happy_var_1- )}--happyReduce_515 = happySpecReduce_3 182# happyReduction_515-happyReduction_515 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn193- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_516 = happySpecReduce_1 183# happyReduction_516-happyReduction_516 happy_x_1- = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn194- (happy_var_1- )}--happyReduce_517 = happySpecReduce_3 183# happyReduction_517-happyReduction_517 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn194- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_518 = happySpecReduce_1 184# happyReduction_518-happyReduction_518 happy_x_1- = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn195- (happy_var_1- )}--happyReduce_519 = happySpecReduce_3 184# happyReduction_519-happyReduction_519 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut216 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn195- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_520 = happySpecReduce_1 185# happyReduction_520-happyReduction_520 happy_x_1- = case happyOut211 happy_x_1 of { happy_var_1 -> - happyIn196- (happy_var_1- )}--happyReduce_521 = happySpecReduce_1 186# happyReduction_521-happyReduction_521 happy_x_1- = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn197- (happy_var_1- )}--happyReduce_522 = happySpecReduce_3 186# happyReduction_522-happyReduction_522 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut215 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn197- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_523 = happySpecReduce_1 187# happyReduction_523-happyReduction_523 happy_x_1- = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn198- (happy_var_1- )}--happyReduce_524 = happySpecReduce_3 187# happyReduction_524-happyReduction_524 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut207 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn198- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_525 = happySpecReduce_1 188# happyReduction_525-happyReduction_525 happy_x_1- = case happyOut218 happy_x_1 of { happy_var_1 -> - happyIn199- (happy_var_1- )}--happyReduce_526 = happySpecReduce_3 188# happyReduction_526-happyReduction_526 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut210 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn199- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_527 = happySpecReduce_1 189# happyReduction_527-happyReduction_527 happy_x_1- = case happyOut216 happy_x_1 of { happy_var_1 -> - happyIn200- (happy_var_1- )}--happyReduce_528 = happySpecReduce_3 189# happyReduction_528-happyReduction_528 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut208 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn200- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_529 = happySpecReduce_1 190# happyReduction_529-happyReduction_529 happy_x_1- = case happyOut217 happy_x_1 of { happy_var_1 -> - happyIn201- (happy_var_1- )}--happyReduce_530 = happySpecReduce_3 190# happyReduction_530-happyReduction_530 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut208 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn201- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_531 = happySpecReduce_1 191# happyReduction_531-happyReduction_531 happy_x_1- = case happyOut215 happy_x_1 of { happy_var_1 -> - happyIn202- (happy_var_1- )}--happyReduce_532 = happySpecReduce_3 191# happyReduction_532-happyReduction_532 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut213 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn202- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_533 = happySpecReduce_1 192# happyReduction_533-happyReduction_533 happy_x_1- = case happyOut207 happy_x_1 of { happy_var_1 -> - happyIn203- (happy_var_1- )}--happyReduce_534 = happySpecReduce_3 192# happyReduction_534-happyReduction_534 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut212 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn203- (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2- )}}}--happyReduce_535 = happySpecReduce_1 193# happyReduction_535-happyReduction_535 happy_x_1- = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn204- (VarOp (ann happy_var_1) happy_var_1- )}--happyReduce_536 = happySpecReduce_1 193# happyReduction_536-happyReduction_536 happy_x_1- = case happyOut202 happy_x_1 of { happy_var_1 -> - happyIn204- (ConOp (ann happy_var_1) happy_var_1- )}--happyReduce_537 = happySpecReduce_1 194# happyReduction_537-happyReduction_537 happy_x_1- = case happyOut200 happy_x_1 of { happy_var_1 -> - happyIn205- (QVarOp (ann happy_var_1) happy_var_1- )}--happyReduce_538 = happySpecReduce_1 194# happyReduction_538-happyReduction_538 happy_x_1- = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn205- (QConOp (ann happy_var_1) happy_var_1- )}--happyReduce_539 = happySpecReduce_1 195# happyReduction_539-happyReduction_539 happy_x_1- = case happyOut201 happy_x_1 of { happy_var_1 -> - happyIn206- (QVarOp (ann happy_var_1) happy_var_1- )}--happyReduce_540 = happySpecReduce_1 195# happyReduction_540-happyReduction_540 happy_x_1- = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn206- (QConOp (ann happy_var_1) happy_var_1- )}--happyReduce_541 = happySpecReduce_1 196# happyReduction_541-happyReduction_541 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Colon) -> - happyIn207- (list_cons_name (nIS happy_var_1)- )}--happyReduce_542 = happySpecReduce_1 196# happyReduction_542-happyReduction_542 happy_x_1- = case happyOut214 happy_x_1 of { happy_var_1 -> - happyIn207- (happy_var_1- )}--happyReduce_543 = happySpecReduce_1 197# happyReduction_543-happyReduction_543 happy_x_1- = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn208- (UnQual (ann happy_var_1) happy_var_1- )}--happyReduce_544 = happySpecReduce_1 197# happyReduction_544-happyReduction_544 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn208- (let {Loc l (QVarId q) = happy_var_1; nis = nIS l}- in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q))- )}--happyReduce_545 = happySpecReduce_1 198# happyReduction_545-happyReduction_545 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn209- (let Loc l (VarId v) = happy_var_1 in Ident (nIS l) v- )}--happyReduce_546 = happySpecReduce_1 198# happyReduction_546-happyReduction_546 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - happyIn209- (as_name (nIS happy_var_1)- )}--happyReduce_547 = happySpecReduce_1 198# happyReduction_547-happyReduction_547 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn209- (qualified_name (nIS happy_var_1)- )}--happyReduce_548 = happySpecReduce_1 198# happyReduction_548-happyReduction_548 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn209- (hiding_name (nIS happy_var_1)- )}--happyReduce_549 = happySpecReduce_1 198# happyReduction_549-happyReduction_549 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> - happyIn209- (export_name (nIS happy_var_1)- )}--happyReduce_550 = happySpecReduce_1 198# happyReduction_550-happyReduction_550 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn209- (stdcall_name (nIS happy_var_1)- )}--happyReduce_551 = happySpecReduce_1 198# happyReduction_551-happyReduction_551 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn209- (ccall_name (nIS happy_var_1)- )}--happyReduce_552 = happySpecReduce_1 199# happyReduction_552-happyReduction_552 happy_x_1- = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn210- (happy_var_1- )}--happyReduce_553 = happySpecReduce_1 199# happyReduction_553-happyReduction_553 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn210- (safe_name (nIS happy_var_1)- )}--happyReduce_554 = happySpecReduce_1 199# happyReduction_554-happyReduction_554 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn210- (unsafe_name (nIS happy_var_1)- )}--happyReduce_555 = happySpecReduce_1 199# happyReduction_555-happyReduction_555 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn210- (threadsafe_name (nIS happy_var_1)- )}--happyReduce_556 = happySpecReduce_1 200# happyReduction_556-happyReduction_556 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn211- (let Loc l (IDupVarId i) = happy_var_1 in IPDup (nIS l) i- )}--happyReduce_557 = happySpecReduce_1 200# happyReduction_557-happyReduction_557 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn211- (let Loc l (ILinVarId i) = happy_var_1 in IPLin (nIS l) i- )}--happyReduce_558 = happySpecReduce_1 201# happyReduction_558-happyReduction_558 happy_x_1- = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn212- (UnQual (ann happy_var_1) happy_var_1- )}--happyReduce_559 = happySpecReduce_1 201# happyReduction_559-happyReduction_559 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn212- (let {Loc l (QConId q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q))- )}--happyReduce_560 = happySpecReduce_1 202# happyReduction_560-happyReduction_560 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn213- (let Loc l (ConId c) = happy_var_1 in Ident (nIS l) c- )}--happyReduce_561 = happySpecReduce_1 203# happyReduction_561-happyReduction_561 happy_x_1- = case happyOut215 happy_x_1 of { happy_var_1 -> - happyIn214- (UnQual (ann happy_var_1) happy_var_1- )}--happyReduce_562 = happySpecReduce_1 203# happyReduction_562-happyReduction_562 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn214- (let {Loc l (QConSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q))- )}--happyReduce_563 = happySpecReduce_1 204# happyReduction_563-happyReduction_563 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn215- (let Loc l (ConSym c) = happy_var_1 in Symbol (nIS l) c- )}--happyReduce_564 = happySpecReduce_1 205# happyReduction_564-happyReduction_564 happy_x_1- = case happyOut218 happy_x_1 of { happy_var_1 -> - happyIn216- (UnQual (ann happy_var_1) happy_var_1- )}--happyReduce_565 = happySpecReduce_1 205# happyReduction_565-happyReduction_565 happy_x_1- = case happyOut220 happy_x_1 of { happy_var_1 -> - happyIn216- (happy_var_1- )}--happyReduce_566 = happySpecReduce_1 206# happyReduction_566-happyReduction_566 happy_x_1- = case happyOut219 happy_x_1 of { happy_var_1 -> - happyIn217- (UnQual (ann happy_var_1) happy_var_1- )}--happyReduce_567 = happySpecReduce_1 206# happyReduction_567-happyReduction_567 happy_x_1- = case happyOut220 happy_x_1 of { happy_var_1 -> - happyIn217- (happy_var_1- )}--happyReduce_568 = happySpecReduce_1 207# happyReduction_568-happyReduction_568 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn218- (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v- )}--happyReduce_569 = happySpecReduce_1 207# happyReduction_569-happyReduction_569 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> - happyIn218- (minus_name (nIS happy_var_1)- )}--happyReduce_570 = happySpecReduce_1 207# happyReduction_570-happyReduction_570 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn218- (bang_name (nIS happy_var_1)- )}--happyReduce_571 = happySpecReduce_1 207# happyReduction_571-happyReduction_571 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> - happyIn218- (dot_name (nIS happy_var_1)- )}--happyReduce_572 = happySpecReduce_1 207# happyReduction_572-happyReduction_572 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn218- (star_name (nIS happy_var_1)- )}--happyReduce_573 = happySpecReduce_1 208# happyReduction_573-happyReduction_573 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn219- (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v- )}--happyReduce_574 = happySpecReduce_1 208# happyReduction_574-happyReduction_574 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn219- (bang_name (nIS happy_var_1)- )}--happyReduce_575 = happySpecReduce_1 208# happyReduction_575-happyReduction_575 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> - happyIn219- (dot_name (nIS happy_var_1)- )}--happyReduce_576 = happySpecReduce_1 208# happyReduction_576-happyReduction_576 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn219- (star_name (nIS happy_var_1)- )}--happyReduce_577 = happySpecReduce_1 209# happyReduction_577-happyReduction_577 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn220- (let {Loc l (QVarSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q))- )}--happyReduce_578 = happySpecReduce_1 210# happyReduction_578-happyReduction_578 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (IntTok (i,raw)) = happy_var_1 in Int (nIS l) i raw- )}--happyReduce_579 = happySpecReduce_1 210# happyReduction_579-happyReduction_579 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (Character (c,raw)) = happy_var_1 in Char (nIS l) c raw- )}--happyReduce_580 = happySpecReduce_1 210# happyReduction_580-happyReduction_580 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (FloatTok (r,raw)) = happy_var_1 in Frac (nIS l) r raw- )}--happyReduce_581 = happySpecReduce_1 210# happyReduction_581-happyReduction_581 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (StringTok (s,raw)) = happy_var_1 in String (nIS l) s raw- )}--happyReduce_582 = happySpecReduce_1 210# happyReduction_582-happyReduction_582 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (IntTokHash (i,raw)) = happy_var_1 in PrimInt (nIS l) i raw- )}--happyReduce_583 = happySpecReduce_1 210# happyReduction_583-happyReduction_583 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (WordTokHash (w,raw)) = happy_var_1 in PrimWord (nIS l) w raw- )}--happyReduce_584 = happySpecReduce_1 210# happyReduction_584-happyReduction_584 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (FloatTokHash (f,raw)) = happy_var_1 in PrimFloat (nIS l) f raw- )}--happyReduce_585 = happySpecReduce_1 210# happyReduction_585-happyReduction_585 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (DoubleTokHash (d,raw)) = happy_var_1 in PrimDouble (nIS l) d raw- )}--happyReduce_586 = happySpecReduce_1 210# happyReduction_586-happyReduction_586 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (CharacterHash (c,raw)) = happy_var_1 in PrimChar (nIS l) c raw- )}--happyReduce_587 = happySpecReduce_1 210# happyReduction_587-happyReduction_587 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn221- (let Loc l (StringHash (s,raw)) = happy_var_1 in PrimString (nIS l) s raw- )}--happyReduce_588 = happyMonadReduce 0# 211# happyReduction_588-happyReduction_588 (happyRest) tk- = happyThen (( pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -})- ) (\r -> happyReturn (happyIn222 r))--happyReduce_589 = happySpecReduce_1 212# happyReduction_589-happyReduction_589 happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 VRightCurly) -> - happyIn223- (happy_var_1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -}- )}--happyReduce_590 = happyMonadReduce 1# 212# happyReduction_590-happyReduction_590 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (( popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -})- ) (\r -> happyReturn (happyIn223 r))--happyReduce_591 = happySpecReduce_1 213# happyReduction_591-happyReduction_591 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn224- (let Loc l (ConId n) = happy_var_1 in ModuleName (nIS l) n- )}--happyReduce_592 = happySpecReduce_1 213# happyReduction_592-happyReduction_592 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn224- (let Loc l (QConId n) = happy_var_1 in ModuleName (nIS l) (fst n ++ '.':snd n)- )}--happyReduce_593 = happySpecReduce_1 214# happyReduction_593-happyReduction_593 happy_x_1- = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn225- (happy_var_1- )}--happyReduce_594 = happySpecReduce_1 215# happyReduction_594-happyReduction_594 happy_x_1- = case happyOut198 happy_x_1 of { happy_var_1 -> - happyIn226- (happy_var_1- )}--happyReduce_595 = happySpecReduce_1 216# happyReduction_595-happyReduction_595 happy_x_1- = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn227- (happy_var_1- )}--happyReduce_596 = happySpecReduce_3 217# happyReduction_596-happyReduction_596 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut227 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn228- (UnQual (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2- )}}}--happyReduce_597 = happySpecReduce_1 217# happyReduction_597-happyReduction_597 happy_x_1- = case happyOut229 happy_x_1 of { happy_var_1 -> - happyIn228- (UnQual (ann happy_var_1) happy_var_1- )}--happyReduce_598 = happySpecReduce_1 218# happyReduction_598-happyReduction_598 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn229- (let Loc l (VarSym x) = happy_var_1 in Symbol (nIS l) x- )}--happyNewToken action sts stk- = lexer(\tk -> - let cont i = happyDoAction i tk action sts stk in- case tk of {- Loc _ EOF -> happyDoAction 134# tk action sts stk;- Loc _ (VarId _) -> cont 1#;- Loc _ (QVarId _) -> cont 2#;- Loc _ (IDupVarId _) -> cont 3#;- Loc _ (ILinVarId _) -> cont 4#;- Loc _ (ConId _) -> cont 5#;- Loc _ (QConId _) -> cont 6#;- Loc _ (DVarId _) -> cont 7#;- Loc _ (VarSym _) -> cont 8#;- Loc _ (ConSym _) -> cont 9#;- Loc _ (QVarSym _) -> cont 10#;- Loc _ (QConSym _) -> cont 11#;- Loc _ (IntTok _) -> cont 12#;- Loc _ (FloatTok _) -> cont 13#;- Loc _ (Character _) -> cont 14#;- Loc _ (StringTok _) -> cont 15#;- Loc _ (IntTokHash _) -> cont 16#;- Loc _ (WordTokHash _) -> cont 17#;- Loc _ (FloatTokHash _) -> cont 18#;- Loc _ (DoubleTokHash _) -> cont 19#;- Loc _ (CharacterHash _) -> cont 20#;- Loc _ (StringHash _) -> cont 21#;- Loc happy_dollar_dollar LeftParen -> cont 22#;- Loc happy_dollar_dollar RightParen -> cont 23#;- Loc happy_dollar_dollar LeftHashParen -> cont 24#;- Loc happy_dollar_dollar RightHashParen -> cont 25#;- Loc happy_dollar_dollar LeftCurlyBar -> cont 26#;- Loc happy_dollar_dollar RightCurlyBar -> cont 27#;- Loc happy_dollar_dollar SemiColon -> cont 28#;- Loc happy_dollar_dollar LeftCurly -> cont 29#;- Loc happy_dollar_dollar RightCurly -> cont 30#;- Loc happy_dollar_dollar VRightCurly -> cont 31#;- Loc happy_dollar_dollar LeftSquare -> cont 32#;- Loc happy_dollar_dollar RightSquare -> cont 33#;- Loc happy_dollar_dollar Comma -> cont 34#;- Loc happy_dollar_dollar Underscore -> cont 35#;- Loc happy_dollar_dollar BackQuote -> cont 36#;- Loc happy_dollar_dollar Dot -> cont 37#;- Loc happy_dollar_dollar DotDot -> cont 38#;- Loc happy_dollar_dollar Colon -> cont 39#;- Loc happy_dollar_dollar DoubleColon -> cont 40#;- Loc happy_dollar_dollar Equals -> cont 41#;- Loc happy_dollar_dollar Backslash -> cont 42#;- Loc happy_dollar_dollar Bar -> cont 43#;- Loc happy_dollar_dollar LeftArrow -> cont 44#;- Loc happy_dollar_dollar RightArrow -> cont 45#;- Loc happy_dollar_dollar At -> cont 46#;- Loc happy_dollar_dollar Tilde -> cont 47#;- Loc happy_dollar_dollar DoubleArrow -> cont 48#;- Loc happy_dollar_dollar Minus -> cont 49#;- Loc happy_dollar_dollar Exclamation -> cont 50#;- Loc happy_dollar_dollar Star -> cont 51#;- Loc happy_dollar_dollar LeftArrowTail -> cont 52#;- Loc happy_dollar_dollar RightArrowTail -> cont 53#;- Loc happy_dollar_dollar LeftDblArrowTail -> cont 54#;- Loc happy_dollar_dollar RightDblArrowTail -> cont 55#;- Loc happy_dollar_dollar RPGuardOpen -> cont 56#;- Loc happy_dollar_dollar RPGuardClose -> cont 57#;- Loc happy_dollar_dollar RPCAt -> cont 58#;- Loc _ (THIdEscape _) -> cont 59#;- Loc happy_dollar_dollar THParenEscape -> cont 60#;- Loc happy_dollar_dollar THExpQuote -> cont 61#;- Loc happy_dollar_dollar THPatQuote -> cont 62#;- Loc happy_dollar_dollar THTypQuote -> cont 63#;- Loc happy_dollar_dollar THDecQuote -> cont 64#;- Loc happy_dollar_dollar THCloseQuote -> cont 65#;- Loc happy_dollar_dollar THVarQuote -> cont 66#;- Loc happy_dollar_dollar THTyQuote -> cont 67#;- Loc _ (THQuasiQuote _) -> cont 68#;- Loc _ (XPCDATA _) -> cont 69#;- Loc happy_dollar_dollar XStdTagOpen -> cont 70#;- Loc happy_dollar_dollar XCloseTagOpen -> cont 71#;- Loc happy_dollar_dollar XCodeTagOpen -> cont 72#;- Loc happy_dollar_dollar XChildTagOpen -> cont 73#;- Loc happy_dollar_dollar XStdTagClose -> cont 74#;- Loc happy_dollar_dollar XEmptyTagClose -> cont 75#;- Loc happy_dollar_dollar XCodeTagClose -> cont 76#;- Loc happy_dollar_dollar XRPatOpen -> cont 77#;- Loc happy_dollar_dollar XRPatClose -> cont 78#;- Loc happy_dollar_dollar KW_Foreign -> cont 79#;- Loc happy_dollar_dollar KW_Export -> cont 80#;- Loc happy_dollar_dollar KW_Safe -> cont 81#;- Loc happy_dollar_dollar KW_Unsafe -> cont 82#;- Loc happy_dollar_dollar KW_Threadsafe -> cont 83#;- Loc happy_dollar_dollar KW_StdCall -> cont 84#;- Loc happy_dollar_dollar KW_CCall -> cont 85#;- Loc happy_dollar_dollar KW_As -> cont 86#;- Loc happy_dollar_dollar KW_By -> cont 87#;- Loc happy_dollar_dollar KW_Case -> cont 88#;- Loc happy_dollar_dollar KW_Class -> cont 89#;- Loc happy_dollar_dollar KW_Data -> cont 90#;- Loc happy_dollar_dollar KW_Default -> cont 91#;- Loc happy_dollar_dollar KW_Deriving -> cont 92#;- Loc happy_dollar_dollar KW_Do -> cont 93#;- Loc happy_dollar_dollar KW_Else -> cont 94#;- Loc happy_dollar_dollar KW_Family -> cont 95#;- Loc happy_dollar_dollar KW_Forall -> cont 96#;- Loc happy_dollar_dollar KW_Group -> cont 97#;- Loc happy_dollar_dollar KW_Hiding -> cont 98#;- Loc happy_dollar_dollar KW_If -> cont 99#;- Loc happy_dollar_dollar KW_Import -> cont 100#;- Loc happy_dollar_dollar KW_In -> cont 101#;- Loc happy_dollar_dollar KW_Infix -> cont 102#;- Loc happy_dollar_dollar KW_InfixL -> cont 103#;- Loc happy_dollar_dollar KW_InfixR -> cont 104#;- Loc happy_dollar_dollar KW_Instance -> cont 105#;- Loc happy_dollar_dollar KW_Let -> cont 106#;- Loc happy_dollar_dollar KW_MDo -> cont 107#;- Loc happy_dollar_dollar KW_Module -> cont 108#;- Loc happy_dollar_dollar KW_NewType -> cont 109#;- Loc happy_dollar_dollar KW_Of -> cont 110#;- Loc happy_dollar_dollar KW_Proc -> cont 111#;- Loc happy_dollar_dollar KW_Rec -> cont 112#;- Loc happy_dollar_dollar KW_Then -> cont 113#;- Loc happy_dollar_dollar KW_Type -> cont 114#;- Loc happy_dollar_dollar KW_Using -> cont 115#;- Loc happy_dollar_dollar KW_Where -> cont 116#;- Loc happy_dollar_dollar KW_Qualified -> cont 117#;- Loc _ (INLINE _) -> cont 118#;- Loc happy_dollar_dollar INLINE_CONLIKE -> cont 119#;- Loc happy_dollar_dollar SPECIALISE -> cont 120#;- Loc _ (SPECIALISE_INLINE _) -> cont 121#;- Loc happy_dollar_dollar SOURCE -> cont 122#;- Loc happy_dollar_dollar RULES -> cont 123#;- Loc happy_dollar_dollar CORE -> cont 124#;- Loc happy_dollar_dollar SCC -> cont 125#;- Loc happy_dollar_dollar GENERATED -> cont 126#;- Loc happy_dollar_dollar DEPRECATED -> cont 127#;- Loc happy_dollar_dollar WARNING -> cont 128#;- Loc happy_dollar_dollar UNPACK -> cont 129#;- Loc _ (OPTIONS _) -> cont 130#;- Loc happy_dollar_dollar LANGUAGE -> cont 131#;- Loc happy_dollar_dollar ANN -> cont 132#;- Loc happy_dollar_dollar PragmaEnd -> cont 133#;- _ -> happyError' tk- })--happyError_ tk = happyError' tk--happyThen :: () => P a -> (a -> P b) -> P b-happyThen = (>>=)-happyReturn :: () => a -> P a-happyReturn = (return)-happyThen1 = happyThen-happyReturn1 :: () => a -> P a-happyReturn1 = happyReturn-happyError' :: () => Loc Token -> P a-happyError' tk = parseError tk--mparseModule = happySomeParser where- happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut13 x))--mparseExp = happySomeParser where- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut139 x))--mparsePat = happySomeParser where- happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut182 x))--mparseDecl = happySomeParser where- happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut50 x))--mparseType = happySomeParser where- happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut88 x))--mparseStmt = happySomeParser where- happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut186 x))--mparseModules = happySomeParser where- happySomeParser = happyThen (happyParse 6#) (\x -> happyReturn (happyOut11 x))--mfindOptPragmas = happySomeParser where- happySomeParser = happyThen (happyParse 7#) (\x -> happyReturn (happyOut15 x))--happySeq = happyDontSeq---type L = SrcSpanInfo -- just for convenience-type S = SrcSpan--parseError :: Loc Token -> P a-parseError t = fail $ "Parse error: " ++ showToken (unLoc t)--(<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo-a <> b = ann a <++> ann b-infixl 6 <>--nIS = noInfoSpan-iS = infoSpan----- | Parse of a string, which should contain a complete Haskell module.-parseModule :: String -> ParseResult (Module SrcSpanInfo)-parseModule = simpleParse mparseModule---- | Parse of a string containing a complete Haskell module, using an explicit mode.-parseModuleWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)-parseModuleWithMode = modeParse mparseModule---- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-parseModuleWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])-parseModuleWithComments = commentParse mparseModule---- | Parse of a string containing a Haskell expression.-parseExp :: String -> ParseResult (Exp SrcSpanInfo)-parseExp = simpleParse mparseExp---- | Parse of a string containing a Haskell expression, using an explicit mode.-parseExpWithMode :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo)-parseExpWithMode = modeParse mparseExp---- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-parseExpWithComments :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment])-parseExpWithComments = commentParse mparseExp---- | Parse of a string containing a Haskell pattern.-parsePat :: String -> ParseResult (Pat SrcSpanInfo)-parsePat = simpleParse mparsePat---- | Parse of a string containing a Haskell pattern, using an explicit mode.-parsePatWithMode :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo)-parsePatWithMode = modeParse mparsePat---- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-parsePatWithComments :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment])-parsePatWithComments = commentParse mparsePat---- | Parse of a string containing a Haskell top-level declaration.-parseDecl :: String -> ParseResult (Decl SrcSpanInfo)-parseDecl = simpleParse mparseDecl---- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.-parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo)-parseDeclWithMode = modeParse mparseDecl---- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment])-parseDeclWithComments = commentParse mparseDecl---- | Parse of a string containing a Haskell type.-parseType :: String -> ParseResult (Type SrcSpanInfo)-parseType = runParser mparseType---- | Parse of a string containing a Haskell type, using an explicit mode.-parseTypeWithMode :: ParseMode -> String -> ParseResult (Type SrcSpanInfo)-parseTypeWithMode mode = runParserWithMode mode mparseType---- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-parseTypeWithComments :: ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment])-parseTypeWithComments mode str = runParserWithModeComments mode mparseType str---- | Parse of a string containing a Haskell statement.-parseStmt :: String -> ParseResult (Stmt SrcSpanInfo)-parseStmt = runParser mparseStmt---- | Parse of a string containing a Haskell type, using an explicit mode.-parseStmtWithMode :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo)-parseStmtWithMode mode = runParserWithMode mode mparseStmt---- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment])-parseStmtWithComments mode str = runParserWithModeComments mode mparseStmt str---simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L)-simpleParse p = applyFixities preludeFixities <=< runParser p--modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L)-modeParse p mode = applyFixities' (fixities mode) <=< runParserWithMode mode p--commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment])-commentParse p mode str = do (ast, cs) <- runParserWithModeComments mode p str- ast' <- applyFixities' (fixities mode) ast- return (ast', cs)---- | Partial parse of a string starting with a series of top-level option pragmas.-getTopPragmas :: String -> ParseResult [ModulePragma SrcSpanInfo]-getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps)---- | Parse of a string, which should contain a complete Haskell module.-parseModules :: String -> ParseResult [Module SrcSpanInfo]-parseModules = mapM (applyFixities preludeFixities) <=< runParser mparseModules---- | Parse of a string containing a complete Haskell module, using an explicit mode.-parseModulesWithMode :: ParseMode -> String -> ParseResult [Module SrcSpanInfo]-parseModulesWithMode mode = mapM (applyFixities' (fixities mode)) <=< runParserWithMode mode mparseModules---- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-parseModulesWithComments :: ParseMode -> String -> ParseResult ([Module SrcSpanInfo], [Comment])-parseModulesWithComments mode str = do (ast,cs) <- runParserWithModeComments mode mparseModules str- ast' <- mapM (applyFixities' (fixities mode)) ast- return (ast', cs)-applyFixities' :: (AppFixity a) => Maybe [Fixity] -> a L -> ParseResult (a L)-applyFixities' Nothing ast = return ast-applyFixities' (Just fixs) ast = applyFixities fixs ast-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp --{-# LINE 28 "templates/GenericTemplate.hs" #-}---data Happy_IntList = HappyCons Int# Happy_IntList------{-# LINE 49 "templates/GenericTemplate.hs" #-}--{-# LINE 59 "templates/GenericTemplate.hs" #-}--{-# LINE 68 "templates/GenericTemplate.hs" #-}--infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is 0#, it means we've just accepted a partial--- parse (a %partial parser). We must ignore the saved token on the top of--- the stack in this case.-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =- happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st- = {- nothing -}--- case action of- 0# -> {- nothing -}- happyFail i tk st- -1# -> {- nothing -}- happyAccept i tk st- n | (n <# (0# :: Int#)) -> {- nothing -}-- (happyReduceArr ! rule) i tk st- where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))- n -> {- nothing -}--- happyShift new_state i tk st- where new_state = (n -# (1# :: Int#))- where off = indexShortOffAddr happyActOffsets st- off_i = (off +# i)- check = if (off_i >=# (0# :: Int#))- then (indexShortOffAddr happyCheck off_i ==# i)- else False- action | check = indexShortOffAddr happyTable off_i- | otherwise = indexShortOffAddr happyDefActions st--{-# LINE 127 "templates/GenericTemplate.hs" #-}---indexShortOffAddr (HappyA# arr) off =-#if __GLASGOW_HASKELL__ > 500- narrow16Int# i-#elif __GLASGOW_HASKELL__ == 500- intToInt16# i-#else- (i `iShiftL#` 16#) `iShiftRA#` 16#-#endif- where-#if __GLASGOW_HASKELL__ >= 503- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)-#else- i = word2Int# ((high `shiftL#` 8#) `or#` low)-#endif- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- low = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 2#------data HappyAddr = HappyA# Addr#------------------------------------------------------------------------------------- HappyState data type (not arrays)--{-# LINE 170 "templates/GenericTemplate.hs" #-}---------------------------------------------------------------------------------- Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =- let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in--- trace "shifting the error token" $- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')- = let r = fn v1 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')- = let r = fn v1 v2 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')- = let r = fn v1 v2 v3 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyReduce k nt fn j tk st sts stk- = case happyDrop (k -# (1# :: Int#)) sts of- sts1@((HappyCons (st1@(action)) (_))) ->- let r = fn stk in -- it doesn't hurt to always seq here...- happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))- where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk--happyMonad2Reduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))- where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk-- off = indexShortOffAddr happyGotoOffsets st1- off_i = (off +# nt)- new_state = indexShortOffAddr happyTable off_i-----happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st = - {- nothing -}- happyDoAction j tk new_state- where off = indexShortOffAddr happyGotoOffsets st- off_i = (off +# nt)- new_state = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (0# is the error token)---- parse error if we are in recovery and we fail again-happyFail 0# tk old_st _ stk =--- trace "failing" $ - happyError_ tk--{- We don't need state discarding for our restricted implementation of- "error". In fact, it can cause some bogus parses, so I've disabled it- for now --SDM---- discard a state-happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) =--- trace ("discarding state, depth " ++ show (length stk)) $- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,--- save the old token and carry on.-happyFail i tk (action) sts stk =--- trace "entering error recovery" $- happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll = error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Int# -> a -> a-happyTcHack x y = y-{-# INLINE happyTcHack #-}----------------------------------------------------------------------------------- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq--- otherwise it emits--- happySeq = happyDontSeq--happyDoSeq, happyDontSeq :: a -> b -> b-happyDoSeq a b = a `seq` b-happyDontSeq a b = b---------------------------------------------------------------------------------- Don't inline any functions from the template. GHC has a nasty habit--- of deciding to inline happyGoto everywhere, which increases the size of--- the generated parser quite a bit.---{-# NOINLINE happyDoAction #-}-{-# NOINLINE happyTable #-}-{-# NOINLINE happyCheck #-}-{-# NOINLINE happyActOffsets #-}-{-# NOINLINE happyGotoOffsets #-}-{-# NOINLINE happyDefActions #-}--{-# NOINLINE happyShift #-}-{-# NOINLINE happySpecReduce_0 #-}-{-# NOINLINE happySpecReduce_1 #-}-{-# NOINLINE happySpecReduce_2 #-}-{-# NOINLINE happySpecReduce_3 #-}-{-# NOINLINE happyReduce #-}-{-# NOINLINE happyMonadReduce #-}-{-# NOINLINE happyGoto #-}-{-# NOINLINE happyFail #-}---- end of Happy Template.
haskell-src-exts.cabal view
@@ -1,140 +1,99 @@ Name: haskell-src-exts-Version: 1.11.1+Version: 1.24.0 License: BSD3 License-File: LICENSE+Build-Type: Simple Author: Niklas Broberg-Maintainer: Niklas Broberg <d00nibro@chalmers.se>+Maintainer: Dan Burton <danburton.email@gmail.com> Category: Language Synopsis: Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer Description: Haskell-Source with Extensions (HSE, haskell-src-exts)- is an extension of the standard haskell-src package,- and handles most registered syntactic extensions to Haskell, including:- .- * Multi-parameter type classes with functional dependencies- .- * Indexed type families (including associated types)- .- * Empty data declarations- .- * GADTs- .- * Implicit parameters- .- * Template Haskell+ is a standalone parser for Haskell. In addition to+ standard Haskell, all extensions implemented in GHC are supported. .- and a few more. All extensions implemented in GHC are supported. Apart from these standard extensions, it also handles regular patterns as per the HaRP extension as well as HSX-style embedded XML syntax.-Homepage: http://code.haskell.org/haskell-src-exts+Homepage: https://github.com/haskell-suite/haskell-src-exts+Bug-Reports: https://github.com/haskell-suite/haskell-src-exts/issues Stability: Stable-Tested-with: GHC==6.10.2, GHC==6.10.4, GHC==6.12.3-Build-Type: Custom-Cabal-Version: >= 1.2-Extra-Source-Files:- CHANGELOG- Test/Runner.hs- Test/failing.txt- Test/printFail.txt- Test/examples/ArrowLayout.hs- Test/examples/Attributes.hs- Test/examples/BangPatterns.hs- Test/examples/Bug.hs- Test/examples/ByteStringUtils.hs- Test/examples/CParser.hs- Test/examples/ClassInstType.hs- Test/examples/DataHeadParen.hs- Test/examples/Directory.hs- Test/examples/EmptyAnn.hs- Test/examples/EmptyContext.hs- Test/examples/EmptyInstance.hs- Test/examples/EmptyList.hs- Test/examples/Ex1.hs- Test/examples/FamilyKindSig.hs- Test/examples/FixityTests.hs- Test/examples/ForeignImport.hs- Test/examples/GadtDeriving.hs- Test/examples/GenericTree.hs- Test/examples/GhcDeriving.hs- Test/examples/GroupKeyword.hs- Test/examples/HappyDoAction.hs- Test/examples/HaskellParser.hs- Test/examples/HexPrec.hs- Test/examples/Hyphen.hs- Test/examples/ImportSymbol.hs- Test/examples/IndentedWhere.hs- Test/examples/InfixParser.hs- Test/examples/LanguagePragma.hs- Test/examples/LineOptionsPragma.hs- Test/examples/LinePragma.hs- Test/examples/ListComp1.hs- Test/examples/MagicHash.hs- Test/examples/MultiCtxt.hs- Test/examples/NPlusK.hs- Test/examples/NestedAsPat.hs- Test/examples/PackageImport.hs- Test/examples/ParenFunBind.hs- Test/examples/Pragma.hs- Test/examples/QualifiedDot.hs- Test/examples/QuasiQuoteLines.hs- Test/examples/Rank2Types.hs- Test/examples/ReadP.hs- Test/examples/RealGHC.lhs- Test/examples/RealHSE.hs- Test/examples/RealHoogle.hs- Test/examples/RealTagSoup.hs- Test/examples/RecordInfixSelector.hs- Test/examples/RecordWildcards.hs- Test/examples/RelaxedDo.hs- Test/examples/SCCPragmas.hs- Test/examples/ScopedTypeVariables.hs- Test/examples/SimpleDeriving.hs- Test/examples/SingleClassAsst.hs- Test/examples/SpecializeInstance.hs- Test/examples/Testing.hs- Test/examples/TupleSections.hs- Test/examples/TypeFunctions.hs- Test/examples/TypeOperatorsTest.hs- Test/examples/Unicode.hs- Test/examples/UnicodeSyntax.hs- Test/examples/UnindentedPragmaClose.hs- Test/examples/WhereBlock.hs- Test/examples/WithKeyword.hs+Cabal-Version: >= 1.10+Tested-With: GHC == 9.14.1 -Flag base4+Extra-Source-Files:+ README.md+ CHANGELOG+ RELEASENOTES-1.17.0+ tests/examples/*.hs+ tests/examples/*.lhs+ tests/examples/*.hs.parser.golden+ tests/examples/*.lhs.parser.golden+ tests/examples/*.hs.exactprinter.golden+ tests/examples/*.lhs.exactprinter.golden+ tests/examples/*.hs.prettyprinter.golden+ tests/examples/*.lhs.prettyprinter.golden+ tests/examples/*.hs.prettyparser.golden+ tests/examples/*.lhs.prettyparser.golden+ tests/Runner.hs+ tests/Extensions.hs Library- Build-Tools: happy >= 1.17- Build-Depends: array >= 0.1, pretty >= 1.0, cpphs >= 1.3- if flag(base4)- Build-depends: base >= 4 && < 5- cpp-options: -DBASE4- else- Build-depends: base >= 3 && < 4-+ Default-language: Haskell98+ Build-Tools: happy >= 1.19+ Build-Depends: array >= 0.1 && < 0.6,+ pretty >= 1.0 && < 1.2,+ base >= 4.5 && < 5,+ -- this is needed to access GHC.Generics on GHC 7.4+ ghc-prim < 0.14+ -- this is needed to access Data.Semigroup and Control.Monad.Fail on GHCs+ -- before 8.0+ if !impl(ghc >= 8.0)+ Build-Depends:+ semigroups >= 0.18.3 && < 0.21,+ fail == 4.9.* Exposed-modules: Language.Haskell.Exts,- Language.Haskell.Exts.Parser,+ Language.Haskell.Exts.Lexer, Language.Haskell.Exts.Pretty,- Language.Haskell.Exts.Syntax, Language.Haskell.Exts.Extension, Language.Haskell.Exts.Build,- Language.Haskell.Exts.Fixity,- Language.Haskell.Exts.Comments, Language.Haskell.Exts.SrcLoc,- - Language.Haskell.Exts.Annotated,- Language.Haskell.Exts.Annotated.Syntax,- Language.Haskell.Exts.Annotated.Fixity,- Language.Haskell.Exts.Annotated.Build,- Language.Haskell.Exts.Annotated.ExactPrint,- Language.Haskell.Exts.Annotated.Simplify + Language.Haskell.Exts.Syntax,+ Language.Haskell.Exts.Fixity,+ Language.Haskell.Exts.ExactPrint,+ Language.Haskell.Exts.Parser,+ Language.Haskell.Exts.Comments+ Other-modules: Language.Haskell.Exts.ExtScheme,- Language.Haskell.Exts.ParseMonad, Language.Haskell.Exts.ParseSyntax,- Language.Haskell.Exts.Lexer,+ Language.Haskell.Exts.InternalLexer, Language.Haskell.Exts.ParseUtils, Language.Haskell.Exts.InternalParser+ Language.Preprocessor.Unlit Hs-source-dirs: src+ Ghc-options: -Wall++Source-Repository head+ Type: git+ Location: https://github.com/haskell-suite/haskell-src-exts.git++Test-Suite test+ type: exitcode-stdio-1.0+ hs-source-dirs: tests+ main-is: Runner.hs+ other-modules: Extensions+ GHC-Options: -threaded -Wall+ Default-language: Haskell2010+ Build-depends: base,+ mtl,+ containers,+ haskell-src-exts,+ smallcheck >= 1.0,+ tasty >= 0.3,+ tasty-smallcheck,+ tasty-golden >= 2.2.2,+ filepath,+ directory,+ pretty-show >= 1.6.16
src/Language/Haskell/Exts.hs view
@@ -17,16 +17,20 @@ -- * Re-exported modules module Language.Haskell.Exts.Syntax , module Language.Haskell.Exts.Build- , module Language.Haskell.Exts.Parser+ , module Language.Haskell.Exts.Lexer , module Language.Haskell.Exts.Pretty- , module Language.Haskell.Exts.Extension , module Language.Haskell.Exts.Fixity+ , module Language.Haskell.Exts.ExactPrint+ , module Language.Haskell.Exts.SrcLoc , module Language.Haskell.Exts.Comments+ , module Language.Haskell.Exts.Extension+ , module Language.Haskell.Exts.Parser -- * Parsing of Haskell source files , parseFile , parseFileWithMode , parseFileWithExts , parseFileWithComments+ , parseFileWithCommentsAndPragmas , parseFileContents , parseFileContentsWithMode , parseFileContentsWithExts@@ -36,75 +40,114 @@ ) where import Language.Haskell.Exts.Build-import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.Comments import Language.Haskell.Exts.Parser+import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.Lexer ( lexTokenStream, lexTokenStreamWithMode, Token(..) ) import Language.Haskell.Exts.Pretty-import Language.Haskell.Exts.Extension import Language.Haskell.Exts.Fixity-import Language.Haskell.Exts.Comments+import Language.Haskell.Exts.ExactPrint+import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.Extension import Data.List+import Data.Maybe (fromMaybe) import Language.Preprocessor.Unlit+import System.IO -- | Parse a source file on disk, using the default parse mode.-parseFile :: FilePath -> IO (ParseResult Module)+parseFile :: FilePath -> IO (ParseResult (Module SrcSpanInfo)) parseFile fp = parseFileWithMode (defaultParseMode { parseFilename = fp }) fp -- | Parse a source file on disk, with an extra set of extensions to know about -- on top of what the file itself declares.-parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult Module)-parseFileWithExts exts fp = parseFileWithMode (defaultParseMode { extensions = exts, parseFilename = fp }) fp+parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult (Module SrcSpanInfo))+parseFileWithExts exts fp =+ parseFileWithMode (defaultParseMode {+ extensions = exts,+ parseFilename = fp }) fp -- | Parse a source file on disk, supplying a custom parse mode.-parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult Module)-parseFileWithMode p fp = readFile fp >>= (return . parseFileContentsWithMode p)+parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo))+parseFileWithMode p fp = readUTF8File fp >>= return . parseFileContentsWithMode p --- | Parse a source file on disk, supplying a custom parse mode, and retaining comments.-parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module, [Comment]))-parseFileWithComments p fp = readFile fp >>= (return . parseFileContentsWithComments p)+parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))+parseFileWithComments p fp = readUTF8File fp >>= return . parseFileContentsWithComments p +-- | Parse a source file on disk, supplying a custom parse mode, and retaining comments+-- as well as unknown pragmas.+parseFileWithCommentsAndPragmas+ :: ParseMode -> FilePath+ -> IO (ParseResult (Module SrcSpanInfo, [Comment], [UnknownPragma]))+parseFileWithCommentsAndPragmas p fp =+ readUTF8File fp >>= return . parseFileContentsWithCommentsAndPragmas p++-- | Parse a source file from a string using a custom parse mode retaining comments+-- as well as unknown pragmas.+parseFileContentsWithCommentsAndPragmas+ :: ParseMode -> String+ -> ParseResult (Module SrcSpanInfo, [Comment], [UnknownPragma])+parseFileContentsWithCommentsAndPragmas pmode str = separatePragmas parseResult+ where parseResult = parseFileContentsWithComments pmode str+ -- | Parse a source file from a string using the default parse mode.-parseFileContents :: String -> ParseResult Module+parseFileContents :: String -> ParseResult (Module SrcSpanInfo) parseFileContents = parseFileContentsWithMode defaultParseMode -- | Parse a source file from a string, with an extra set of extensions to know about -- on top of what the file itself declares.-parseFileContentsWithExts :: [Extension] -> String -> ParseResult Module-parseFileContentsWithExts exts = parseFileContentsWithMode (defaultParseMode { extensions = exts })+parseFileContentsWithExts :: [Extension] -> String -> ParseResult (Module SrcSpanInfo)+parseFileContentsWithExts exts =+ parseFileContentsWithMode (defaultParseMode { extensions = exts }) -- | Parse a source file from a string using a custom parse mode.-parseFileContentsWithMode :: ParseMode -> String -> ParseResult Module-parseFileContentsWithMode p@(ParseMode fn exts ign _ _) rawStr =+parseFileContentsWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)+parseFileContentsWithMode p@(ParseMode fn oldLang exts ign _ _ _) rawStr = let md = delit fn $ ppContents rawStr- allExts = -- impliesExts $ - case (ign, readExtensions md) of- (False,Just es) -> exts ++ es- _ -> exts- in parseWithMode (p { extensions = allExts }) md+ (bLang, extraExts) =+ case (ign, readExtensions md) of+ (False, Just (mLang, es)) ->+ (fromMaybe oldLang mLang, es)+ _ -> (oldLang, [])+ in -- trace (fn ++ ": " ++ show extraExts) $+ parseModuleWithMode (p { baseLanguage = bLang, extensions = exts ++ extraExts }) md --- | Parse a source file from a string using a custom parse mode and retaining comments.-parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])-parseFileContentsWithComments p@(ParseMode fn exts ign _ _) rawStr =+parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])+parseFileContentsWithComments p@(ParseMode fn oldLang exts ign _ _ _) rawStr = let md = delit fn $ ppContents rawStr- allExts = impliesExts $ case (ign, readExtensions md) of- (False,Just es) -> exts ++ es- _ -> exts- in parseWithComments (p { extensions = allExts }) md-+ (bLang, extraExts) =+ case (ign, readExtensions md) of+ (False, Just (mLang, es)) ->+ (fromMaybe oldLang mLang, es)+ _ -> (oldLang, [])+ in parseModuleWithComments (p { baseLanguage = bLang, extensions = exts ++ extraExts }) md -- | Gather the extensions declared in LANGUAGE pragmas -- at the top of the file. Returns 'Nothing' if the -- parse of the pragmas fails.-readExtensions :: String -> Maybe [Extension]+readExtensions :: String -> Maybe (Maybe Language, [Extension]) readExtensions str = case getTopPragmas str of- ParseOk pgms -> Just (concatMap getExts pgms)+ ParseOk pgms -> extractLang $ concatMap getExts pgms _ -> Nothing- where getExts :: ModulePragma -> [Extension]+ where getExts :: ModulePragma l -> [Either Language Extension] getExts (LanguagePragma _ ns) = map readExt ns getExts _ = [] - readExt (Ident e) = classifyExtension e+ readExt (Ident _ e) =+ case classifyLanguage e of+ UnknownLanguage _ -> Right $ classifyExtension e+ lang -> Left lang+ readExt Symbol {} = error "readExt: Symbol" + extractLang = extractLang' Nothing []++ extractLang' lacc eacc [] = Just (lacc, eacc)+ extractLang' Nothing eacc (Left l : rest) = extractLang' (Just l) eacc rest+ extractLang' (Just l1) eacc (Left l2:rest)+ | l1 == l2 = extractLang' (Just l1) eacc rest+ | otherwise = Nothing+ extractLang' lacc eacc (Right ext : rest) = extractLang' lacc (ext:eacc) rest+ ppContents :: String -> String ppContents = unlines . f . lines where f (('#':_):rest) = rest@@ -112,3 +155,26 @@ delit :: String -> String -> String delit fn = if ".lhs" `isSuffixOf` fn then unlit fn else id++readUTF8File :: FilePath -> IO String+readUTF8File fp = do+ h <- openFile fp ReadMode+ hSetEncoding h utf8+ c <- hGetContents h >>= \s -> length s `seq` return s+ hClose h+ return c++-- | Converts a parse result with comments to a parse result with comments and+-- unknown pragmas.+separatePragmas :: ParseResult (Module SrcSpanInfo, [Comment])+ -> ParseResult (Module SrcSpanInfo, [Comment], [UnknownPragma])+separatePragmas r =+ case r of+ ParseOk (m, comments) ->+ let (pragmas, comments') = partition pragLike comments+ in ParseOk (m, comments', map commentToPragma pragmas)+ where commentToPragma (Comment _ l s) =+ UnknownPragma l $ init $ drop 1 s+ pragLike (Comment b _ s) = b && pcond s+ pcond s = length s > 1 && take 1 s == "#" && last s == '#'+ ParseFailed l s -> ParseFailed l s
− src/Language/Haskell/Exts/Annotated.hs
@@ -1,124 +0,0 @@--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts--- Copyright : (c) Niklas Broberg 2004-2009--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ An umbrella module for the various functionality--- of the package. Also provides some convenient--- functionality for dealing directly with source files.----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated (- -- * Re-exported modules- module Language.Haskell.Exts.Annotated.Syntax- , module Language.Haskell.Exts.Annotated.Build- , module Language.Haskell.Exts.Parser- , module Language.Haskell.Exts.Pretty- , module Language.Haskell.Exts.Annotated.Fixity- , module Language.Haskell.Exts.Annotated.ExactPrint- , module Language.Haskell.Exts.SrcLoc- , module Language.Haskell.Exts.Comments- , module Language.Haskell.Exts.Extension- -- * Parsing of Haskell source files- , parseFile- , parseFileWithMode- , parseFileWithExts- , parseFileWithComments- , parseFileContents- , parseFileContentsWithMode- , parseFileContentsWithExts- , parseFileContentsWithComments- -- * Parsing of Haskell source elements,- , parseModule, parseModuleWithMode, parseModuleWithComments- , parseExp, parseExpWithMode, parseExpWithComments- , parseStmt, parseStmtWithMode, parseStmtWithComments- , parsePat, parsePatWithMode, parsePatWithComments- , parseDecl, parseDeclWithMode, parseDeclWithComments- , parseType, parseTypeWithMode, parseTypeWithComments- -- * Read extensions declared in LANGUAGE pragmas- , readExtensions- ) where--import Language.Haskell.Exts.Annotated.Build-import Language.Haskell.Exts.Annotated.Syntax-import Language.Haskell.Exts.Parser ( Parseable(..), ParseResult(..), fromParseResult, ParseMode(..), defaultParseMode )-import Language.Haskell.Exts.Pretty-import Language.Haskell.Exts.Annotated.Fixity-import Language.Haskell.Exts.Annotated.ExactPrint-import Language.Haskell.Exts.SrcLoc-import Language.Haskell.Exts.Extension-import Language.Haskell.Exts.Comments--import Language.Haskell.Exts.InternalParser--import Data.List-import Language.Preprocessor.Unlit---- | Parse a source file on disk, using the default parse mode.-parseFile :: FilePath -> IO (ParseResult (Module SrcSpanInfo))-parseFile fp = parseFileWithMode (defaultParseMode { parseFilename = fp }) fp---- | Parse a source file on disk, with an extra set of extensions to know about--- on top of what the file itself declares.-parseFileWithExts :: [Extension] -> FilePath -> IO (ParseResult (Module SrcSpanInfo))-parseFileWithExts exts fp = parseFileWithMode (defaultParseMode { extensions = exts, parseFilename = fp }) fp---- | Parse a source file on disk, supplying a custom parse mode.-parseFileWithMode :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo))-parseFileWithMode p fp = readFile fp >>= (return . parseFileContentsWithMode p)--parseFileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))-parseFileWithComments p fp = readFile fp >>= (return . parseFileContentsWithComments p)---- | Parse a source file from a string using the default parse mode.-parseFileContents :: String -> ParseResult (Module SrcSpanInfo)-parseFileContents = parseFileContentsWithMode defaultParseMode---- | Parse a source file from a string, with an extra set of extensions to know about--- on top of what the file itself declares.-parseFileContentsWithExts :: [Extension] -> String -> ParseResult (Module SrcSpanInfo)-parseFileContentsWithExts exts = parseFileContentsWithMode (defaultParseMode { extensions = exts })---- | Parse a source file from a string using a custom parse mode.-parseFileContentsWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)-parseFileContentsWithMode p@(ParseMode fn exts ign _ _) rawStr =- let md = delit fn $ ppContents rawStr- allExts = -- impliesExts $ - case (ign, readExtensions md) of- (False,Just es) -> exts ++ es- _ -> exts- in parseModuleWithMode (p { extensions = allExts }) md--parseFileContentsWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])-parseFileContentsWithComments p@(ParseMode fn exts ign _ _) rawStr =- let md = delit fn $ ppContents rawStr- allExts = impliesExts $ case (ign, readExtensions md) of- (False,Just es) -> exts ++ es- _ -> exts- in parseModuleWithComments (p { extensions = allExts }) md---- | Gather the extensions declared in LANGUAGE pragmas--- at the top of the file. Returns 'Nothing' if the--- parse of the pragmas fails.-readExtensions :: String -> Maybe [Extension]-readExtensions str = case getTopPragmas str of- ParseOk pgms -> Just (concatMap getExts pgms)- _ -> Nothing- where getExts :: ModulePragma l -> [Extension]- getExts (LanguagePragma _ ns) = map readExt ns- getExts _ = []-- readExt (Ident _ e) = classifyExtension e--ppContents :: String -> String-ppContents = unlines . f . lines- where f (('#':_):rest) = rest- f x = x--delit :: String -> String -> String-delit fn = if ".lhs" `isSuffixOf` fn then unlit fn else id
− src/Language/Haskell/Exts/Annotated/Build.hs
@@ -1,290 +0,0 @@--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Annotated.Build--- Copyright : (c) The GHC Team, 1997-2000,--- (c) Niklas Broberg 2004--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : experimental--- Portability : portable------ This module contains combinators to use when building--- Haskell source trees programmatically, as opposed to--- parsing them from a string. The contents here are quite--- experimental and will likely receive a lot of attention--- when the rest has stabilised.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated.Build (-- -- * Syntax building functions- name, -- :: String -> Name- sym, -- :: String -> Name- var, -- :: Name -> Exp- op, -- :: Name -> QOp- qvar, -- :: Module -> Name -> Exp- pvar, -- :: Name -> Pat- app, -- :: Exp -> Exp -> Exp- infixApp, -- :: Exp -> QOp -> Exp -> Exp- appFun, -- :: Exp -> [Exp] -> Exp- pApp, -- :: Name -> [Pat] -> Pat- tuple, -- :: [Exp] -> Exp- pTuple, -- :: [Pat] -> Pat- varTuple, -- :: [Name] -> Exp- pvarTuple, -- :: [Name] -> Pat- function, -- :: String -> Exp- strE, -- :: String -> Exp- charE, -- :: Char -> Exp- intE, -- :: Integer -> Exp- strP, -- :: String -> Pat- charP, -- :: Char -> Pat- intP, -- :: Integer -> Pat- doE, -- :: [Stmt] -> Exp- lamE, -- :: SrcLoc -> [Pat] -> Exp -> Exp- letE, -- :: [Decl] -> Exp -> Exp- caseE, -- :: Exp -> [Alt] -> Exp- alt, -- :: SrcLoc -> Pat -> Exp -> Alt- altGW, -- :: SrcLoc -> Pat -> [Stmt] -> Exp -> Binds -> Alt- listE, -- :: [Exp] -> Exp- eList, -- :: Exp- peList, -- :: Pat- paren, -- :: Exp -> Exp- pParen, -- :: Pat -> Pat- qualStmt, -- :: Exp -> Stmt- genStmt, -- :: SrcLoc -> Pat -> Exp -> Stmt- letStmt, -- :: [Decl] -> Stmt- binds, -- :: [Decl] -> Binds- noBinds, -- :: Binds- wildcard, -- :: Pat- genNames, -- :: String -> Int -> [Name]-- -- * More advanced building- sfun, -- :: SrcLoc -> Name -> [Name] -> Rhs -> Binds -> Decl- simpleFun, -- :: SrcLoc -> Name -> Name -> Exp -> Decl- patBind, -- :: SrcLoc -> Pat -> Exp -> Decl- patBindWhere, -- :: SrcLoc -> Pat -> Exp -> [Decl] -> Decl- nameBind, -- :: SrcLoc -> Name -> Exp -> Decl- metaFunction, -- :: String -> [Exp] -> Exp- metaConPat -- :: String -> [Pat] -> Pat- ) where--import Language.Haskell.Exts.Annotated.Syntax---------------------------------------------------------------------------------- Help functions for Abstract syntax---- | An identifier with the given string as its name.--- The string should be a valid Haskell identifier.-name :: l -> String -> Name l-name = Ident---- | A symbol identifier. The string should be a valid--- Haskell symbol identifier.-sym :: l -> String -> Name l-sym = Symbol---- | A local variable as expression.-var :: l -> Name l -> Exp l-var l = Var l . UnQual l---- | Use the given identifier as an operator.-op :: l -> Name l -> QOp l-op l = QVarOp l . UnQual l---- | A qualified variable as expression.-qvar :: l -> ModuleName l -> Name l -> Exp l-qvar l m = Var l . Qual l m---- | A pattern variable.-pvar :: l -> Name l -> Pat l-pvar = PVar---- | Application of expressions by juxtaposition.-app :: l -> Exp l -> Exp l -> Exp l-app = App---- | Apply an operator infix.-infixApp :: l -> Exp l -> QOp l -> Exp l -> Exp l-infixApp = InfixApp---- | Apply a function to a list of arguments.-appFun :: [l] -> Exp l -> [Exp l] -> Exp l-appFun _ f [] = f-appFun (l:ls) f (a:as) = appFun ls (app l f a) as---- | A constructor pattern, with argument patterns.-pApp :: l -> Name l -> [Pat l] -> Pat l-pApp l n = PApp l (UnQual l n)---- | A tuple expression.-tuple :: l -> [Exp l] -> Exp l-tuple = Tuple---- | A tuple pattern.-pTuple :: l -> [Pat l] -> Pat l-pTuple = PTuple---- | A tuple expression consisting of variables only.-varTuple :: l -> [Name l] -> Exp l-varTuple l ns = tuple l $ map (var l) ns---- | A tuple pattern consisting of variables only.-pvarTuple :: l -> [Name l] -> Pat l-pvarTuple l ns = pTuple l $ map (pvar l) ns---- | A function with a given name.-function :: l -> String -> Exp l-function l = var l . Ident l---- | A literal string expression.-strE :: l -> String -> Exp l-strE l s = Lit l $ String l s s---- | A literal character expression.-charE :: l -> Char -> Exp l-charE l c = Lit l $ Char l c [c]---- | A literal integer expression.-intE :: l -> Integer -> Exp l-intE l i = Lit l $ Int l i (show i)---- | A literal string pattern.-strP :: l -> String -> Pat l-strP l s = PLit l $ String l s s---- | A literal character pattern.-charP :: l -> Char -> Pat l-charP l c = PLit l $ Char l c [c]---- | A literal integer pattern.-intP :: l -> Integer -> Pat l-intP l i = PLit l $ Int l i (show i)---- | A do block formed by the given statements.--- The last statement in the list should be--- a 'Qualifier' expression.-doE :: l -> [Stmt l] -> Exp l-doE = Do---- | Lambda abstraction, given a list of argument--- patterns and an expression body.-lamE :: l -> [Pat l] -> Exp l -> Exp l-lamE = Lambda---- | A @let@ ... @in@ block.-letE :: l -> [Decl l] -> Exp l -> Exp l-letE l ds e = Let l (binds l ds) e---- | A @case@ expression.-caseE :: l -> Exp l -> [Alt l] -> Exp l-caseE = Case---- | An unguarded alternative in a @case@ expression.-alt :: l -> Pat l -> Exp l -> Alt l-alt l p e = Alt l p (unGAlt l e) Nothing---- | An alternative with a single guard in a @case@ expression.-altGW :: l -> Pat l -> [Stmt l] -> Exp l -> Binds l -> Alt l-altGW l p gs e w = Alt l p (gAlt l gs e) (Just w)---- | An unguarded righthand side of a @case@ alternative.-unGAlt :: l -> Exp l -> GuardedAlts l-unGAlt = UnGuardedAlt---- | An list of guarded righthand sides for a @case@ alternative.-gAlts :: l -> [([Stmt l], Exp l)] -> GuardedAlts l-gAlts l as = GuardedAlts l $ map (\(gs,e) -> GuardedAlt l gs e) as---- | A single guarded righthand side for a @case@ alternative.-gAlt :: l -> [Stmt l] -> Exp l -> GuardedAlts l-gAlt l gs e = gAlts l [(gs,e)]---- | A list expression.-listE :: l -> [Exp l] -> Exp l-listE = List---- | The empty list expression.-eList :: l -> Exp l-eList l = List l []---- | The empty list pattern.-peList :: l -> Pat l-peList l = PList l []---- | Put parentheses around an expression.-paren :: l -> Exp l -> Exp l-paren = Paren---- | Put parentheses around a pattern.-pParen :: l -> Pat l -> Pat l-pParen = PParen---- | A qualifier expression statement.-qualStmt :: l -> Exp l -> Stmt l-qualStmt = Qualifier---- | A generator statement: /pat/ @<-@ /exp/-genStmt :: l -> Pat l -> Exp l -> Stmt l-genStmt = Generator---- | A @let@ binding group as a statement.-letStmt :: l -> [Decl l] -> Stmt l-letStmt l ds = LetStmt l $ binds l ds---- | Hoist a set of declarations to a binding group.-binds :: l -> [Decl l] -> Binds l-binds = BDecls---- | An empty binding group.-noBinds :: l -> Binds l-noBinds l = binds l []---- | The wildcard pattern: @_@-wildcard :: l -> Pat l-wildcard = PWildCard---- | Generate k names by appending numbers 1 through k to a given string.-genNames :: l -> String -> Int -> [Name l]-genNames l s k = [ Ident l $ s ++ show i | i <- [1..k] ]------------------------------------------------------------------------------------ Some more specialised help functions---- | A function with a single clause-sfun :: l -> Name l -> [Name l] -> Rhs l -> Maybe (Binds l) -> Decl l-sfun l f pvs rhs mbs = FunBind l [Match l f (map (pvar l) pvs) rhs mbs]---- | A function with a single clause, a single argument, no guards--- and no where declarations-simpleFun :: l -> Name l -> Name l -> Exp l -> Decl l-simpleFun l f a e = let rhs = UnGuardedRhs l e- in sfun l f [a] rhs Nothing---- | A pattern bind where the pattern is a variable, and where--- there are no guards and no 'where' clause.-patBind :: l -> Pat l -> Exp l -> Decl l-patBind l p e = let rhs = UnGuardedRhs l e- in PatBind l p Nothing rhs Nothing---- | A pattern bind where the pattern is a variable, and where--- there are no guards, but with a 'where' clause.-patBindWhere :: l -> Pat l -> Exp l -> [Decl l] -> Decl l-patBindWhere l p e ds = let rhs = UnGuardedRhs l e- in PatBind l p Nothing rhs (Just $ binds l ds)---- | Bind an identifier to an expression.-nameBind :: l -> Name l -> Exp l -> Decl l-nameBind l n e = patBind l (pvar l n) e---- | Apply function of a given name to a list of arguments.-metaFunction :: l -> String -> [Exp l] -> Exp l-metaFunction l s es = mf l s (reverse es)- where mf l s [] = var l $ name l s- mf l s (e:es) = app l (mf l s es) e---- | Apply a constructor of a given name to a list of pattern--- arguments, forming a constructor pattern.-metaConPat :: l -> String -> [Pat l] -> Pat l-metaConPat l s ps = pApp l (name l s) ps
− src/Language/Haskell/Exts/Annotated/ExactPrint.hs
@@ -1,1731 +0,0 @@------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Annotated.ExactPrint --- Copyright : (c) Niklas Broberg 2009 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- Exact-printer for Haskell abstract syntax. The input is a (semi-concrete) --- abstract syntax tree, annotated with exact source information to enable --- printing the tree exactly as it was parsed. --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.Annotated.ExactPrint - ( exactPrint - , ExactP - ) where - -import Language.Haskell.Exts.Annotated.Syntax -import Language.Haskell.Exts.SrcLoc -import Language.Haskell.Exts.Comments - -import Control.Monad (when) -import Control.Arrow ((***), (&&&)) -import Data.List (intersperse) - --- import Debug.Trace (trace) - ------------------------------------------------------- --- The EP monad and basic combinators - -type Pos = (Int,Int) - -pos :: (SrcInfo loc) => loc -> Pos -pos ss = (startLine ss, startColumn ss) - -newtype EP x = EP (Pos -> [Comment] -> (x, Pos, [Comment], ShowS)) - -instance Monad EP where - return x = EP $ \l cs -> (x, l, cs, id) - - EP m >>= k = EP $ \l0 c0 -> let - (a, l1, c1, s1) = m l0 c0 - EP f = k a - (b, l2, c2, s2) = f l1 c1 - in (b, l2, c2, s1 . s2) - -runEP :: EP () -> [Comment] -> String -runEP (EP f) cs = let (_,_,_,s) = f (1,1) cs in s "" - -getPos :: EP Pos -getPos = EP (\l cs -> (l,l,cs,id)) - -setPos :: Pos -> EP () -setPos l = EP (\_ cs -> ((),l,cs,id)) - -printString :: String -> EP () -printString str = EP (\(l,c) cs -> ((), (l,c+length str), cs, showString str)) - -getComment :: EP (Maybe Comment) -getComment = EP $ \l cs -> - let x = case cs of - c:_ -> Just c - _ -> Nothing - in (x, l, cs, id) - -dropComment :: EP () -dropComment = EP $ \l cs -> - let cs' = case cs of - (_:cs) -> cs - _ -> cs - in ((), l, cs', id) - -newLine :: EP () -newLine = do - (l,_) <- getPos - printString "\n" - setPos (l+1,1) - -padUntil :: Pos -> EP () -padUntil (l,c) = do - (l1,c1) <- getPos - case {- trace (show ((l,c), (l1,c1))) -} () of - _ {-()-} | l1 >= l && c1 <= c -> printString $ replicate (c - c1) ' ' - | l1 < l -> newLine >> padUntil (l,c) - | otherwise -> return () - - -mPrintComments :: Pos -> EP () -mPrintComments p = do - mc <- getComment - case mc of - Nothing -> return () - Just (Comment multi s str) -> - when (pos s < p) $ do - dropComment - padUntil (pos s) - printComment multi str - setPos (srcSpanEndLine s, srcSpanEndColumn s) - mPrintComments p - -printComment :: Bool -> String -> EP () -printComment b str - | b = printString $ "{-" ++ str ++ "-}" - | otherwise = printString $ "--" ++ str - -printWhitespace :: Pos -> EP () -printWhitespace p = mPrintComments p >> padUntil p - -printStringAt :: Pos -> String -> EP () -printStringAt p str = printWhitespace p >> printString str - -errorEP :: String -> EP a -errorEP = fail - ------------------------------------------------------------------------------- --- Printing of source elements - --- | Print an AST exactly as specified by the annotations on the nodes in the tree. -exactPrint :: (ExactP ast) => ast SrcSpanInfo -> [Comment] -> String -exactPrint ast cs = runEP (exactPC ast) cs - -exactPC :: (ExactP ast) => ast SrcSpanInfo -> EP () -exactPC ast = let p = pos (ann ast) in mPrintComments p >> padUntil p >> exactP ast - -printSeq :: [(Pos, EP ())] -> EP () -printSeq [] = return () -printSeq ((p,pr):xs) = printWhitespace p >> pr >> printSeq xs - -printStrs :: SrcInfo loc => [(loc, String)] -> EP () -printStrs = printSeq . map (pos *** printString) - -printPoints :: SrcSpanInfo -> [String] -> EP () -printPoints l = printStrs . zip (srcInfoPoints l) - -printInterleaved, printInterleaved' :: (Annotated ast, ExactP ast, SrcInfo loc) => [(loc, String)] -> [ast SrcSpanInfo] -> EP () -printInterleaved sistrs asts = printSeq $ - interleave (map (pos *** printString ) sistrs) - (map (pos . ann &&& exactP) asts) - -printInterleaved' sistrs (a:asts) = exactPC a >> printInterleaved sistrs asts - -printStreams :: [(Pos, EP ())] -> [(Pos, EP ())] -> EP () -printStreams [] ys = printSeq ys -printStreams xs [] = printSeq xs -printStreams (x@(p1,ep1):xs) (y@(p2,ep2):ys) - | p1 <= p2 = printWhitespace p1 >> ep1 >> printStreams xs (y:ys) - | otherwise = printWhitespace p2 >> ep2 >> printStreams (x:xs) ys - - -interleave :: [a] -> [a] -> [a] -interleave [] ys = ys -interleave xs [] = xs -interleave (x:xs) (y:ys) = x:y: interleave xs ys - -maybeEP :: (a -> EP ()) -> Maybe a -> EP () -maybeEP = maybe (return ()) - -bracketList :: (Annotated ast, ExactP ast) => (String, String, String) -> [SrcSpan] -> [ast SrcSpanInfo] -> EP () -bracketList (a,b,c) poss asts = printInterleaved (pList poss (a,b,c)) asts - -pList (p:ps) (a,b,c) = (p,a) : pList' ps (b,c) -pList' [] _ = [] -pList' [p] (_,c) = [(p,c)] -pList' (p:ps) (b,c) = (p, b) : pList' ps (b,c) - -parenList, squareList, curlyList :: (Annotated ast, ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP () -parenList = bracketList ("(",",",")") -squareList = bracketList ("[",",","]") -curlyList = bracketList ("{",",","}") - -layoutList :: (Functor ast, Show (ast ()), Annotated ast, ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP () -layoutList poss asts = printStreams - (map (pos *** printString) $ lList poss) - (map (pos . ann &&& exactP) asts) - -lList (p:ps) = (if isNullSpan p then (p,"") else (p,"{")) : lList' ps -lList' [] = [] -lList' [p] = [if isNullSpan p then (p,"") else (p,"}")] -lList' (p:ps) = (if isNullSpan p then (p,"") else (p,";")) : lList' ps - - --------------------------------------------------- --- Exact printing - -class Annotated ast => ExactP ast where - exactP :: ast SrcSpanInfo -> EP () - -instance ExactP Literal where - exactP lit = case lit of - Char _ _ rw -> printString ('\'':rw ++ "\'") - String _ _ rw -> printString ('\"':rw ++ "\"") - Int _ _ rw -> printString (rw) - Frac _ _ rw -> printString (rw) - PrimInt _ _ rw -> printString (rw ++ "#" ) - PrimWord _ _ rw -> printString (rw ++ "##") - PrimFloat _ _ rw -> printString (rw ++ "#" ) - PrimDouble _ _ rw -> printString (rw ++ "##") - PrimChar _ _ rw -> printString ('\'':rw ++ "\'#" ) - PrimString _ _ rw -> printString ('\"':rw ++ "\"#" ) - -instance ExactP ModuleName where - exactP (ModuleName l str) = printString str - -instance ExactP SpecialCon where - exactP sc = case sc of - UnitCon l -> printPoints l ["(",")"] - ListCon l -> printPoints l ["[","]"] - FunCon l -> printPoints l ["(","->",")"] - TupleCon l b n -> printPoints l $ - case b of - Unboxed -> "(#": replicate (n-1) "," ++ ["#)"] - _ -> "(" : replicate (n-1) "," ++ [")"] - Cons l -> printString ":" - UnboxedSingleCon l -> printPoints l ["(#","#)"] - -isSymbol :: Name l -> Bool -isSymbol (Symbol _ _) = True -isSymbol _ = False - -getName :: QName l -> Name l -getName (UnQual _ s) = s -getName (Qual _ _ s) = s -getName (Special l (Cons _)) = Symbol l ":" -getName (Special l (FunCon _)) = Symbol l "->" -getName (Special l s) = Ident l (specialName s) - -specialName :: SpecialCon l -> String -specialName (UnitCon _) = "()" -specialName (ListCon _) = "[]" -specialName (FunCon _) = "->" -specialName (TupleCon _ b n) = "(" ++ hash ++ replicate (n-1) ',' ++ hash ++ ")" - where hash = case b of - Unboxed -> "#" - _ -> "" -specialName (Cons _) = ":" - -instance ExactP QName where - exactP qn - | isSymbol (getName qn) = do - case srcInfoPoints (ann qn) of - [a,b,c] -> do - printString "(" - printWhitespace (pos b) - epQName qn - printStringAt (pos c) ")" - _ -> errorEP "ExactP: QName is given wrong number of srcInfoPoints" - | otherwise = epQName qn - -epQName :: QName SrcSpanInfo -> EP () -epQName qn = case qn of - Qual l mn n -> exactP mn >> printString "." >> epName n - UnQual l n -> epName n - Special l sc -> exactP sc - -epInfixQName :: QName SrcSpanInfo -> EP () -epInfixQName qn - | isSymbol (getName qn) = printWhitespace (pos (ann qn)) >> epQName qn - | otherwise = do - case srcInfoPoints (ann qn) of - [a,b,c] -> do - printStringAt (pos a) "`" - printWhitespace (pos b) - epQName qn - printStringAt (pos c) "`" - _ -> errorEP "ExactP: QName (epInfixName) is given wrong number of srcInfoPoints" - -instance ExactP Name where - exactP n = case n of - Ident l str -> printString str - Symbol l str -> do - case srcInfoPoints l of - [a,b,c] -> do - printString "(" - printWhitespace (pos b) - printString str - printStringAt (pos c) ")" - _ -> errorEP "ExactP: Name is given wrong number of srcInfoPoints" - -epName :: Name SrcSpanInfo -> EP () -epName (Ident _ str) = printString str -epName (Symbol _ str) = printString str - -epInfixName :: Name SrcSpanInfo -> EP () -epInfixName n - | isSymbol n = printWhitespace (pos (ann n)) >> epName n - | otherwise = do - case srcInfoPoints (ann n) of - [a,b,c] -> do - printStringAt (pos a) "`" - printWhitespace (pos b) - epName n - printStringAt (pos c) "`" - _ -> errorEP "ExactP: Name (epInfixName) is given wrong number of srcInfoPoints" - -instance ExactP IPName where - exactP ipn = case ipn of - IPDup l str -> printString $ '?':str - IPLin l str -> printString $ '%':str - -instance ExactP QOp where - exactP qop = case qop of - QVarOp l qn -> epInfixQName qn - QConOp l qn -> epInfixQName qn - -instance ExactP Op where - exactP op = case op of - VarOp l n -> epInfixName n - ConOp l n -> epInfixName n - - - -instance ExactP CName where - exactP cn = case cn of - VarName l n -> exactP n - ConName l n -> exactP n - -instance ExactP ExportSpec where - exactP espec = case espec of - EVar l qn -> exactP qn - EAbs l qn -> exactP qn - EThingAll l qn -> exactP qn >> printPoints l ["(","..",")"] - EThingWith l qn cns -> - let k = length (srcInfoPoints l) - in exactP qn >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) cns - EModuleContents l mn -> printString "module" >> exactPC mn - -instance ExactP ExportSpecList where - exactP (ExportSpecList l ess) = - let k = length (srcInfoPoints l) - in printInterleaved (zip (srcInfoPoints l) $ "(": replicate (k-2) "," ++ [")"]) ess - -instance ExactP ImportSpecList where - exactP (ImportSpecList l hid ispecs) = do - let pts = srcInfoPoints l - pts <- if hid then do - let (x:pts') = pts - printStringAt (pos x) "hiding" - return pts' - else return pts - let k = length pts - printInterleaved (zip pts $ "(": replicate (k-2) "," ++ [")"]) ispecs - -instance ExactP ImportSpec where - exactP ispec = case ispec of - IVar l n -> exactP n - IAbs l n -> exactP n - IThingAll l n -> exactP n >> printPoints l ["(","..",")"] - IThingWith l n cns -> - let k = length (srcInfoPoints l) - in exactP n >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) cns - -instance ExactP ImportDecl where - exactP (ImportDecl l mn qf src mpkg mas mispecs) = do - printString "import" - case srcInfoPoints l of - (a:pts) -> do - pts <- if src then - case pts of - x:y:pts' -> do - printStringAt (pos x) "{-# SOURCE" - printStringAt (pos y) "#-}" - return pts' - _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" - else return pts - pts <- if qf then - case pts of - x:pts' -> do - printStringAt (pos x) "qualified" - return pts' - _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" - else return pts - pts <- case mpkg of - Just pkg -> - case pts of - x:pts' -> do - printStringAt (pos x) $ show pkg - return pts' - _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" - _ -> return pts - exactPC mn - pts <- case mas of - Just as -> - case pts of - x:pts' -> do - printStringAt (pos x) "as" - exactPC as - return pts' - _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" - _ -> return pts - case mispecs of - Nothing -> return () - Just ispecs -> exactPC ispecs - _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" - -instance ExactP Module where - exactP mdl = case mdl of - Module l mmh oss ids decls -> do - let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l) - layoutList oPts oss - maybeEP exactPC mmh - printStreams (map (pos *** printString) $ lList pts) - (map (pos . ann &&& exactPC) ids ++ map (pos . ann &&& exactPC) (sepFunBinds decls)) - XmlPage l _mn oss xn attrs mat es -> do - let (oPts, pPts) = splitAt (max (length oss + 1) 2) $ srcInfoPoints l - case pPts of - [a,b,c,d,e] -> do - layoutList oPts oss - printStringAt (pos a) "<" - exactPC xn - mapM_ exactPC attrs - maybeEP exactPC mat - printStringAt (pos b) ">" - mapM_ exactPC es - printStringAt (pos c) "</" - printWhitespace (pos d) - exactP xn - printStringAt (pos e) ">" - _ -> errorEP "ExactP: Module: XmlPage is given wrong number of srcInfoPoints" - XmlHybrid l mmh oss ids decls xn attrs mat es -> do - let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l) - layoutList oPts oss - maybeEP exactPC mmh - let (dPts, pPts) = splitAt (length pts - 5) pts - case pPts of - [a,b,c,d,e] -> do - printStreams (map (\(p,s) -> (pos p, printString s)) $ lList dPts) - (map (\i -> (pos $ ann i, exactPC i)) ids ++ map (\d -> (pos $ ann d, exactPC d)) (sepFunBinds decls)) - - printStringAt (pos a) "<" - exactPC xn - mapM_ exactPC attrs - maybeEP exactPC mat - printStringAt (pos b) ">" - mapM_ exactPC es - printStringAt (pos c) "</" - printWhitespace (pos d) - exactP xn - printStringAt (pos e) ">" - _ -> errorEP "ExactP: Module: XmlHybrid is given wrong number of srcInfoPoints" - -instance ExactP ModuleHead where - exactP (ModuleHead l mn mwt mess) = do - case srcInfoPoints l of - [a,b] -> do - printStringAt (pos a) "module" - exactPC mn - maybeEP exactPC mwt - maybeEP exactPC mess - printStringAt (pos b) "where" - _ -> errorEP "ExactP: ModuleHead is given wrong number of srcInfoPoints" - -instance ExactP ModulePragma where - exactP op = case op of - LanguagePragma l ns -> - let pts = srcInfoPoints l - k = length ns - 1 -- number of commas - m = length pts - k - 2 -- number of virtual semis, likely 0 - in printInterleaved (zip pts ("{-# LANGUAGE":replicate k "," ++ replicate m "" ++ ["#-}"])) ns - OptionsPragma l mt str -> - let k = length (srcInfoPoints l) - opstr = "{-# OPTIONS" ++ case mt of { Just t -> "_" ++ show t ; _ -> "" } ++ " " ++ str - in printPoints l $ opstr : replicate (k-2) "" ++ ["#-}"] - AnnModulePragma l ann -> - case srcInfoPoints l of - [a,b] -> do - printString $ "{-# ANN" - exactPC ann - printStringAt (pos b) "#-}" - _ -> errorEP "ExactP: ModulePragma: AnnPragma is given wrong number of srcInfoPoints" - -instance ExactP WarningText where - exactP (DeprText l str) = printPoints l ["{-# DEPRECATED", str, "#-}"] - exactP (WarnText l str) = printPoints l ["{-# WARNING", str, "#-}"] - -instance ExactP Assoc where - exactP a = case a of - AssocNone l -> printString "infix" - AssocLeft l -> printString "infixl" - AssocRight l -> printString "infixr" - -instance ExactP DataOrNew where - exactP (DataType l) = printString "data" - exactP (NewType l) = printString "newtype" - -instance ExactP Decl where - exactP decl = case decl of - TypeDecl l dh t -> - case srcInfoPoints l of - [a,b] -> do - printStringAt (pos a) "type" - exactPC dh - printStringAt (pos b) "=" - exactPC t - _ -> errorEP "ExactP: Decl: TypeDecl is given wrong number of srcInfoPoints" - TypeFamDecl l dh mk -> - case srcInfoPoints l of - a:b:ps -> do - printStringAt (pos a) "type" - printStringAt (pos b) "family" - exactPC dh - maybeEP (\k -> printStringAt (pos (head ps)) "::" >> exactPC k) mk - _ -> errorEP "ExactP: Decl: TypeFamDecl is given wrong number of srcInfoPoints" - DataDecl l dn mctxt dh constrs mder -> do - exactP dn - maybeEP exactPC mctxt - exactPC dh - -- the next line works for empty data types since the srcInfoPoints will be empty then - printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs - maybeEP exactPC mder - GDataDecl l dn mctxt dh mk gds mder -> do - let pts = srcInfoPoints l - exactP dn - maybeEP exactPC mctxt - exactPC dh - pts <- case mk of - Nothing -> return pts - Just kd -> case pts of - p:pts' -> do - printStringAt (pos p) "::" - exactPC kd - return pts' - _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints" - case pts of - x:pts -> do - printStringAt (pos x) "where" - layoutList pts gds - maybeEP exactPC mder - _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints" - DataFamDecl l mctxt dh mk -> do - printString "data" - maybeEP exactPC mctxt - exactPC dh - maybeEP (\kd -> printStringAt (pos (head (srcInfoPoints l))) "::" >> exactPC kd) mk - TypeInsDecl l t1 t2 -> - case srcInfoPoints l of - [a,b,c] -> do - printString "type" - printStringAt (pos b) "instance" - exactPC t1 - printStringAt (pos c) "=" - exactPC t2 - _ -> errorEP "ExactP: Decl: TypeInsDecl is given wrong number of srcInfoPoints" - DataInsDecl l dn t constrs mder -> - case srcInfoPoints l of - p:pts -> do - exactP dn - printStringAt (pos p) "instance" - exactPC t - printInterleaved (zip pts ("=": repeat "|")) constrs - maybeEP exactPC mder - _ -> errorEP "ExactP: Decl: DataInsDecl is given too few srcInfoPoints" - GDataInsDecl l dn t mk gds mder -> - case srcInfoPoints l of - p:pts -> do - exactP dn - printStringAt (pos p) "instance" - exactPC t - pts <- case mk of - Nothing -> return pts - Just kd -> case pts of - p:pts' -> do - printStringAt (pos p) "::" - exactPC kd - return pts' - _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints" - case pts of - x:pts -> do - printStringAt (pos x) "where" - layoutList pts gds - maybeEP exactPC mder - _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints" - _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints" - ClassDecl l mctxt dh fds mcds -> - case srcInfoPoints l of - a:pts -> do - printString "class" - maybeEP exactPC mctxt - exactPC dh - pts <- case fds of - [] -> return pts - _ -> do - let (pts1, pts2) = splitAt (length fds) pts - printInterleaved (zip pts1 ("|":repeat ",")) fds - return pts2 - maybeEP (\cds -> - case pts of - p:pts' -> do - printStringAt (pos p) "where" - layoutList pts' $ sepClassFunBinds cds - _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints" - ) mcds - _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints" - InstDecl l mctxt ih mids -> - case srcInfoPoints l of - a:pts -> do - printString "instance" - maybeEP exactPC mctxt - exactPC ih - maybeEP (\ids -> do - let (p:pts') = pts - printStringAt (pos p) "where" - layoutList pts' $ sepInstFunBinds ids - ) mids - _ -> errorEP "ExactP: Decl: InstDecl is given too few srcInfoPoints" - DerivDecl l mctxt ih -> - case srcInfoPoints l of - [a,b] -> do - printString "deriving" - printStringAt (pos b) "instance" - maybeEP exactPC mctxt - exactPC ih - _ -> errorEP "ExactP: Decl: DerivDecl is given wrong number of srcInfoPoints" - InfixDecl l assoc mprec ops -> do - let pts = srcInfoPoints l - exactP assoc - pts <- case mprec of - Nothing -> return pts - Just prec -> - case pts of - p:pts' -> do - printStringAt (pos p) (show prec) - return pts' - _ -> errorEP "ExactP: Decl: InfixDecl is given too few srcInfoPoints" - printInterleaved' (zip pts (repeat ",")) ops - DefaultDecl l ts -> - case srcInfoPoints l of - a:pts -> do - printString "default" - printInterleaved (zip (init pts) ("(":repeat ",")) ts - printStringAt (pos (last pts)) ")" - _ -> errorEP "ExactP: Decl: DefaultDecl is given too few srcInfoPoints" - SpliceDecl l spl -> exactP spl - TypeSig l ns t -> do - let pts = srcInfoPoints l - printInterleaved' (zip pts (replicate (length pts - 1) "," ++ ["::"])) ns - exactPC t - FunBind l ms -> mapM_ exactPC ms - PatBind l p mt rhs mbs -> do - let pts = srcInfoPoints l - exactP p - pts <- case mt of - Nothing -> return pts - Just t -> case pts of - x:pts'-> do - printStringAt (pos x) "::" - exactPC t - return pts' - _ -> errorEP "ExactP: Decl: PatBind is given too few srcInfoPoints" - exactPC rhs - maybeEP (\bs -> printStringAt (pos (head pts)) "where" >> exactPC bs) mbs - ForImp l cc msf mstr n t -> - case srcInfoPoints l of - a:b:pts -> do - printString "foreign" - printStringAt (pos b) "import" - exactPC cc - maybeEP exactPC msf - pts <- case mstr of - Nothing -> return pts - Just str -> case pts of - x:pts' -> do - printStringAt (pos x) (show str) - return pts' - _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints" - case pts of - y:_ -> do - exactPC n - printStringAt (pos y) "::" - exactPC t - _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints" - _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints" - ForExp l cc mstr n t -> - case srcInfoPoints l of - a:b:pts -> do - printString "foreign" - printStringAt (pos b) "export" - exactPC cc - pts <- case mstr of - Nothing -> return pts - Just str -> case pts of - x:pts' -> do - printStringAt (pos x) (show str) - return pts' - _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints" - case pts of - y:_ -> do - exactPC n - printStringAt (pos y) "::" - exactPC t - _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints" - _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints" - RulePragmaDecl l rs -> - case srcInfoPoints l of - [a,b] -> do - printString "{-# RULES" - mapM_ exactPC rs - printStringAt (pos b) "#-}" - _ -> errorEP "ExactP: Decl: RulePragmaDecl is given too few srcInfoPoints" - DeprPragmaDecl l nstrs -> - case srcInfoPoints l of - a:pts -> do - printString "{-# DEPRECATED" - printWarndeprs (map pos (init pts)) nstrs - printStringAt (pos (last pts)) "#-}" - _ -> errorEP "ExactP: Decl: DeprPragmaDecl is given too few srcInfoPoints" - WarnPragmaDecl l nstrs -> - case srcInfoPoints l of - a:pts -> do - printString "{-# WARNING" - printWarndeprs (map pos (init pts)) nstrs - printStringAt (pos (last pts)) "#-}" - _ -> errorEP "ExactP: Decl: WarnPragmaDecl is given too few srcInfoPoints" - InlineSig l inl mact qn -> - case srcInfoPoints l of - [a,b] -> do - printString $ if inl then "{-# INLINE" else "{-# NOINLINE" - maybeEP exactPC mact - exactPC qn - printStringAt (pos b) "#-}" - _ -> errorEP "ExactP: Decl: InlineSig is given wrong number of srcInfoPoints" - InlineConlikeSig l mact qn -> - case srcInfoPoints l of - [a,b] -> do - printString "{-# INLINE_CONLIKE" - maybeEP exactPC mact - exactPC qn - printStringAt (pos b) "#-}" - _ -> errorEP "ExactP: Decl: InlineConlikeSig is given wrong number of srcInfoPoints" - SpecSig l qn ts -> - case srcInfoPoints l of - a:pts -> do - printString "{-# SPECIALISE" - exactPC qn - printInterleaved (zip pts ("::" : repeat "," ++ ["#-}"])) ts - _ -> errorEP "ExactP: Decl: SpecSig is given too few srcInfoPoints" - SpecInlineSig l b mact qn ts -> - case srcInfoPoints l of - a:pts -> do - printString $ "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE" - maybeEP exactPC mact - exactPC qn - printInterleaved (zip pts ("::" : repeat "," ++ ["#-}"])) ts - _ -> errorEP "ExactP: Decl: SpecInlineSig is given too few srcInfoPoints" - InstSig l mctxt ih -> - case srcInfoPoints l of - [a,b,c] -> do - printString $ "{-# SPECIALISE" - printStringAt (pos b) "instance" - maybeEP exactPC mctxt - exactPC ih - printStringAt (pos c) "#-}" - _ -> errorEP "ExactP: Decl: InstSig is given wrong number of srcInfoPoints" - AnnPragma l ann -> - case srcInfoPoints l of - [a,b] -> do - printString $ "{-# ANN" - exactPC ann - printStringAt (pos b) "#-}" - _ -> errorEP "ExactP: Decl: AnnPragma is given wrong number of srcInfoPoints" - - -instance ExactP Annotation where - exactP ann = case ann of - Ann l n e -> do - exactP n - exactPC e - TypeAnn l n e -> do - printString "type" - exactPC n - exactPC e - ModuleAnn l e -> do - printString "module" - exactPC e - -printWarndeprs :: [Pos] -> [([Name SrcSpanInfo], String)] -> EP () -printWarndeprs _ [] = return () -printWarndeprs ps ((ns,str):nsts) = printWd ps ns str nsts - where printWd :: [Pos] -> [Name SrcSpanInfo] -> String -> [([Name SrcSpanInfo], String)] -> EP () - printWd (p:ps) [] str nsts = printStringAt p (show str) >> printWarndeprs ps nsts - printWd ps [n] str nsts = exactPC n >> printWd ps [] str nsts - printWd (p:ps) (n:ns) str nsts = exactPC n >> printStringAt p "," >> printWd ps ns str nsts - - -sepFunBinds :: [Decl SrcSpanInfo] -> [Decl SrcSpanInfo] -sepFunBinds [] = [] -sepFunBinds (FunBind _ ms:ds) = map (\m -> FunBind (ann m) [m]) ms ++ sepFunBinds ds -sepFunBinds (d:ds) = d : sepFunBinds ds - -sepClassFunBinds :: [ClassDecl SrcSpanInfo] -> [ClassDecl SrcSpanInfo] -sepClassFunBinds [] = [] -sepClassFunBinds (ClsDecl _ (FunBind _ ms):ds) = map (\m -> ClsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepClassFunBinds ds -sepClassFunBinds (d:ds) = d : sepClassFunBinds ds - -sepInstFunBinds :: [InstDecl SrcSpanInfo] -> [InstDecl SrcSpanInfo] -sepInstFunBinds [] = [] -sepInstFunBinds (InsDecl _ (FunBind _ ms):ds) = map (\m -> InsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepInstFunBinds ds -sepInstFunBinds (d:ds) = d : sepInstFunBinds ds - -instance ExactP DeclHead where - exactP dh = case dh of - DHead l n tvs -> exactP n >> mapM_ exactPC tvs - DHInfix l tva n tvb -> exactP tva >> epInfixName n >> exactPC tvb - DHParen l dh -> - case srcInfoPoints l of - [_,b] -> printString "(" >> exactPC dh >> printStringAt (pos b) ")" - _ -> errorEP "ExactP: DeclHead: DeclParen is given wrong number of srcInfoPoints" - -instance ExactP InstHead where - exactP ih = case ih of - IHead l qn ts -> exactP qn >> mapM_ exactPC ts - IHInfix l ta qn tb -> exactP ta >> epInfixQName qn >> exactPC tb - IHParen l ih -> - case srcInfoPoints l of - [_,b] -> printString "(" >> exactPC ih >> printStringAt (pos b) ")" - _ -> errorEP "ExactP: InstHead: IHParen is given wrong number of srcInfoPoints" - -instance ExactP TyVarBind where - exactP (KindedVar l n k) = - case srcInfoPoints l of - [a,b,c] -> do - printString "(" - exactPC n - printStringAt (pos b) "::" - exactPC k - printStringAt (pos c) ")" - _ -> errorEP "ExactP: TyVarBind: KindedVar is given wrong number of srcInfoPoints" - exactP (UnkindedVar l n) = exactP n - -instance ExactP Kind where - exactP kd = case kd of - KindStar l -> printString "*" - KindBang l -> printString "!" - KindFn l k1 k2 -> - case srcInfoPoints l of - [a] -> do - exactP k1 - printStringAt (pos a) "->" - exactPC k2 - _ -> errorEP "ExactP: Kind: KindFn is given wrong number of srcInfoPoints" - KindParen l kd -> do - case srcInfoPoints l of - [a,b] -> do - printString "(" - exactPC kd - printStringAt (pos b) ")" - _ -> errorEP "ExactP: Kind: KindParen is given wrong number of srcInfoPoints" - KindVar l n -> exactP n - -instance ExactP Type where - exactP t = case t of - TyForall l mtvs mctxt t -> do - let pts = srcInfoPoints l - pts <- case mtvs of - Nothing -> return pts - Just tvs -> - case pts of - a:b:pts' -> do - printString "forall" - mapM_ exactPC tvs - printStringAt (pos b) "." - return pts' - _ -> errorEP "ExactP: Type: TyForall is given too few srcInfoPoints" - maybeEP exactPC mctxt - exactPC t - TyFun l t1 t2 -> do - case srcInfoPoints l of - [a] -> do - exactP t1 - printStringAt (pos a) "->" - exactPC t2 - _ -> errorEP "ExactP: Type: TyFun is given wrong number of srcInfoPoints" - TyTuple l bx ts -> do - let pts = srcInfoPoints l - (o,e) = case bx of - Boxed -> ("(" , ")") - Unboxed -> ("(#","#)") - printInterleaved (zip pts (o: replicate (length pts - 2) "," ++ [e])) ts - TyList l t -> do - case srcInfoPoints l of - [a,b] -> do - printString "[" - exactPC t - printStringAt (pos b) "]" - _ -> errorEP "ExactP: Type: TyList is given wrong number of srcInfoPoints" - TyApp l t1 t2 -> exactP t1 >> exactPC t2 - TyVar l n -> exactP n - TyCon l qn -> exactP qn - TyParen l t -> do - case srcInfoPoints l of - [a,b] -> do - printString "(" - exactPC t - printStringAt (pos b) ")" - _ -> errorEP "ExactP: Type: TyParen is given wrong number of srcInfoPoints" - TyInfix l t1 qn t2 -> exactP t1 >> epInfixQName qn >> exactPC t2 - TyKind l t kd -> do - case srcInfoPoints l of - [a,b,c] -> do - printString "(" - exactPC t - printStringAt (pos b) "::" - exactPC kd - printStringAt (pos c) ")" - _ -> errorEP "ExactP: Type: TyKind is given wrong number of srcInfoPoints" - -instance ExactP Context where - exactP ctxt = do - printContext ctxt - printStringAt (pos . last . srcInfoPoints . ann $ ctxt) "=>" - -printContext ctxt = do - let l = ann ctxt - pts = init $ srcInfoPoints l - case ctxt of - CxParen l ctxt -> - case pts of - [a,b] -> do - printStringAt (pos a) "(" - printContext ctxt - printStringAt (pos b) ")" - _ -> errorEP "ExactP: Context: CxParen is given wrong number of srcInfoPoints" - CxSingle l asst -> exactP asst - CxEmpty l -> - case pts of - [a,b] -> do - printStringAt (pos a) "(" - printStringAt (pos b) ")" - _ -> errorEP "ExactP: Context: CxEmpty is given wrong number of srcInfoPoints" - CxTuple l assts -> parenList pts assts - - -instance ExactP Asst where - exactP asst = case asst of - ClassA l qn ts -> exactP qn >> mapM_ exactPC ts - InfixA l ta qn tb -> exactP ta >> epInfixQName qn >> exactPC tb - IParam l ipn t -> - case srcInfoPoints l of - [a] -> do - exactP ipn - printStringAt (pos a) "::" - exactPC t - _ -> errorEP "ExactP: Asst: IParam is given wrong number of srcInfoPoints" - EqualP l t1 t2 -> - case srcInfoPoints l of - [a] -> do - exactP t1 - printStringAt (pos a) "~" - exactPC t2 - -instance ExactP Deriving where - exactP (Deriving l ihs) = - case srcInfoPoints l of - x:pts -> do - printString "deriving" - case pts of - [] -> exactPC $ head ihs - _ -> parenList pts ihs - _ -> errorEP "ExactP: Deriving is given too few srcInfoPoints" - -instance ExactP ClassDecl where - exactP cdecl = case cdecl of - ClsDecl l d -> exactP d - ClsDataFam l mctxt dh mk -> - case srcInfoPoints l of - x:pts -> do - printString "data" - maybeEP exactPC mctxt - exactPC dh - maybeEP (\kd -> printStringAt (pos (head pts)) "::" >> exactPC kd) mk - _ -> errorEP "ExactP: ClassDecl: ClsDataFam is given too few srcInfoPoints" - ClsTyFam l dh mk -> - case srcInfoPoints l of - x:pts -> do - printString "type" - exactPC dh - maybeEP (\kd -> printStringAt (pos (head pts)) "::" >> exactPC kd) mk - _ -> errorEP "ExactP: ClassDecl: ClsTyFam is given too few srcInfoPoints" - ClsTyDef l t1 t2 -> - case srcInfoPoints l of - a:b:pts -> do - printString "type" - exactPC t1 - printStringAt (pos b) "=" - exactPC t2 - _ -> errorEP "ExactP: ClassDecl: ClsTyDef is given too few srcInfoPoints" - -instance ExactP InstDecl where - exactP idecl = case idecl of - InsDecl l d -> exactP d - InsType l t1 t2 -> - case srcInfoPoints l of - [a,b] -> do - printString "type" - exactPC t1 - printStringAt (pos b) "=" - exactPC t2 - InsData l dn t constrs mder -> do - exactP dn - exactPC t - printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs - maybeEP exactPC mder - InsGData l dn t mk gds mder -> do - let pts = srcInfoPoints l - exactP dn - exactPC t - pts <- case mk of - Nothing -> return pts - Just kd -> case pts of - p:pts' -> do - printStringAt (pos p) "::" - exactPC kd - return pts' - _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints" - case pts of - x:_ -> do - printStringAt (pos x) "where" - mapM_ exactPC gds - maybeEP exactPC mder - _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints" --- InsInline l inl mact qn -> do --- case srcInfoPoints l of --- [a,b] -> do --- printString $ if inl then "{-# INLINE" else "{-# NOINLINE" --- maybeEP exactPC mact --- exactPC qn --- printStringAt (pos b) "#-}" --- _ -> errorEP "ExactP: InstDecl: InsInline is given wrong number of srcInfoPoints" - -instance ExactP FunDep where - exactP (FunDep l nxs nys) = - case srcInfoPoints l of - [a] -> do - mapM_ exactPC nxs - printStringAt (pos a) "->" - mapM_ exactPC nys - _ -> errorEP "ExactP: FunDep is given wrong number of srcInfoPoints" - -instance ExactP QualConDecl where - exactP (QualConDecl l mtvs mctxt cd) = do - let pts = srcInfoPoints l - pts <- case mtvs of - Nothing -> return pts - Just tvs -> - case pts of - a:b:pts' -> do - printString "forall" - mapM_ exactPC tvs - printStringAt (pos b) "." - return pts' - _ -> errorEP "ExactP: QualConDecl is given wrong number of srcInfoPoints" - maybeEP exactPC mctxt - exactPC cd - -instance ExactP ConDecl where - exactP cd = case cd of - ConDecl l n bts -> exactP n >> mapM_ exactPC bts - InfixConDecl l bta n btb -> exactP bta >> epInfixName n >> exactP btb - RecDecl l n fds -> exactP n >> curlyList (srcInfoPoints l) fds - -instance ExactP GadtDecl where - exactP (GadtDecl l n t) = - case srcInfoPoints l of - [a] -> do - exactP n - printStringAt (pos a) "::" - exactPC t - _ -> errorEP "ExactP: GadtDecl is given wrong number of srcInfoPoints" - -instance ExactP BangType where - exactP bt = case bt of - UnBangedTy l t -> exactP t - BangedTy l t -> printString "!" >> exactPC t - UnpackedTy l t -> - case srcInfoPoints l of - [a,b,c] -> do - printString "{-# UNPACK" - printStringAt (pos b) "#-}" - printStringAt (pos c) "!" - exactPC t - _ -> errorEP "ExactP: BangType: UnpackedTy is given wrong number of srcInfoPoints" - -instance ExactP Splice where - exactP (IdSplice l str) = printString $ '$':str - exactP (ParenSplice l e) = - case srcInfoPoints l of - [a,b] -> do - printString "$(" - exactPC e - printStringAt (pos b) ")" - _ -> errorEP "ExactP: Splice: ParenSplice is given wrong number of srcInfoPoints" - -instance ExactP Exp where - exactP exp = case exp of - Var l qn -> exactP qn - IPVar l ipn -> exactP ipn - Con l qn -> exactP qn - Lit l lit -> exactP lit - InfixApp l e1 op e2 -> exactP e1 >> exactPC op >> exactPC e2 - App l e1 e2 -> exactP e1 >> exactPC e2 - NegApp l e -> printString "-" >> exactPC e - Lambda l ps e -> - case srcInfoPoints l of - [a,b] -> do - printString "\\" - mapM_ exactPC ps - printStringAt (pos b) "->" - exactPC e - _ -> errorEP "ExactP: Exp: Lambda is given wrong number of srcInfoPoints" - Let l bs e -> - case srcInfoPoints l of - [a,b] -> do - printString "let" - exactPC bs - printStringAt (pos b) "in" - exactPC e - _ -> errorEP "ExactP: Exp: Let is given wrong number of srcInfoPoints" - If l ec et ee -> - case srcInfoPoints l of - [a,b,c] -> do - printString "if" - exactPC ec - printStringAt (pos b) "then" - exactPC et - printStringAt (pos c) "else" - exactPC ee - _ -> errorEP "ExactP: Exp: If is given wrong number of srcInfoPoints" - Case l e alts -> - case srcInfoPoints l of - a:b:pts -> do - printString "case" - exactPC e - printStringAt (pos b) "of" - layoutList pts alts - _ -> errorEP "ExactP: Exp: Case is given too few srcInfoPoints" - Do l stmts -> - case srcInfoPoints l of - a:pts -> do - printString "do" - layoutList pts stmts - _ -> errorEP "ExactP: Exp: Do is given too few srcInfoPoints" - MDo l stmts -> - case srcInfoPoints l of - a:pts -> do - printString "mdo" - layoutList pts stmts - _ -> errorEP "ExactP: Exp: Mdo is given wrong number of srcInfoPoints" - Tuple l es -> parenList (srcInfoPoints l) es - TupleSection l mexps -> do - let pts = srcInfoPoints l - printSeq $ interleave (zip (map pos $ init pts) (map printString ("(": repeat ",")) ++ [(pos $ last pts, printString ")")]) - (map (maybe (0,0) (pos . ann) &&& maybeEP exactPC) mexps) - List l es -> squareList (srcInfoPoints l) es - Paren l p -> parenList (srcInfoPoints l) [p] - LeftSection l e qop -> - case srcInfoPoints l of - [a,b] -> do - printString "(" - exactPC e - exactPC qop - printStringAt (pos b) ")" - _ -> errorEP "ExactP: Exp: LeftSection is given wrong number of srcInfoPoints" - RightSection l qop e -> - case srcInfoPoints l of - [a,b] -> do - printString "(" - exactPC qop - exactPC e - printStringAt (pos b) ")" - _ -> errorEP "ExactP: Exp: RightSection is given wrong number of srcInfoPoints" - RecConstr l qn fups -> do - let pts = srcInfoPoints l - exactP qn - curlyList pts fups - RecUpdate l e fups -> do - let pts = srcInfoPoints l - exactP e - curlyList pts fups - EnumFrom l e -> - case srcInfoPoints l of - [a,b,c] -> do - printString "[" - exactPC e - printStringAt (pos b) ".." - printStringAt (pos c) "]" - _ -> errorEP "ExactP: Exp: EnumFrom is given wrong number of srcInfoPoints" - EnumFromTo l e1 e2 -> - case srcInfoPoints l of - [a,b,c] -> do - printString "[" - exactPC e1 - printStringAt (pos b) ".." - exactPC e2 - printStringAt (pos c) "]" - _ -> errorEP "ExactP: Exp: EnumFromTo is given wrong number of srcInfoPoints" - EnumFromThen l e1 e2 -> - case srcInfoPoints l of - [a,b,c,d] -> do - printString "[" - exactPC e1 - printStringAt (pos b) "," - exactPC e2 - printStringAt (pos c) ".." - printStringAt (pos d) "]" - _ -> errorEP "ExactP: Exp: EnumFromThen is given wrong number of srcInfoPoints" - EnumFromThenTo l e1 e2 e3 -> - case srcInfoPoints l of - [a,b,c,d] -> do - printString "[" - exactPC e1 - printStringAt (pos b) "," - exactPC e2 - printStringAt (pos c) ".." - exactPC e3 - printStringAt (pos d) "]" - _ -> errorEP "ExactP: Exp: EnumFromToThen is given wrong number of srcInfoPoints" - ListComp l e qss -> - case srcInfoPoints l of - a:pts -> do - printString "[" - exactPC e - bracketList ("|",",","]") pts qss - _ -> errorEP "ExactP: Exp: ListComp is given too few srcInfoPoints" - ParComp l e qsss -> - case srcInfoPoints l of - a:pts -> do - let (strs, qss) = unzip $ pairUp qsss - printString "[" - exactPC e - printInterleaved (zip pts (strs ++ ["]"])) qss - _ -> errorEP "ExactP: Exp: ParComp is given wrong number of srcInfoPoints" - where pairUp [] = [] - pairUp ((a:as):xs) = ("|", a) : zip (repeat ",") as ++ pairUp xs - - ExpTypeSig l e t -> - case srcInfoPoints l of - [a] -> do - exactP e - printStringAt (pos a) "::" - exactPC t - _ -> errorEP "ExactP: Exp: ExpTypeSig is given wrong number of srcInfoPoints" - VarQuote l qn -> do - printString "'" - exactPC qn - TypQuote l qn -> do - printString "''" - exactPC qn - BracketExp l br -> exactP br - SpliceExp l sp -> exactP sp - QuasiQuote l name qt -> do - let qtLines = lines qt - printString $ "[$" ++ name ++ "|" - sequence_ (intersperse newLine $ map printString qtLines) - printString "|]" - XTag l xn attrs mat es -> - case srcInfoPoints l of - [a,b,c,d,e] -> do - printString "<" - exactPC xn - mapM_ exactPC attrs - maybeEP exactPC mat - printStringAt (pos b) ">" - mapM_ exactPC es - printStringAt (pos c) "</" - printWhitespace (pos d) - exactP xn - printStringAt (pos e) ">" - _ -> errorEP "ExactP: Exp: XTag is given wrong number of srcInfoPoints" - XETag l xn attrs mat -> - case srcInfoPoints l of - [a,b] -> do - printString "<" - exactPC xn - mapM_ exactPC attrs - maybeEP exactPC mat - printStringAt (pos b) "/>" - _ -> errorEP "ExactP: Exp: XETag is given wrong number of srcInfoPoints" - XPcdata l str -> do - let strLines = lines str - sequence_ (intersperse newLine $ map printString strLines) - XExpTag l e -> - case srcInfoPoints l of - [a,b] -> do - printString "<%" - exactPC e - printStringAt (pos b) "%>" - _ -> errorEP "ExactP: Exp: XExpTag is given wrong number of srcInfoPoints" - XChildTag l es -> - case srcInfoPoints l of - [a,b,c] -> do - printString "<%>" - mapM_ exactPC es - printStringAt (pos b) "</" - printStringAt (pos c) "%>" - - CorePragma l str e -> - case srcInfoPoints l of - [a,b] -> do - printString $ "{-# CORE " ++ show str - printStringAt (pos b) "#-}" - exactPC e - _ -> errorEP "ExactP: Exp: CorePragma is given wrong number of srcInfoPoints" - SCCPragma l str e -> - case srcInfoPoints l of - [a,b] -> do - printString $ "{-# SCC " ++ show str - printStringAt (pos b) "#-}" - exactPC e - _ -> errorEP "ExactP: Exp: SCCPragma is given wrong number of srcInfoPoints" - GenPragma l str (i1,i2) (i3,i4) e -> do - printStrs $ zip (srcInfoPoints l) ["{-# GENERATED", show str, show i1, ":", show i2, "-", show i3, ":", show i4, "#-}"] - exactPC e - Proc l p e -> - case srcInfoPoints l of - [a,b] -> do - printString "proc" - exactPC p - printStringAt (pos b) "->" - exactPC e - _ -> errorEP "ExactP: Exp: Proc is given wrong number of srcInfoPoints" - LeftArrApp l e1 e2 -> - case srcInfoPoints l of - [a] -> do - exactP e1 - printStringAt (pos a) "-<" - exactPC e2 - _ -> errorEP "ExactP: Exp: LeftArrApp is given wrong number of srcInfoPoints" - RightArrApp l e1 e2 -> do - case srcInfoPoints l of - [a] -> do - exactP e1 - printStringAt (pos a) ">-" - exactPC e2 - _ -> errorEP "ExactP: Exp: RightArrApp is given wrong number of srcInfoPoints" - LeftArrHighApp l e1 e2 -> do - case srcInfoPoints l of - [a] -> do - exactP e1 - printStringAt (pos a) "-<<" - exactPC e2 - _ -> errorEP "ExactP: Exp: LeftArrHighApp is given wrong number of srcInfoPoints" - RightArrHighApp l e1 e2 -> do - case srcInfoPoints l of - [a] -> do - exactP e1 - printStringAt (pos a) ">>-" - exactPC e2 - _ -> errorEP "ExactP: Exp: RightArrHighApp is given wrong number of srcInfoPoints" - -instance ExactP FieldUpdate where - exactP fup = case fup of - FieldUpdate l qn e -> do - case srcInfoPoints l of - [a] -> do - exactP qn - printStringAt (pos a) "=" - exactPC e - _ -> errorEP "ExactP: FieldUpdate is given wrong number of srcInfoPoints" - FieldPun l n -> exactP n - FieldWildcard l -> printString ".." - -instance ExactP Stmt where - exactP stmt = case stmt of - Generator l p e -> - case srcInfoPoints l of - [a] -> do - exactP p - printStringAt (pos a) "<-" - exactPC e - _ -> errorEP "ExactP: Stmt: Generator is given wrong number of srcInfoPoints" - Qualifier l e -> exactP e - LetStmt l bds -> do - printString "let" - exactPC bds - RecStmt l ss -> - case srcInfoPoints l of - a:pts -> do - printString "rec" - layoutList pts ss - _ -> errorEP "ExactP: Stmt: RecStmt is given too few srcInfoPoints" - -instance ExactP QualStmt where - exactP qstmt = case qstmt of - QualStmt l stmt -> exactP stmt - ThenTrans l e -> printString "then" >> exactPC e - ThenBy l e1 e2 -> do - case srcInfoPoints l of - [a,b] -> do - printString "then" - exactPC e1 - printStringAt (pos b) "by" - exactPC e2 - _ -> errorEP "ExactP: QualStmt: ThenBy is given wrong number of srcInfoPoints" - GroupBy l e -> do - printStrs $ zip (srcInfoPoints l) ["then","group","by"] - exactPC e - GroupUsing l e -> do - printStrs $ zip (srcInfoPoints l) ["then","group","using"] - exactPC e - GroupByUsing l e1 e2 -> do - let pts = srcInfoPoints l - printStrs $ zip (init pts) ["then","group","by"] - exactPC e1 - printStringAt (pos (last pts)) "using" - exactPC e2 - -instance ExactP Bracket where - exactP br = case br of - ExpBracket l e -> - case srcInfoPoints l of - [a,b] -> do - printString "[|" - exactPC e - printStringAt (pos b) "|]" - _ -> errorEP "ExactP: Bracket: ExpBracket is given wrong number of srcInfoPoints" - PatBracket l p -> - case srcInfoPoints l of - [a,b] -> do - printString "[p|" - exactPC p - printStringAt (pos b) "|]" - _ -> errorEP "ExactP: Bracket: PatBracket is given wrong number of srcInfoPoints" - TypeBracket l t -> do - case srcInfoPoints l of - [a,b] -> do - printString "[t|" - exactPC t - printStringAt (pos b) "|]" - _ -> errorEP "ExactP: Bracket: TypeBracket is given wrong number of srcInfoPoints" - DeclBracket l ds -> - case srcInfoPoints l of - a:pts -> do - printString "[d|" - layoutList (init pts) (sepFunBinds ds) - printStringAt (pos (last pts)) "|]" - _ -> errorEP "ExactP: Bracket: DeclBracket is given too few srcInfoPoints" - -instance ExactP XAttr where - exactP (XAttr l xn e) = - case srcInfoPoints l of - [a] -> do - exactP xn - printStringAt (pos a) "=" - exactPC e - _ -> errorEP "ExactP: XAttr is given wrong number of srcInfoPoints" - -instance ExactP Alt where - exactP (Alt l p galts mbs) = do - exactP p - exactPC galts - maybeEP (\bs -> printStringAt (pos (head (srcInfoPoints l))) "where" >> exactPC bs) mbs - -instance ExactP GuardedAlts where - exactP (UnGuardedAlt l e) = printString "->" >> exactPC e - exactP (GuardedAlts l galts) = mapM_ exactPC galts - -instance ExactP GuardedAlt where - exactP (GuardedAlt l stmts e) = do - bracketList ("|",",","->") (srcInfoPoints l) stmts - exactPC e - -instance ExactP Match where - exactP (Match l n ps rhs mbinds) = do - let pts = srcInfoPoints l - len = length pts - pars = len `div` 2 - (oPars,cParsWh) = splitAt pars pts - (cPars,whPt) = splitAt pars cParsWh -- whPt is either singleton or empty - printStrs (zip oPars (repeat "(")) - exactPC n - printStreams (zip (map pos cPars) (repeat $ printString ")")) (map (pos . ann &&& exactPC) ps) - exactPC rhs - maybeEP (\bds -> printStringAt (pos (head pts)) "where" >> exactPC bds) mbinds - exactP (InfixMatch l a n bs rhs mbinds) = do - let pts = srcInfoPoints l - len = length pts - pars = len `div` 2 - (oPars,cParsWh) = splitAt pars pts - (cPars,whPt) = splitAt pars cParsWh -- whPt is either singleton or empty - printStrs (zip oPars (repeat "(")) - exactPC a - epInfixName n - printInterleaved' (zip cPars (repeat ")")) bs - exactPC rhs - maybeEP (\bds -> printStringAt (pos (head whPt)) "where" >> exactPC bds) mbinds - -instance ExactP Rhs where - exactP (UnGuardedRhs l e) = printString "=" >> exactPC e - exactP (GuardedRhss l grhss) = mapM_ exactPC grhss - -instance ExactP GuardedRhs where - exactP (GuardedRhs l ss e) = - case srcInfoPoints l of - a:pts -> do - printString "|" - printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "=")]) ss - exactPC e - _ -> errorEP "ExactP: GuardedRhs is given wrong number of srcInfoPoints" - -instance ExactP Pat where - exactP pat = case pat of - PVar l n -> exactP n - PLit l lit -> exactP lit - PNeg l p -> printString "-" >> exactPC p - PNPlusK l n k -> - case srcInfoPoints l of - [a,b] -> do - exactP n - printStringAt (pos a) "+" - printStringAt (pos b) (show k) - _ -> errorEP "ExactP: Pat: PNPlusK is given wrong number of srcInfoPoints" - PInfixApp l pa qn pb -> exactP pa >> epInfixQName qn >> exactPC pb - PApp l qn ps -> exactP qn >> mapM_ exactPC ps - PTuple l ps -> parenList (srcInfoPoints l) ps - PList l ps -> squareList (srcInfoPoints l) ps - PParen l p -> parenList (srcInfoPoints l) [p] - PRec l qn pfs -> exactP qn >> curlyList (srcInfoPoints l) pfs - PAsPat l n p -> - case srcInfoPoints l of - [a] -> do - exactP n - printStringAt (pos a) "@" - exactPC p - _ -> errorEP "ExactP: Pat: PAsPat is given wrong number of srcInfoPoints" - PWildCard l -> printString "_" - PIrrPat l p -> printString "~" >> exactPC p - PatTypeSig l p t -> - case srcInfoPoints l of - [a] -> do - exactP p - printStringAt (pos a) "::" - exactPC t - _ -> errorEP "ExactP: Pat: PatTypeSig is given wrong number of srcInfoPoints" - PViewPat l e p -> - case srcInfoPoints l of - [a] -> do - exactP e - printStringAt (pos a) "->" - exactPC p - _ -> errorEP "ExactP: Pat: PViewPat is given wrong number of srcInfoPoints" - PRPat l rps -> squareList (srcInfoPoints l) rps - PXTag l xn attrs mat ps -> - case srcInfoPoints l of - [a,b,c,d,e] -> do - printString "<" - exactPC xn - mapM_ exactPC attrs - maybeEP exactPC mat - printStringAt (pos b) ">" - mapM_ exactPC ps - printStringAt (pos c) "</" - printWhitespace (pos d) - exactP xn - printStringAt (pos e) ">" - _ -> errorEP "ExactP: Pat: PXTag is given wrong number of srcInfoPoints" - PXETag l xn attrs mat -> - case srcInfoPoints l of - [a,b] -> do - printString "<" - exactPC xn - mapM_ exactPC attrs - maybeEP exactPC mat - printStringAt (pos b) "/>" - _ -> errorEP "ExactP: Pat: PXETag is given wrong number of srcInfoPoints" - PXPcdata l str -> printString str - PXPatTag l p -> - case srcInfoPoints l of - [a,b] -> do - printString "<%" - exactPC p - printString "%>" - _ -> errorEP "ExactP: Pat: PXPatTag is given wrong number of srcInfoPoints" - PXRPats l rps -> bracketList ("<[",",","]>") (srcInfoPoints l) rps - PExplTypeArg l qn t -> - case srcInfoPoints l of - [a,b] -> do - exactP qn - printStringAt (pos a) "{|" - exactPC t - printStringAt (pos b) "|}" - _ -> errorEP "ExactP: Pat: PExplTypeArg is given wrong number of srcInfoPoints" - PQuasiQuote l name qt -> printString $ "[$" ++ name ++ "|" ++ qt ++ "]" - PBangPat l p -> printString "!" >> exactPC p - -instance ExactP PatField where - exactP pf = case pf of - PFieldPat l qn p -> - case srcInfoPoints l of - [a] -> do - exactP qn - printStringAt (pos a) "=" - exactPC p - _ -> errorEP "ExactP: PatField: PFieldPat is given wrong number of srcInfoPoints" - PFieldPun l n -> exactP n - PFieldWildcard l -> printString ".." - -instance ExactP RPat where - exactP rpat = case rpat of - RPOp l rp op -> exactP rp >> exactPC op - RPEither l r1 r2 -> - case srcInfoPoints l of - [a] -> do - exactP r1 - printStringAt (pos a) "|" - exactPC r2 - _ -> errorEP "ExactP: RPat: RPEither is given wrong number of srcInfoPoints" - RPSeq l rps -> bracketList ("(|",",","|)") (srcInfoPoints l) rps - RPGuard l p stmts -> - case srcInfoPoints l of - a:pts -> do - printString "(|" - exactPC p - bracketList ("|",",","|)") pts stmts - _ -> errorEP "ExactP: RPat: RPGuard is given wrong number of srcInfoPoints" - RPCAs l n rp -> - case srcInfoPoints l of - [a] -> do - exactP n - printStringAt (pos a) "@:" - exactPC rp - _ -> errorEP "ExactP: RPat: RPCAs is given wrong number of srcInfoPoints" - RPAs l n rp -> - case srcInfoPoints l of - [a] -> do - exactP n - printStringAt (pos a) "@" - exactPC rp - _ -> errorEP "ExactP: RPat: RPAs is given wrong number of srcInfoPoints" - RPParen l rp -> do - parenList (srcInfoPoints l) [rp] - RPPat l p -> exactP p - -instance ExactP RPatOp where - exactP rop = printString $ case rop of - RPStar l -> "*" - RPStarG l -> "*!" - RPPlus l -> "+" - RPPlusG l -> "+!" - RPOpt l -> "?" - RPOptG l -> "?!" - -instance ExactP PXAttr where - exactP (PXAttr l xn p) = - case srcInfoPoints l of - [a] -> do - exactP xn - printStringAt (pos a) "=" - exactPC p - _ -> errorEP "ExactP: PXAttr is given wrong number of srcInfoPoints" - -instance ExactP XName where - exactP xn = case xn of - XName l name -> printString name - XDomName l dom name -> - case srcInfoPoints l of - [a,b,c] -> do - printString dom - printStringAt (pos b) ":" - printStringAt (pos c) name - _ -> errorEP "ExactP: XName: XDomName is given wrong number of srcInfoPoints" - -instance ExactP Binds where - exactP (BDecls l ds) = layoutList (srcInfoPoints l) (sepFunBinds ds) - exactP (IPBinds l ips) = layoutList (srcInfoPoints l) ips - -instance ExactP CallConv where - exactP (StdCall _) = printString "stdcall" - exactP (CCall _) = printString "ccall" - -instance ExactP Safety where - exactP (PlayRisky _) = printString "unsafe" - exactP (PlaySafe _ b) = printString $ if b then "threadsafe" else "safe" - -instance ExactP Rule where - exactP (Rule l str mact mrvs e1 e2) = - case srcInfoPoints l of - a:pts -> do - printString (show str) - maybeEP exactP mact - pts <- case mrvs of - Nothing -> return pts - Just rvs -> - case pts of - a:b:pts' -> do - printStringAt (pos a) "forall" - mapM_ exactPC rvs - printStringAt (pos b) "." - return pts' - _ -> errorEP "ExactP: Rule is given too few srcInfoPoints" - case pts of - [x] -> do - exactPC e1 - printStringAt (pos x) "=" - exactPC e2 - _ -> errorEP "ExactP: Rule is given wrong number of srcInfoPoints" - _ -> errorEP "ExactP: Rule is given too few srcInfoPoints" - -instance ExactP RuleVar where - exactP (TypedRuleVar l n t) = do - case srcInfoPoints l of - [a,b,c] -> do - printString "(" - exactPC n - printStringAt (pos b) "::" - exactPC t - printStringAt (pos c) ")" - _ -> errorEP "ExactP: RuleVar: TypedRuleVar is given wrong number of srcInfoPoints" - exactP (RuleVar l n) = exactP n - -instance ExactP Activation where - exactP (ActiveFrom l i) = - printPoints l ["[", show i, "]"] - exactP (ActiveUntil l i) = - printPoints l ["[", "~", show i, "]"] - -instance ExactP FieldDecl where - exactP (FieldDecl l ns bt) = do - let pts = srcInfoPoints l - printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "::")]) ns - exactPC bt - -instance ExactP IPBind where - exactP (IPBind l ipn e) = do - case srcInfoPoints l of - [a] -> do - exactP ipn - printStringAt (pos a) "=" - exactPC e - _ -> errorEP "ExactP: IPBind is given wrong number of srcInfoPoints"
− src/Language/Haskell/Exts/Annotated/Fixity.hs
@@ -1,341 +0,0 @@------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Annotated.Fixity --- Copyright : (c) Niklas Broberg 2009 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- Fixity information to give the parser so that infix operators can --- be parsed properly. --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.Annotated.Fixity - ( - -- * Fixity representation - Fixity(..) - -- | The following three functions all create lists of - -- fixities from textual representations of operators. - -- The intended usage is e.g. - -- - -- > fixs = infixr_ 0 ["$","$!","`seq`"] - -- - -- Note that the operators are expected as you would - -- write them infix, i.e. with ` characters surrounding - -- /varid/ operators, and /varsym/ operators written as is. - , infix_, infixl_, infixr_ - -- ** Collections of fixities - , preludeFixities, baseFixities - - -- * Applying fixities to an AST - , AppFixity(..) - ) where - -import Language.Haskell.Exts.Annotated.Syntax -import Language.Haskell.Exts.SrcLoc - -import Language.Haskell.Exts.Fixity ( Fixity(..), infix_, infixl_, infixr_, preludeFixities, baseFixities ) -import qualified Language.Haskell.Exts.Syntax as S ( Assoc(..), QOp(..), Op(..), QName(..), Name(..), SpecialCon(..), ModuleName ) -import Language.Haskell.Exts.Annotated.Simplify ( sQOp, sOp, sAssoc, sQName, sModuleHead, sName ) - -import Data.Char (isUpper) -import Control.Monad (when, (<=<), liftM, liftM2, liftM3, liftM4) -import Data.Traversable (mapM) -import Prelude hiding (mapM) - --- | All AST elements that may include expressions which in turn may --- need fixity tweaking will be instances of this class. -class AppFixity ast where - -- | Tweak any expressions in the element to account for the - -- fixities given. Assumes that all operator expressions are - -- fully left associative chains to begin with. - applyFixities :: Monad m => [Fixity] -- ^ The fixities to account for. - -> ast SrcSpanInfo -- ^ The element to tweak. - -> m (ast SrcSpanInfo) -- ^ The same element, but with operator expressions updated, or a failure. - - -instance AppFixity Exp where - applyFixities fixs = infFix fixs <=< leafFix fixs - where -- This is the real meat case. We can assume a left-associative list to begin with. - infFix fixs (InfixApp l2 a op2 z) = do - e <- infFix fixs a - case e of - InfixApp l1 x op1 y -> do - let (a1,p1) = askFixity fixs op1 - (a2,p2) = askFixity fixs op2 - when (p1 == p2 && (a1 /= a2 || a1 == S.AssocNone )) -- Ambiguous infix expression! - $ fail "Ambiguous infix expression" - if (p1 > p2 || p1 == p2 && (a1 == S.AssocLeft || a2 == S.AssocNone)) -- Already right order - then return $ InfixApp l2 e op2 z - else liftM (InfixApp l2 x op1) (infFix fixs $ InfixApp (ann y <++> ann z) y op2 z) - _ -> return $ InfixApp l2 e op2 z - - infFix _ e = return e - -instance AppFixity Pat where - applyFixities fixs = infFix fixs <=< leafFixP fixs - where -- This is the real meat case. We can assume a left-associative list to begin with. - infFix fixs (PInfixApp l2 a op2 z) = do - p <- infFix fixs a - case p of - PInfixApp l1 x op1 y -> do - let (a1,p1) = askFixityP fixs op1 - (a2,p2) = askFixityP fixs op2 - when (p1 == p2 && (a1 /= a2 || a1 == S.AssocNone )) -- Ambiguous infix expression! - $ fail "Ambiguous infix expression" - if (p1 > p2 || p1 == p2 && (a1 == S.AssocLeft || a2 == S.AssocNone)) -- Already right order - then return $ PInfixApp l2 p op2 z - else liftM (PInfixApp l2 x op1) (infFix fixs $ PInfixApp (ann y <++> ann z) y op2 z) - _ -> return $ PInfixApp l2 p op2 z - - infFix _ p = return p - --- Internal: lookup associativity and precedence of an operator -askFixity :: [Fixity] -> QOp l -> (S.Assoc, Int) -askFixity xs k = askFix xs (f $ sQOp k) -- undefined -- \k -> askFixityP xs (f k) -- lookupWithDefault (AssocLeft, 9) (f k) mp - where - f (S.QVarOp x) = g x - f (S.QConOp x) = g x - - g (S.Special S.Cons) = S.UnQual (S.Symbol ":") - g x = x - --- Same using patterns -askFixityP :: [Fixity] -> QName l -> (S.Assoc, Int) -askFixityP xs qn = askFix xs (g $ sQName qn) - where - g (S.Special S.Cons) = S.UnQual (S.Symbol ":") - g x = x - -askFix :: [Fixity] -> S.QName -> (S.Assoc, Int) -askFix xs = \k -> lookupWithDefault (S.AssocLeft, 9) k mp - where - lookupWithDefault def k mp = case lookup k mp of - Nothing -> def - Just x -> x - - mp = [(x,(a,p)) | Fixity a p x <- xs] - - -------------------------------------------------------------------- --- Boilerplate - yuck!! Everything below here is internal stuff - -instance AppFixity Module where - applyFixities fixs (Module l mmh prs imp decls) = - liftM (Module l mmh prs imp) $ appFixDecls (Just mn) fixs decls - where (mn, _, _) = sModuleHead mmh - applyFixities fixs (XmlPage l mn os xn xas mexp cs) = - liftM3 (XmlPage l mn os xn) (fix xas) (fix mexp) (fix cs) - where fix xs = mapM (applyFixities fixs) xs - applyFixities fixs (XmlHybrid l mmh prs imp decls xn xas mexp cs) = - liftM4 (flip (XmlHybrid l mmh prs imp) xn) (appFixDecls (Just mn) fixs decls) - (fixe xas) (fixe mexp) (fixe cs) - where fixe xs = let extraFixs = getFixities (Just mn) decls - in mapM (applyFixities (fixs++extraFixs)) xs - (mn, _, _) = sModuleHead mmh - -instance AppFixity Decl where - applyFixities fixs decl = case decl of - ClassDecl l ctxt dh deps cdecls -> liftM (ClassDecl l ctxt dh deps) $ mapM (mapM fix) cdecls - InstDecl l ctxt ih idecls -> liftM (InstDecl l ctxt ih) $ mapM (mapM fix) idecls - SpliceDecl l spl -> liftM (SpliceDecl l) $ fix spl - FunBind l matches -> liftM (FunBind l) $ mapM fix matches - PatBind l p mt rhs bs -> liftM3 (flip (PatBind l) mt) (fix p) (fix rhs) (mapM fix bs) - AnnPragma l ann -> liftM (AnnPragma l) $ fix ann - _ -> return decl - where fix x = applyFixities fixs x - -appFixDecls :: Monad m => Maybe S.ModuleName -> [Fixity] -> [Decl SrcSpanInfo] -> m [Decl SrcSpanInfo] -appFixDecls mmdl fixs decls = - let extraFixs = getFixities mmdl decls - in mapM (applyFixities (fixs++extraFixs)) decls - -getFixities mmdl = concatMap (getFixity mmdl) -getFixity mmdl (InfixDecl _ a mp ops) = let p = maybe 9 id mp in map (Fixity (sAssoc a) p) (concatMap g ops) - where g (VarOp l x) = f $ sName x - g (ConOp l x) = f $ sName x - f x = case mmdl of - Nothing -> [ S.UnQual x] - Just m -> [S.Qual m x, S.UnQual x] -getFixity _ _ = [] - -instance AppFixity Annotation where - applyFixities fixs ann = case ann of - Ann l n e -> liftM (Ann l n) $ fix e - TypeAnn l n e -> liftM (TypeAnn l n) $ fix e - ModuleAnn l e -> liftM (ModuleAnn l) $ fix e - where fix x = applyFixities fixs x - -instance AppFixity ClassDecl where - applyFixities fixs (ClsDecl l decl) = liftM (ClsDecl l) $ applyFixities fixs decl - applyFixities _ cdecl = return cdecl - -instance AppFixity InstDecl where - applyFixities fixs (InsDecl l decl) = liftM (InsDecl l) $ applyFixities fixs decl - applyFixities _ idecl = return idecl - -instance AppFixity Match where - applyFixities fixs match = case match of - Match l n ps rhs bs -> liftM3 (Match l n) (mapM fix ps) (fix rhs) (mapM fix bs) - InfixMatch l a n ps rhs bs -> liftM4 (flip (InfixMatch l) n) (fix a) (mapM fix ps) (fix rhs) (mapM fix bs) - where fix x = applyFixities fixs x - -instance AppFixity Rhs where - applyFixities fixs rhs = case rhs of - UnGuardedRhs l e -> liftM (UnGuardedRhs l) $ fix e - GuardedRhss l grhss -> liftM (GuardedRhss l) $ mapM fix grhss - where fix x = applyFixities fixs x - -instance AppFixity GuardedRhs where - applyFixities fixs (GuardedRhs l stmts e) = liftM2 (GuardedRhs l) (mapM fix stmts) $ fix e - where fix x = applyFixities fixs x - -instance AppFixity PatField where - applyFixities fixs (PFieldPat l n p) = liftM (PFieldPat l n) $ applyFixities fixs p - applyFixities _ pf = return pf - -instance AppFixity RPat where - applyFixities fixs rp = case rp of - RPOp l rp op -> liftM (flip (RPOp l) op) $ fix rp - RPEither l a b -> liftM2 (RPEither l) (fix a) (fix b) - RPSeq l rps -> liftM (RPSeq l) $ mapM fix rps - RPGuard l p stmts -> liftM2 (RPGuard l) (fix p) $ mapM fix stmts - RPCAs l n rp -> liftM (RPCAs l n) $ fix rp - RPAs l n rp -> liftM (RPAs l n) $ fix rp - RPParen l rp -> liftM (RPParen l) $ fix rp - RPPat l p -> liftM (RPPat l) $ fix p - where fix x = applyFixities fixs x - -instance AppFixity PXAttr where - applyFixities fixs (PXAttr l n p) = liftM (PXAttr l n) $ applyFixities fixs p - -instance AppFixity Stmt where - applyFixities fixs stmt = case stmt of - Generator l p e -> liftM2 (Generator l) (fix p) (fix e) - Qualifier l e -> liftM (Qualifier l) $ fix e - LetStmt l bs -> liftM (LetStmt l) $ fix bs -- special behavior - RecStmt l stmts -> liftM (RecStmt l) $ mapM fix stmts - where fix x = applyFixities fixs x - -instance AppFixity Binds where - applyFixities fixs bs = case bs of - BDecls l decls -> liftM (BDecls l) $ appFixDecls Nothing fixs decls -- special behavior - IPBinds l ips -> liftM (IPBinds l) $ mapM fix ips - where fix x = applyFixities fixs x - - -instance AppFixity IPBind where - applyFixities fixs (IPBind l n e) = liftM (IPBind l n) $ applyFixities fixs e - -instance AppFixity FieldUpdate where - applyFixities fixs (FieldUpdate l n e) = liftM (FieldUpdate l n) $ applyFixities fixs e - applyFixities _ fup = return fup - -instance AppFixity Alt where - applyFixities fixs (Alt l p galts bs) = liftM3 (Alt l) (fix p) (fix galts) (mapM fix bs) - where fix x = applyFixities fixs x - -instance AppFixity GuardedAlts where - applyFixities fixs galts = case galts of - UnGuardedAlt l e -> liftM (UnGuardedAlt l) $ fix e - GuardedAlts l galts -> liftM (GuardedAlts l) $ mapM fix galts - where fix x = applyFixities fixs x - -instance AppFixity GuardedAlt where - applyFixities fixs (GuardedAlt l stmts e) = liftM2 (GuardedAlt l) (mapM fix stmts) (fix e) - where fix x = applyFixities fixs x - -instance AppFixity QualStmt where - applyFixities fixs qstmt = case qstmt of - QualStmt l s -> liftM (QualStmt l) $ fix s - ThenTrans l e -> liftM (ThenTrans l) $ fix e - ThenBy l e1 e2 -> liftM2 (ThenBy l) (fix e1) (fix e2) - GroupBy l e -> liftM (GroupBy l) (fix e) - GroupUsing l e -> liftM (GroupUsing l) (fix e) - GroupByUsing l e1 e2 -> liftM2 (GroupByUsing l) (fix e1) (fix e2) - where fix x = applyFixities fixs x - -instance AppFixity Bracket where - applyFixities fixs br = case br of - ExpBracket l e -> liftM (ExpBracket l) $ fix e - PatBracket l p -> liftM (PatBracket l) $ fix p - DeclBracket l ds -> liftM (DeclBracket l) $ mapM fix ds - _ -> return br - where fix x = applyFixities fixs x - -instance AppFixity Splice where - applyFixities fixs (ParenSplice l e) = liftM (ParenSplice l) $ applyFixities fixs e - applyFixities _ s = return s - -instance AppFixity XAttr where - applyFixities fixs (XAttr l n e) = liftM (XAttr l n) $ applyFixities fixs e - - --- the boring boilerplate stuff for expressions too --- Recursively fixes the "leaves" of the infix chains, --- without yet touching the chain itself. We assume all chains are --- left-associate to begin with. -leafFix fixs e = case e of - InfixApp l e1 op e2 -> liftM2 (flip (InfixApp l) op) (leafFix fixs e1) (fix e2) - App l e1 e2 -> liftM2 (App l) (fix e1) (fix e2) - NegApp l e -> liftM (NegApp l) $ fix e - Lambda l pats e -> liftM2 (Lambda l) (mapM fix pats) $ fix e - Let l bs e -> liftM2 (Let l) (fix bs) $ fix e - If l e a b -> liftM3 (If l) (fix e) (fix a) (fix b) - Case l e alts -> liftM2 (Case l) (fix e) $ mapM fix alts - Do l stmts -> liftM (Do l) $ mapM fix stmts - MDo l stmts -> liftM (MDo l) $ mapM fix stmts - Tuple l exps -> liftM (Tuple l) $ mapM fix exps - List l exps -> liftM (List l) $ mapM fix exps - Paren l e -> liftM (Paren l) $ fix e - LeftSection l e op -> liftM (flip (LeftSection l) op) (fix e) - RightSection l op e -> liftM (RightSection l op) $ fix e - RecConstr l n fups -> liftM (RecConstr l n) $ mapM fix fups - RecUpdate l e fups -> liftM2 (RecUpdate l) (fix e) $ mapM fix fups - EnumFrom l e -> liftM (EnumFrom l) $ fix e - EnumFromTo l e1 e2 -> liftM2 (EnumFromTo l) (fix e1) (fix e2) - EnumFromThen l e1 e2 -> liftM2 (EnumFromThen l) (fix e1) (fix e2) - EnumFromThenTo l e1 e2 e3 -> liftM3 (EnumFromThenTo l) (fix e1) (fix e2) (fix e3) - ListComp l e quals -> liftM2 (ListComp l) (fix e) $ mapM fix quals - ParComp l e qualss -> liftM2 (ParComp l) (fix e) $ mapM (mapM fix) qualss - ExpTypeSig l e t -> liftM (flip (ExpTypeSig l) t) (fix e) - BracketExp l b -> liftM (BracketExp l) $ fix b - SpliceExp l s -> liftM (SpliceExp l) $ fix s - XTag l n ats mexp cs -> liftM3 (XTag l n) (mapM fix ats) (mapM fix mexp) (mapM fix cs) - XETag l n ats mexp -> liftM2 (XETag l n) (mapM fix ats) (mapM fix mexp) - XExpTag l e -> liftM (XExpTag l) $ fix e - XChildTag l cs -> liftM (XChildTag l) $ mapM fix cs - Proc l p e -> liftM2 (Proc l) (fix p) (fix e) - LeftArrApp l e1 e2 -> liftM2 (LeftArrApp l) (fix e1) (fix e2) - RightArrApp l e1 e2 -> liftM2 (RightArrApp l) (fix e1) (fix e2) - LeftArrHighApp l e1 e2 -> liftM2 (LeftArrHighApp l) (fix e1) (fix e2) - RightArrHighApp l e1 e2 -> liftM2 (RightArrHighApp l) (fix e1) (fix e2) - CorePragma l s e -> liftM (CorePragma l s) (fix e) - SCCPragma l s e -> liftM (SCCPragma l s) (fix e) - GenPragma l s ab cd e -> liftM (GenPragma l s ab cd) (fix e) - - _ -> return e - where - fix x = applyFixities fixs x - -leafFixP fixs p = case p of - PNeg l p -> liftM (PNeg l) $ fix p - PApp l n ps -> liftM (PApp l n) $ mapM fix ps - PTuple l ps -> liftM (PTuple l) $ mapM fix ps - PList l ps -> liftM (PList l) $ mapM fix ps - PParen l p -> liftM (PParen l) $ fix p - PRec l n pfs -> liftM (PRec l n) $ mapM fix pfs - PAsPat l n p -> liftM (PAsPat l n) $ fix p - PIrrPat l p -> liftM (PIrrPat l) $ fix p - PatTypeSig l p t -> liftM (flip (PatTypeSig l) t) (fix p) - PViewPat l e p -> liftM2 (PViewPat l) (fix e) (fix p) - PRPat l rps -> liftM (PRPat l) $ mapM fix rps - PXTag l n ats mp ps -> liftM3 (PXTag l n) (mapM fix ats) (mapM fix mp) (mapM fix ps) - PXETag l n ats mp -> liftM2 (PXETag l n) (mapM fix ats) (mapM fix mp) - PXPatTag l p -> liftM (PXPatTag l) $ fix p - PXRPats l rps -> liftM (PXRPats l) $ mapM fix rps - PBangPat l p -> liftM (PBangPat l) $ fix p - _ -> return p - where fix x = applyFixities fixs x
− src/Language/Haskell/Exts/Annotated/Simplify.hs
@@ -1,520 +0,0 @@------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Annotated.Simplify --- Copyright : (c) Niklas Broberg 2009 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : experimental --- Portability : portable --- --- This module contains code for translating from the annotated --- complex AST in Language.Haskell.Exts.Annotated.Syntax --- to the simpler, sparsely annotated AST in Language.Haskell.Exts.Syntax. --- --- A function @sXYZ@ translates an annotated AST node of type @XYZ l@ into --- a simple AST node of type @XYZ@. I would have prefered to use a MPTC --- with an fd/type family to get a single exported function name, but --- I wish to stay Haskell 2010 compliant. Let's hope for Haskell 2011. --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.Annotated.Simplify where - -import Language.Haskell.Exts.Annotated.Syntax -import qualified Language.Haskell.Exts.Syntax as S - -import Language.Haskell.Exts.SrcLoc - --- | Translate an annotated AST node representing a Haskell module, into --- a simpler version that retains (almost) only abstract information. --- In particular, XML and hybrid XML pages enabled by the XmlSyntax extension --- are translated into standard Haskell modules with a @page@ function. -sModule :: SrcInfo loc => Module loc -> S.Module -sModule md = case md of - Module l mmh oss ids ds -> - let (mn, mwt, mes) = sModuleHead mmh - in S.Module (getPointLoc l) mn (map sModulePragma oss) mwt mes (map sImportDecl ids) (map sDecl ds) - XmlPage l mn oss xn attrs mat es -> - let loc = getPointLoc l - in S.Module loc (sModuleName mn) (map sModulePragma oss) - Nothing - (Just [S.EVar $ S.UnQual $ S.Ident "page"]) - [] - [pageFun loc $ S.XTag loc (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es)] - XmlHybrid l mmh oss ids ds xn attrs mat es -> - let loc1 = getPointLoc l - loc2 = getPointLoc (ann xn) - (mn, mwt, mes) = sModuleHead mmh - in S.Module loc1 mn (map sModulePragma oss) mwt mes (map sImportDecl ids) - (map sDecl ds ++ [pageFun loc2 $ S.XTag loc2 (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es)]) - where pageFun :: SrcLoc -> S.Exp -> S.Decl - pageFun loc e = S.PatBind loc namePat Nothing rhs (S.BDecls []) - where namePat = S.PVar $ S.Ident "page" - rhs = S.UnGuardedRhs e - - --- | Translate an annotated AST node representing a Haskell declaration --- into a simpler version. Note that in the simpler version, all declaration --- nodes are still annotated by 'SrcLoc's. -sDecl :: SrcInfo loc => Decl loc -> S.Decl -sDecl decl = case decl of - TypeDecl l dh t -> - let (n, tvs) = sDeclHead dh - in S.TypeDecl (getPointLoc l) n tvs (sType t) - TypeFamDecl l dh mk -> - let (n, tvs) = sDeclHead dh - in S.TypeFamDecl (getPointLoc l) n tvs (fmap sKind mk) - DataDecl l dn mctxt dh constrs mder -> - let (n, tvs) = sDeclHead dh - in S.DataDecl (getPointLoc l) (sDataOrNew dn) (maybe [] sContext mctxt) n tvs (map sQualConDecl constrs) (maybe [] sDeriving mder) - GDataDecl l dn mctxt dh mk gds mder -> - let (n, tvs) = sDeclHead dh - in S.GDataDecl (getPointLoc l) (sDataOrNew dn) (maybe [] sContext mctxt) n tvs (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder) - DataFamDecl l mctxt dh mk -> - let (n, tvs) = sDeclHead dh - in S.DataFamDecl (getPointLoc l) (maybe [] sContext mctxt) n tvs (fmap sKind mk) - TypeInsDecl l t1 t2 -> S.TypeInsDecl (getPointLoc l) (sType t1) (sType t2) - DataInsDecl l dn t constrs mder -> - S.DataInsDecl (getPointLoc l) (sDataOrNew dn) (sType t) (map sQualConDecl constrs) (maybe [] sDeriving mder) - GDataInsDecl l dn t mk gds mder -> - S.GDataInsDecl (getPointLoc l) (sDataOrNew dn) (sType t) (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder) - ClassDecl l mctxt dh fds mcds -> - let (n, tvs) = sDeclHead dh - in S.ClassDecl (getPointLoc l) (maybe [] sContext mctxt) n tvs (map sFunDep fds) (maybe [] (map sClassDecl) mcds) - InstDecl l mctxt ih mids -> - let (qn, ts) = sInstHead ih - in S.InstDecl (getPointLoc l) (maybe [] sContext mctxt) qn ts (maybe [] (map sInstDecl) mids) - DerivDecl l mctxt ih -> - let (qn, ts) = sInstHead ih - in S.DerivDecl (getPointLoc l) (maybe [] sContext mctxt) qn ts - InfixDecl l ass prec ops -> S.InfixDecl (getPointLoc l) (sAssoc ass) (maybe 9 id prec) (map sOp ops) - DefaultDecl l ts -> S.DefaultDecl (getPointLoc l) (map sType ts) - SpliceDecl l sp -> S.SpliceDecl (getPointLoc l) (sExp sp) - TypeSig l ns t -> S.TypeSig (getPointLoc l) (map sName ns) (sType t) - FunBind _ ms -> S.FunBind (map sMatch ms) - PatBind l p mt rhs mbs -> - S.PatBind (getPointLoc l) (sPat p) (fmap sType mt) (sRhs rhs) (maybe (S.BDecls []) sBinds mbs) - ForImp l cc msaf mstr n t -> - S.ForImp (getPointLoc l) (sCallConv cc) (maybe (S.PlaySafe False) sSafety msaf) (maybe "" id mstr) (sName n) (sType t) - ForExp l cc mstr n t -> - S.ForExp (getPointLoc l) (sCallConv cc) (maybe "" id mstr) (sName n) (sType t) - RulePragmaDecl l rs -> S.RulePragmaDecl (getPointLoc l) (map sRule rs) - DeprPragmaDecl l nsstrs -> S.DeprPragmaDecl (getPointLoc l) (map (\(ns, str) -> (map sName ns, str)) nsstrs) - WarnPragmaDecl l nsstrs -> S.WarnPragmaDecl (getPointLoc l) (map (\(ns, str) -> (map sName ns, str)) nsstrs) - InlineSig l b mact qn -> S.InlineSig (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn) - InlineConlikeSig l mact qn -> S.InlineConlikeSig (getPointLoc l) (maybe S.AlwaysActive sActivation mact) (sQName qn) - SpecSig l qn ts -> S.SpecSig (getPointLoc l) (sQName qn) (map sType ts) - SpecInlineSig l b mact qn ts -> - S.SpecInlineSig (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn) (map sType ts) - InstSig l mctxt ih -> - let (qn, ts) = sInstHead ih - in S.InstSig (getPointLoc l) (maybe [] sContext mctxt) qn ts - AnnPragma l ann -> - S.AnnPragma (getPointLoc l) (sAnnotation ann) - -sAnnotation :: SrcInfo loc => Annotation loc -> S.Annotation -sAnnotation ann = case ann of - Ann _ n e -> S.Ann (sName n) (sExp e) - TypeAnn _ n e -> S.TypeAnn (sName n) (sExp e) - ModuleAnn _ e -> S.ModuleAnn (sExp e) - -sModuleName :: ModuleName l -> S.ModuleName -sModuleName (ModuleName _ str) = S.ModuleName str - -sSpecialCon :: SpecialCon l -> S.SpecialCon -sSpecialCon sc = case sc of - UnitCon _ -> S.UnitCon - ListCon _ -> S.ListCon - FunCon _ -> S.FunCon - TupleCon _ b k -> S.TupleCon b k - Cons _ -> S.Cons - UnboxedSingleCon _ -> S.UnboxedSingleCon - -sQName :: QName l -> S.QName -sQName qn = case qn of - Qual _ mn n -> S.Qual (sModuleName mn) (sName n) - UnQual _ n -> S.UnQual (sName n) - Special _ sc -> S.Special (sSpecialCon sc) - -sName :: Name l -> S.Name -sName (Ident _ str) = S.Ident str -sName (Symbol _ str) = S.Symbol str - -sIPName :: IPName l -> S.IPName -sIPName (IPDup _ str) = S.IPDup str -sIPName (IPLin _ str) = S.IPLin str - -sQOp :: QOp l -> S.QOp -sQOp (QVarOp _ qn) = S.QVarOp (sQName qn) -sQOp (QConOp _ qn) = S.QConOp (sQName qn) - -sOp :: Op l -> S.Op -sOp (VarOp _ n) = S.VarOp (sName n) -sOp (ConOp _ n) = S.ConOp (sName n) - -sCName :: CName l -> S.CName -sCName (VarName _ n) = S.VarName (sName n) -sCName (ConName _ n) = S.ConName (sName n) - -sModuleHead :: Maybe (ModuleHead l) -> (S.ModuleName, Maybe (S.WarningText), Maybe [S.ExportSpec]) -sModuleHead mmh = case mmh of - Nothing -> (S.main_mod, Nothing, Just [S.EVar (S.UnQual S.main_name)]) - Just (ModuleHead _ mn mwt mel) -> (sModuleName mn, fmap sWarningText mwt, fmap sExportSpecList mel) - -sExportSpecList :: ExportSpecList l -> [S.ExportSpec] -sExportSpecList (ExportSpecList _ ess) = map sExportSpec ess - -sExportSpec :: ExportSpec l -> S.ExportSpec -sExportSpec es = case es of - EVar _ qn -> S.EVar (sQName qn) - EAbs _ qn -> S.EAbs (sQName qn) - EThingAll _ qn -> S.EThingAll (sQName qn) - EThingWith _ qn cns -> S.EThingWith (sQName qn) (map sCName cns) - EModuleContents _ mn -> S.EModuleContents (sModuleName mn) - -sImportDecl :: SrcInfo loc => ImportDecl loc -> S.ImportDecl -sImportDecl (ImportDecl l mn qu src mpkg as misl) = - S.ImportDecl (getPointLoc l) (sModuleName mn) qu src mpkg (fmap sModuleName as) (fmap sImportSpecList misl) - -sImportSpecList :: ImportSpecList l -> (Bool, [S.ImportSpec]) -sImportSpecList (ImportSpecList _ b iss) = (b, map sImportSpec iss) - -sImportSpec :: ImportSpec l -> S.ImportSpec -sImportSpec is = case is of - IVar _ n -> S.IVar (sName n) - IAbs _ n -> S.IAbs (sName n) - IThingAll _ n -> S.IThingAll (sName n) - IThingWith _ n cns -> S.IThingWith (sName n) (map sCName cns) - -sAssoc :: Assoc l -> S.Assoc -sAssoc a = case a of - AssocNone _ -> S.AssocNone - AssocLeft _ -> S.AssocLeft - AssocRight _ -> S.AssocRight - -sDeclHead :: DeclHead l -> (S.Name, [S.TyVarBind]) -sDeclHead dh = case dh of - DHead _ n tvs -> (sName n, map sTyVarBind tvs) - DHInfix _ tva n tvb -> (sName n, map sTyVarBind [tva,tvb]) - DHParen _ dh -> sDeclHead dh - -sInstHead :: InstHead l -> (S.QName, [S.Type]) -sInstHead ih = case ih of - IHead _ qn ts -> (sQName qn, map sType ts) - IHInfix _ ta qn tb -> (sQName qn, map sType [ta,tb]) - IHParen _ ih -> sInstHead ih - -sDataOrNew :: DataOrNew l -> S.DataOrNew -sDataOrNew (DataType _) = S.DataType -sDataOrNew (NewType _) = S.NewType - -sDeriving :: (Deriving l) -> [(S.QName, [S.Type])] -sDeriving (Deriving _ ihs) = map sInstHead ihs - -sBinds :: SrcInfo loc => Binds loc -> S.Binds -sBinds bs = case bs of - BDecls _ decls -> S.BDecls (map sDecl decls) - IPBinds _ ipbds -> S.IPBinds (map sIPBind ipbds) - -sIPBind :: SrcInfo loc => IPBind loc -> S.IPBind -sIPBind (IPBind l ipn e) = S.IPBind (getPointLoc l) (sIPName ipn) (sExp e) - -sMatch :: SrcInfo loc => Match loc -> S.Match -sMatch (Match l n ps rhs mwhere) = - S.Match (getPointLoc l) (sName n) (map sPat ps) Nothing (sRhs rhs) (maybe (S.BDecls []) sBinds mwhere) -sMatch (InfixMatch l pa n pbs rhs mwhere) = - S.Match (getPointLoc l) (sName n) (map sPat (pa:pbs)) Nothing (sRhs rhs) (maybe (S.BDecls []) sBinds mwhere) - -sQualConDecl :: SrcInfo loc => QualConDecl loc -> S.QualConDecl -sQualConDecl (QualConDecl l mtvs mctxt cd) = - S.QualConDecl (getPointLoc l) (maybe [] (map sTyVarBind) mtvs) (maybe [] sContext mctxt) (sConDecl cd) - -sConDecl :: ConDecl l -> S.ConDecl -sConDecl cd = case cd of - ConDecl _ n bts -> S.ConDecl (sName n) (map sBangType bts) - InfixConDecl _ bta n btb -> S.InfixConDecl (sBangType bta) (sName n) (sBangType btb) - RecDecl _ n fds -> S.RecDecl (sName n) (map sFieldDecl fds) - -sFieldDecl :: FieldDecl l -> ([S.Name], S.BangType) -sFieldDecl (FieldDecl _ ns bt) = (map sName ns, sBangType bt) - -sGadtDecl :: SrcInfo loc => GadtDecl loc -> S.GadtDecl -sGadtDecl (GadtDecl l n t) = S.GadtDecl (getPointLoc l) (sName n) (sType t) - -sClassDecl :: SrcInfo loc => ClassDecl loc -> S.ClassDecl -sClassDecl cd = case cd of - ClsDecl _ d -> S.ClsDecl (sDecl d) - ClsDataFam l mctxt dh mk -> - let (n, tvs) = sDeclHead dh - in S.ClsDataFam (getPointLoc l) (maybe [] sContext mctxt) n tvs (fmap sKind mk) - ClsTyFam l dh mk -> - let (n, tvs) = sDeclHead dh - in S.ClsTyFam (getPointLoc l) n tvs (fmap sKind mk) - ClsTyDef l t1 t2 -> - S.ClsTyDef (getPointLoc l) (sType t1) (sType t2) - -sInstDecl :: SrcInfo loc => InstDecl loc -> S.InstDecl -sInstDecl id = case id of - InsDecl _ d -> S.InsDecl (sDecl d) - InsType l t1 t2 -> S.InsType (getPointLoc l) (sType t1) (sType t2) - InsData l dn t constrs mder -> - S.InsData (getPointLoc l) (sDataOrNew dn) (sType t) (map sQualConDecl constrs) (maybe [] sDeriving mder) - InsGData l dn t mk gds mder -> - S.InsGData (getPointLoc l) (sDataOrNew dn) (sType t) (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder) --- InsInline l b mact qn -> S.InsInline (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn) - -sBangType :: BangType l -> S.BangType -sBangType bt = case bt of - BangedTy _ t -> S.BangedTy (sType t) - UnBangedTy _ t -> S.UnBangedTy (sType t) - UnpackedTy _ t -> S.UnpackedTy (sType t) - -sRhs :: SrcInfo loc => Rhs loc -> S.Rhs -sRhs (UnGuardedRhs _ e) = S.UnGuardedRhs (sExp e) -sRhs (GuardedRhss _ grhss) = S.GuardedRhss (map sGuardedRhs grhss) - -sGuardedRhs :: SrcInfo loc => GuardedRhs loc -> S.GuardedRhs -sGuardedRhs (GuardedRhs l ss e) = S.GuardedRhs (getPointLoc l) (map sStmt ss) (sExp e) - -sType :: Type l -> S.Type -sType t = case t of - TyForall _ mtvs mctxt t -> S.TyForall (fmap (map sTyVarBind) mtvs) (maybe [] sContext mctxt) (sType t) - TyFun _ t1 t2 -> S.TyFun (sType t1) (sType t2) - TyTuple _ bx ts -> S.TyTuple bx (map sType ts) - TyList _ t -> S.TyList (sType t) - TyApp _ t1 t2 -> S.TyApp (sType t1) (sType t2) - TyVar _ n -> S.TyVar (sName n) - TyCon _ qn -> S.TyCon (sQName qn) - TyParen _ t -> S.TyParen (sType t) - TyInfix _ ta qn tb -> S.TyInfix (sType ta) (sQName qn) (sType tb) - TyKind _ t k -> S.TyKind (sType t) (sKind k) - -sTyVarBind :: TyVarBind l -> S.TyVarBind -sTyVarBind (KindedVar _ n k) = S.KindedVar (sName n) (sKind k) -sTyVarBind (UnkindedVar _ n) = S.UnkindedVar (sName n) - -sKind :: Kind l -> S.Kind -sKind k = case k of - KindStar _ -> S.KindStar - KindBang _ -> S.KindBang - KindFn _ k1 k2 -> S.KindFn (sKind k1) (sKind k2) - KindParen _ k -> S.KindParen (sKind k) - KindVar _ n -> S.KindVar (sName n) - -sFunDep :: FunDep l -> S.FunDep -sFunDep (FunDep _ as bs) = S.FunDep (map sName as) (map sName bs) - -sContext :: Context l -> S.Context -sContext ctxt = case ctxt of - CxSingle _ asst -> [sAsst asst] - CxTuple _ assts -> map sAsst assts - CxParen _ ct -> sContext ct - CxEmpty _ -> [] - -sAsst :: Asst l -> S.Asst -sAsst asst = case asst of - ClassA _ qn ts -> S.ClassA (sQName qn) (map sType ts) - InfixA _ ta qn tb -> S.InfixA (sType ta) (sQName qn) (sType tb) - IParam _ ipn t -> S.IParam (sIPName ipn) (sType t) - EqualP _ t1 t2 -> S.EqualP (sType t1) (sType t2) - -sLiteral :: Literal l -> S.Literal -sLiteral lit = case lit of - Char _ c _ -> S.Char c - String _ s _ -> S.String s - Int _ i _ -> S.Int i - Frac _ r _ -> S.Frac r - PrimInt _ i _ -> S.PrimInt i - PrimWord _ i _ -> S.PrimWord i - PrimFloat _ r _ -> S.PrimFloat r - PrimDouble _ r _ -> S.PrimDouble r - PrimChar _ c _ -> S.PrimChar c - PrimString _ s _ -> S.PrimString s - -sExp :: SrcInfo loc => Exp loc -> S.Exp -sExp e = case e of - Var _ qn -> S.Var (sQName qn) - IPVar _ ipn -> S.IPVar (sIPName ipn) - Con _ qn -> S.Con (sQName qn) - Lit _ lit -> S.Lit (sLiteral lit) - InfixApp _ e1 op e2 -> S.InfixApp (sExp e1) (sQOp op) (sExp e2) - App _ e1 e2 -> S.App (sExp e1) (sExp e2) - NegApp _ e -> S.NegApp (sExp e) - Lambda l ps e -> S.Lambda (getPointLoc l) (map sPat ps) (sExp e) - Let _ bs e -> S.Let (sBinds bs) (sExp e) - If _ e1 e2 e3 -> S.If (sExp e1) (sExp e2) (sExp e3) - Case _ e alts -> S.Case (sExp e) (map sAlt alts) - Do _ ss -> S.Do (map sStmt ss) - MDo _ ss -> S.MDo (map sStmt ss) - Tuple _ es -> S.Tuple (map sExp es) - TupleSection _ mes -> S.TupleSection (map (fmap sExp) mes) - List _ es -> S.List (map sExp es) - Paren _ e -> S.Paren (sExp e) - LeftSection _ e op -> S.LeftSection (sExp e) (sQOp op) - RightSection _ op e -> S.RightSection (sQOp op) (sExp e) - RecConstr _ qn fups -> S.RecConstr (sQName qn) (map sFieldUpdate fups) - RecUpdate _ e fups -> S.RecUpdate (sExp e) (map sFieldUpdate fups) - EnumFrom _ e -> S.EnumFrom (sExp e) - EnumFromTo _ e1 e2 -> S.EnumFromTo (sExp e1) (sExp e2) - EnumFromThen _ e1 e2 -> S.EnumFromThen (sExp e1) (sExp e2) - EnumFromThenTo _ e1 e2 e3 -> S.EnumFromThenTo (sExp e1) (sExp e2) (sExp e3) - ListComp _ e qss -> S.ListComp (sExp e) (map sQualStmt qss) - ParComp _ e qsss -> S.ParComp (sExp e) (map (map sQualStmt) qsss) - ExpTypeSig l e t -> S.ExpTypeSig (getPointLoc l) (sExp e) (sType t) - VarQuote _ qn -> S.VarQuote (sQName qn) - TypQuote _ qn -> S.TypQuote (sQName qn) - BracketExp _ br -> S.BracketExp (sBracket br) - SpliceExp _ sp -> S.SpliceExp (sSplice sp) - QuasiQuote _ nm qt -> S.QuasiQuote nm qt - XTag l xn attrs mat es -> S.XTag (getPointLoc l) (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es) - XETag l xn attrs mat -> S.XETag (getPointLoc l) (sXName xn) (map sXAttr attrs) (fmap sExp mat) - XPcdata _ str -> S.XPcdata str - XExpTag _ e -> S.XExpTag (sExp e) - XChildTag l es -> S.XChildTag (getPointLoc l) (map sExp es) - CorePragma _ str e -> S.CorePragma str (sExp e) - SCCPragma _ str e -> S.SCCPragma str (sExp e) - GenPragma _ str i12 i34 e -> S.GenPragma str i12 i34 (sExp e) - Proc l p e -> S.Proc (getPointLoc l) (sPat p) (sExp e) - LeftArrApp _ e1 e2 -> S.LeftArrApp (sExp e1) (sExp e2) - RightArrApp _ e1 e2 -> S.RightArrApp (sExp e1) (sExp e2) - LeftArrHighApp _ e1 e2 -> S.LeftArrHighApp (sExp e1) (sExp e2) - RightArrHighApp _ e1 e2 -> S.RightArrHighApp (sExp e1) (sExp e2) - - -sXName :: XName l -> S.XName -sXName (XName _ str) = S.XName str -sXName (XDomName _ dom str) = S.XDomName dom str - -sXAttr :: SrcInfo loc => XAttr loc -> S.XAttr -sXAttr (XAttr _ xn e) = S.XAttr (sXName xn) (sExp e) - -sBracket:: SrcInfo loc => Bracket loc -> S.Bracket -sBracket br = case br of - ExpBracket _ e -> S.ExpBracket (sExp e) - PatBracket _ p -> S.PatBracket (sPat p) - TypeBracket _ t -> S.TypeBracket (sType t) - DeclBracket _ ds -> S.DeclBracket (map sDecl ds) - -sSplice :: SrcInfo loc => Splice loc -> S.Splice -sSplice (IdSplice _ str) = S.IdSplice str -sSplice (ParenSplice _ e) = S.ParenSplice (sExp e) - -sSafety :: Safety l -> S.Safety -sSafety (PlayRisky _) = S.PlayRisky -sSafety (PlaySafe _ b) = S.PlaySafe b - -sCallConv :: CallConv l -> S.CallConv -sCallConv (StdCall _) = S.StdCall -sCallConv (CCall _) = S.CCall - -sModulePragma :: SrcInfo loc => ModulePragma loc -> S.ModulePragma -sModulePragma pr = case pr of - LanguagePragma l ns -> S.LanguagePragma (getPointLoc l) (map sName ns) - OptionsPragma l mt str -> S.OptionsPragma (getPointLoc l) mt str - AnnModulePragma l ann -> S.AnnModulePragma (getPointLoc l) (sAnnotation ann) - -sActivation :: Activation l -> S.Activation -sActivation act = case act of - ActiveFrom _ k -> S.ActiveFrom k - ActiveUntil _ k -> S.ActiveUntil k - -sRule :: SrcInfo loc => Rule loc -> S.Rule -sRule (Rule _ str mact mrvs e1 e2) = - S.Rule str (maybe S.AlwaysActive sActivation mact) (fmap (map sRuleVar) mrvs) (sExp e1) (sExp e2) - -sRuleVar :: RuleVar l -> S.RuleVar -sRuleVar (RuleVar _ n) = S.RuleVar (sName n) -sRuleVar (TypedRuleVar _ n t) = S.TypedRuleVar (sName n) (sType t) - -sWarningText :: WarningText l -> S.WarningText -sWarningText (DeprText _ str) = S.DeprText str -sWarningText (WarnText _ str) = S.WarnText str - -sPat :: SrcInfo loc => Pat loc -> S.Pat -sPat pat = case pat of - PVar _ n -> S.PVar (sName n) - PLit _ lit -> S.PLit (sLiteral lit) - PNeg _ p -> S.PNeg (sPat p) - PNPlusK _ n k -> S.PNPlusK (sName n) k - PInfixApp _ pa qn pb -> S.PInfixApp (sPat pa) (sQName qn) (sPat pb) - PApp _ qn ps -> S.PApp (sQName qn) (map sPat ps) - PTuple _ ps -> S.PTuple (map sPat ps) - PList _ ps -> S.PList (map sPat ps) - PParen _ p -> S.PParen (sPat p) - PRec _ qn pfs -> S.PRec (sQName qn) (map sPatField pfs) - PAsPat _ n p -> S.PAsPat (sName n) (sPat p) - PWildCard _ -> S.PWildCard - PIrrPat _ p -> S.PIrrPat (sPat p) - PatTypeSig l p t -> S.PatTypeSig (getPointLoc l) (sPat p) (sType t) - PViewPat _ e p -> S.PViewPat (sExp e) (sPat p) - PRPat _ rps -> S.PRPat (map sRPat rps) - PXTag l xn attrs mat ps -> S.PXTag (getPointLoc l) (sXName xn) (map sPXAttr attrs) (fmap sPat mat) (map sPat ps) - PXETag l xn attrs mat -> S.PXETag (getPointLoc l) (sXName xn) (map sPXAttr attrs) (fmap sPat mat) - PXPcdata _ str -> S.PXPcdata str - PXPatTag _ p -> S.PXPatTag (sPat p) - PXRPats _ rps -> S.PXRPats (map sRPat rps) - PExplTypeArg _ qn t -> S.PExplTypeArg (sQName qn) (sType t) - PQuasiQuote _ nm qt -> S.PQuasiQuote nm qt - PBangPat _ p -> S.PBangPat (sPat p) - -sPXAttr :: SrcInfo loc => PXAttr loc -> S.PXAttr -sPXAttr (PXAttr _ xn p) = S.PXAttr (sXName xn) (sPat p) - -sRPatOp :: RPatOp l -> S.RPatOp -sRPatOp rpop = case rpop of - RPStar _ -> S.RPStar - RPStarG _ -> S.RPStarG - RPPlus _ -> S.RPPlus - RPPlusG _ -> S.RPPlusG - RPOpt _ -> S.RPOpt - RPOptG _ -> S.RPOptG - -sRPat :: SrcInfo loc => RPat loc -> S.RPat -sRPat rp = case rp of - RPOp _ rp rop -> S.RPOp (sRPat rp) (sRPatOp rop) - RPEither _ rp1 rp2 -> S.RPEither (sRPat rp1) (sRPat rp2) - RPSeq _ rps -> S.RPSeq (map sRPat rps) - RPGuard _ p ss -> S.RPGuard (sPat p) (map sStmt ss) - RPCAs _ n rp -> S.RPCAs (sName n) (sRPat rp) - RPAs _ n rp -> S.RPAs (sName n) (sRPat rp) - RPParen _ rp -> S.RPParen (sRPat rp) - RPPat _ p -> S.RPPat (sPat p) - -sPatField :: SrcInfo loc => PatField loc -> S.PatField -sPatField pf = case pf of - PFieldPat _ qn p -> S.PFieldPat (sQName qn) (sPat p) - PFieldPun _ n -> S.PFieldPun (sName n) - PFieldWildcard _ -> S.PFieldWildcard - -sStmt :: SrcInfo loc => Stmt loc -> S.Stmt -sStmt stmt = case stmt of - Generator l p e -> S.Generator (getPointLoc l) (sPat p) (sExp e) - Qualifier _ e -> S.Qualifier (sExp e) - LetStmt _ bs -> S.LetStmt (sBinds bs) - RecStmt _ ss -> S.RecStmt (map sStmt ss) - -sQualStmt :: SrcInfo loc => QualStmt loc -> S.QualStmt -sQualStmt qs = case qs of - QualStmt _ stmt -> S.QualStmt (sStmt stmt) - ThenTrans _ e -> S.ThenTrans (sExp e) - ThenBy _ e1 e2 -> S.ThenBy (sExp e1) (sExp e2) - GroupBy _ e -> S.GroupBy (sExp e) - GroupUsing _ e -> S.GroupUsing (sExp e) - GroupByUsing _ e1 e2 -> S.GroupByUsing (sExp e1) (sExp e2) - -sFieldUpdate :: SrcInfo loc => FieldUpdate loc -> S.FieldUpdate -sFieldUpdate fu = case fu of - FieldUpdate _ qn e -> S.FieldUpdate (sQName qn) (sExp e) - FieldPun _ n -> S.FieldPun (sName n) - FieldWildcard _ -> S.FieldWildcard - -sAlt :: SrcInfo loc => Alt loc -> S.Alt -sAlt (Alt l p galts mbs) = S.Alt (getPointLoc l) (sPat p) (sGuardedAlts galts) (maybe (S.BDecls []) sBinds mbs) - -sGuardedAlts :: SrcInfo loc => GuardedAlts loc -> S.GuardedAlts -sGuardedAlts galts = case galts of - UnGuardedAlt _ e -> S.UnGuardedAlt (sExp e) - GuardedAlts _ gs -> S.GuardedAlts (map sGuardedAlt gs) - -sGuardedAlt :: SrcInfo loc => GuardedAlt loc -> S.GuardedAlt -sGuardedAlt (GuardedAlt l ss e) = S.GuardedAlt (getPointLoc l) (map sStmt ss) (sExp e)
− src/Language/Haskell/Exts/Annotated/Syntax.hs
@@ -1,2225 +0,0 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Annotated.Syntax--- Copyright : (c) Niklas Broberg 2004-2009,--- (c) The GHC Team, 1997-2000--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ A suite of datatypes describing the (semi-concrete) abstract syntax of Haskell 98--- <http://www.haskell.org/onlinereport/> plus registered extensions, including:------ * multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)------ * parameters of type class assertions are unrestricted (FlexibleContexts)------ * 'forall' types as universal and existential quantification (RankNTypes, ExistentialQuantification, etc)------ * pattern guards (PatternGuards)------ * implicit parameters (ImplicitParameters)------ * generalised algebraic data types (GADTs)------ * template haskell (TemplateHaskell)------ * empty data type declarations (EmptyDataDecls)------ * unboxed tuples (UnboxedTuples)------ * regular patterns (RegularPatterns)------ * HSP-style XML expressions and patterns (XmlSyntax)------ All nodes in the syntax tree are annotated with something of a user-definable data type.--- When parsing, this annotation will contain information about the source location that the--- particular node comes from.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated.Syntax (- -- * Modules- Module(..), ModuleHead(..), WarningText(..), ExportSpecList(..), ExportSpec(..),- ImportDecl(..), ImportSpecList(..), ImportSpec(..), Assoc(..),- -- * Declarations- Decl(..), DeclHead(..), InstHead(..), Binds(..), IPBind(..),- -- ** Type classes and instances- ClassDecl(..), InstDecl(..), Deriving(..),- -- ** Data type declarations- DataOrNew(..), ConDecl(..), FieldDecl(..), QualConDecl(..), GadtDecl(..), BangType(..),- -- ** Function bindings- Match(..), Rhs(..), GuardedRhs(..),- -- * Class Assertions and Contexts- Context(..), FunDep(..), Asst(..),- -- * Types- Type(..), Boxed(..), Kind(..), TyVarBind(..),- -- * Expressions- Exp(..), Stmt(..), QualStmt(..), FieldUpdate(..),- Alt(..), GuardedAlts(..), GuardedAlt(..), XAttr(..),- -- * Patterns- Pat(..), PatField(..), PXAttr(..), RPat(..), RPatOp(..),- -- * Literals- Literal(..),- -- * Variables, Constructors and Operators- ModuleName(..), QName(..), Name(..), QOp(..), Op(..),- SpecialCon(..), CName(..), IPName(..), XName(..),-- -- * Template Haskell- Bracket(..), Splice(..),-- -- * FFI- Safety(..), CallConv(..),-- -- * Pragmas- ModulePragma(..), Tool(..),- Rule(..), RuleVar(..), Activation(..),- Annotation(..),-- -- * Builtin names-- -- ** Modules- prelude_mod, main_mod,- -- ** Main function of a program- main_name,- -- ** Constructors- unit_con_name, tuple_con_name, list_cons_name, unboxed_singleton_con_name,- unit_con, tuple_con, unboxed_singleton_con,- -- ** Special identifiers- as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name,- export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name,- -- ** Type constructors- unit_tycon_name, fun_tycon_name, list_tycon_name, tuple_tycon_name, unboxed_singleton_tycon_name,- unit_tycon, fun_tycon, list_tycon, tuple_tycon, unboxed_singleton_tycon,-- -- * Source coordinates- -- SrcLoc(..),-- -- * Annotated trees- Annotated(..), (=~=),- ) where---#ifdef __GLASGOW_HASKELL__-#ifdef BASE4-import Data.Data-#else-import Data.Generics (Data(..),Typeable(..))-#endif-#endif----- | The name of a Haskell module.-data ModuleName l = ModuleName l String-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Constructors with special syntax.--- These names are never qualified, and always refer to builtin type or--- data constructors.-data SpecialCon l- = UnitCon l -- ^ unit type and data constructor @()@- | ListCon l -- ^ list type constructor @[]@- | FunCon l -- ^ function type constructor @->@- | TupleCon l Boxed Int -- ^ /n/-ary tuple type and data- -- constructors @(,)@ etc, possibly boxed @(\#,\#)@- | Cons l -- ^ list data constructor @(:)@- | UnboxedSingleCon l -- ^ unboxed singleton tuple constructor @(\# \#)@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | This type is used to represent qualified variables, and also--- qualified constructors.-data QName l- = Qual l (ModuleName l) (Name l) -- ^ name qualified with a module name- | UnQual l (Name l) -- ^ unqualified local name- | Special l (SpecialCon l) -- ^ built-in constructor with special syntax-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | This type is used to represent variables, and also constructors.-data Name l- = Ident l String -- ^ /varid/ or /conid/.- | Symbol l String -- ^ /varsym/ or /consym/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An implicit parameter name.-data IPName l- = IPDup l String -- ^ ?/ident/, non-linear implicit parameter- | IPLin l String -- ^ %/ident/, linear implicit parameter-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Possibly qualified infix operators (/qop/), appearing in expressions.-data QOp l- = QVarOp l (QName l) -- ^ variable operator (/qvarop/)- | QConOp l (QName l) -- ^ constructor operator (/qconop/)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Operators appearing in @infix@ declarations are never qualified.-data Op l- = VarOp l (Name l) -- ^ variable operator (/varop/)- | ConOp l (Name l) -- ^ constructor operator (/conop/)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A name (/cname/) of a component of a class or data type in an @import@--- or export specification.-data CName l- = VarName l (Name l) -- ^ name of a method or field- | ConName l (Name l) -- ^ name of a data constructor-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A complete Haskell source module.-data Module l- = Module l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]- -- ^ an ordinary Haskell module- | XmlPage l (ModuleName l) [ModulePragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]- -- ^ a module consisting of a single XML document. The ModuleName never appears in the source- -- but is needed for semantic purposes, it will be the same as the file name.- | XmlHybrid l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]- (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]- -- ^ a hybrid module combining an XML document with an ordinary module-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The head of a module, including the name and export specification.-data ModuleHead l = ModuleHead l (ModuleName l) (Maybe (WarningText l)) (Maybe (ExportSpecList l))-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An explicit export specification.-data ExportSpecList l- = ExportSpecList l [ExportSpec l]-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An item in a module's export specification.-data ExportSpec l- = EVar l (QName l) -- ^ variable- | EAbs l (QName l) -- ^ @T@:- -- a class or datatype exported abstractly,- -- or a type synonym.- | EThingAll l (QName l) -- ^ @T(..)@:- -- a class exported with all of its methods, or- -- a datatype exported with all of its constructors.- | EThingWith l (QName l) [CName l] -- ^ @T(C_1,...,C_n)@:- -- a class exported with some of its methods, or- -- a datatype exported with some of its constructors.- | EModuleContents l (ModuleName l) -- ^ @module M@:- -- re-export a module.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An import declaration.-data ImportDecl l = ImportDecl- { importAnn :: l -- ^ annotation, used by parser for position of the @import@ keyword.- , importModule :: (ModuleName l) -- ^ name of the module imported.- , importQualified :: Bool -- ^ imported @qualified@?- , importSrc :: Bool -- ^ imported with @{-\# SOURCE \#-}@?- , importPkg :: Maybe String -- ^ imported with explicit package name- , importAs :: Maybe (ModuleName l) -- ^ optional alias name in an @as@ clause.- , importSpecs :: Maybe (ImportSpecList l)- -- ^ optional list of import specifications.- }-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An explicit import specification list.-data ImportSpecList l- = ImportSpecList l Bool [ImportSpec l]- -- A list of import specifications.- -- The 'Bool' is 'True' if the names are excluded- -- by @hiding@.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An import specification, representing a single explicit item imported--- (or hidden) from a module.-data ImportSpec l- = IVar l (Name l) -- ^ variable- | IAbs l (Name l) -- ^ @T@:- -- the name of a class, datatype or type synonym.- | IThingAll l (Name l) -- ^ @T(..)@:- -- a class imported with all of its methods, or- -- a datatype imported with all of its constructors.- | IThingWith l (Name l) [CName l] -- ^ @T(C_1,...,C_n)@:- -- a class imported with some of its methods, or- -- a datatype imported with some of its constructors.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Associativity of an operator.-data Assoc l- = AssocNone l -- ^ non-associative operator (declared with @infix@)- | AssocLeft l -- ^ left-associative operator (declared with @infixl@).- | AssocRight l -- ^ right-associative operator (declared with @infixr@)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A top-level declaration.-data Decl l- = TypeDecl l (DeclHead l) (Type l)- -- ^ A type declaration- | TypeFamDecl l (DeclHead l) (Maybe (Kind l))- -- ^ A type family declaration- | DataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) [QualConDecl l] (Maybe (Deriving l))- -- ^ A data OR newtype declaration- | GDataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l))- -- ^ A data OR newtype declaration, GADT style- | DataFamDecl l {-data-} (Maybe (Context l)) (DeclHead l) (Maybe (Kind l))- -- ^ A data family declaration- | TypeInsDecl l (Type l) (Type l)- -- ^ A type family instance declaration- | DataInsDecl l (DataOrNew l) (Type l) [QualConDecl l] (Maybe (Deriving l))- -- ^ A data family instance declaration- | GDataInsDecl l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l))- -- ^ A data family instance declaration, GADT style- | ClassDecl l (Maybe (Context l)) (DeclHead l) [FunDep l] (Maybe [ClassDecl l])- -- ^ A declaration of a type class- | InstDecl l (Maybe (Context l)) (InstHead l) (Maybe [InstDecl l])- -- ^ An declaration of a type class instance- | DerivDecl l (Maybe (Context l)) (InstHead l)- -- ^ A standalone deriving declaration- | InfixDecl l (Assoc l) (Maybe Int) [Op l]- -- ^ A declaration of operator fixity- | DefaultDecl l [Type l]- -- ^ A declaration of default types- | SpliceDecl l (Exp l)- -- ^ A Template Haskell splicing declaration- | TypeSig l [Name l] (Type l)- -- ^ A type signature declaration- | FunBind l [Match l]- -- ^ A set of function binding clauses- | PatBind l (Pat l) (Maybe (Type l)) (Rhs l) {-where-} (Maybe (Binds l))- -- ^ A pattern binding- | ForImp l (CallConv l) (Maybe (Safety l)) (Maybe String) (Name l) (Type l)- -- ^ A foreign import declaration- | ForExp l (CallConv l) (Maybe String) (Name l) (Type l)- -- ^ A foreign export declaration- | RulePragmaDecl l [Rule l]- -- ^ A RULES pragma- | DeprPragmaDecl l [([Name l], String)]- -- ^ A DEPRECATED pragma- | WarnPragmaDecl l [([Name l], String)]- -- ^ A WARNING pragma- | InlineSig l Bool (Maybe (Activation l)) (QName l)- -- ^ An INLINE pragma- | InlineConlikeSig l (Maybe (Activation l)) (QName l)- -- ^ An INLINE CONLIKE pragma- | SpecSig l (QName l) [Type l]- -- ^ A SPECIALISE pragma- | SpecInlineSig l Bool (Maybe (Activation l)) (QName l) [Type l]- -- ^ A SPECIALISE INLINE pragma- | InstSig l (Maybe (Context l)) (InstHead l)- -- ^ A SPECIALISE instance pragma- | AnnPragma l (Annotation l)- -- ^ An ANN pragma-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An annotation through an ANN pragma.-data Annotation l- = Ann l (Name l) (Exp l)- -- ^ An annotation for a declared name.- | TypeAnn l (Name l) (Exp l)- -- ^ An annotation for a declared type.- | ModuleAnn l (Exp l)- -- ^ An annotation for the defining module.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif----- | A flag stating whether a declaration is a data or newtype declaration.-data DataOrNew l = DataType l | NewType l-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The head of a type or class declaration.-data DeclHead l- = DHead l (Name l) [TyVarBind l]- | DHInfix l (TyVarBind l) (Name l) (TyVarBind l)- | DHParen l (DeclHead l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The head of an instance declaration.-data InstHead l- = IHead l (QName l) [Type l]- | IHInfix l (Type l) (QName l) (Type l)- | IHParen l (InstHead l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A deriving clause following a data type declaration.-data Deriving l = Deriving l [InstHead l]-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A binding group inside a @let@ or @where@ clause.-data Binds l- = BDecls l [Decl l] -- ^ An ordinary binding group- | IPBinds l [IPBind l] -- ^ A binding group for implicit parameters-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A binding of an implicit parameter.-data IPBind l = IPBind l (IPName l) (Exp l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Clauses of a function binding.-data Match l- = Match l (Name l) [Pat l] (Rhs l) {-where-} (Maybe (Binds l))- -- ^ A clause defined with prefix notation, i.e. the function name - -- followed by its argument patterns, the right-hand side and an- -- optional where clause.- | InfixMatch l (Pat l) (Name l) [Pat l] (Rhs l) {-where-} (Maybe (Binds l))- -- ^ A clause defined with infix notation, i.e. first its first argument- -- pattern, then the function name, then its following argument(s),- -- the right-hand side and an optional where clause.- -- Note that there can be more than two arguments to a function declared- -- infix, hence the list of pattern arguments.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A single constructor declaration within a data type declaration,--- which may have an existential quantification binding.-data QualConDecl l- = QualConDecl l- {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l))- {- => -} (ConDecl l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Declaration of an ordinary data constructor.-data ConDecl l- = ConDecl l (Name l) [BangType l]- -- ^ ordinary data constructor- | InfixConDecl l (BangType l) (Name l) (BangType l)- -- ^ infix data constructor- | RecDecl l (Name l) [FieldDecl l]- -- ^ record constructor-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Declaration of a (list of) named field(s).-data FieldDecl l = FieldDecl l [Name l] (BangType l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif----- | A single constructor declaration in a GADT data type declaration.-data GadtDecl l- = GadtDecl l (Name l) (Type l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Declarations inside a class declaration.-data ClassDecl l- = ClsDecl l (Decl l)- -- ^ ordinary declaration- | ClsDataFam l (Maybe (Context l)) (DeclHead l) (Maybe (Kind l))- -- ^ declaration of an associated data type- | ClsTyFam l (DeclHead l) (Maybe (Kind l))- -- ^ declaration of an associated type synonym- | ClsTyDef l (Type l) (Type l)- -- ^ default choice for an associated type synonym-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Declarations inside an instance declaration.-data InstDecl l- = InsDecl l (Decl l)- -- ^ ordinary declaration- | InsType l (Type l) (Type l)- -- ^ an associated type definition- | InsData l (DataOrNew l) (Type l) [QualConDecl l] (Maybe (Deriving l))- -- ^ an associated data type implementation- | InsGData l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] (Maybe (Deriving l))- -- ^ an associated data type implemented using GADT style-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The type of a constructor argument or field, optionally including--- a strictness annotation.-data BangType l- = BangedTy l (Type l) -- ^ strict component, marked with \"@!@\"- | UnBangedTy l (Type l) -- ^ non-strict component- | UnpackedTy l (Type l) -- ^ unboxed component, marked with an UNPACK pragma-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The right hand side of a function or pattern binding.-data Rhs l- = UnGuardedRhs l (Exp l) -- ^ unguarded right hand side (/exp/)- | GuardedRhss l [GuardedRhs l]- -- ^ guarded right hand side (/gdrhs/)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A guarded right hand side @|@ /stmts/ @=@ /exp/.--- The guard is a series of statements when using pattern guards,--- otherwise it will be a single qualifier expression.-data GuardedRhs l- = GuardedRhs l [Stmt l] (Exp l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A type qualified with a context.--- An unqualified type has an empty context.-data Type l- = TyForall l- (Maybe [TyVarBind l])- (Maybe (Context l))- (Type l) -- ^ qualified type- | TyFun l (Type l) (Type l) -- ^ function type- | TyTuple l Boxed [Type l] -- ^ tuple type, possibly boxed- | TyList l (Type l) -- ^ list syntax, e.g. [a], as opposed to [] a- | TyApp l (Type l) (Type l) -- ^ application of a type constructor- | TyVar l (Name l) -- ^ type variable- | TyCon l (QName l) -- ^ named type or type constructor- | TyParen l (Type l) -- ^ type surrounded by parentheses- | TyInfix l (Type l) (QName l) (Type l) -- ^ infix type constructor- | TyKind l (Type l) (Kind l) -- ^ type with explicit kind signature-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Flag denoting whether a tuple is boxed or unboxed.-data Boxed = Boxed | Unboxed-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A type variable declaration, optionally with an explicit kind annotation.-data TyVarBind l- = KindedVar l (Name l) (Kind l) -- ^ variable binding with kind annotation- | UnkindedVar l (Name l) -- ^ ordinary variable binding-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An explicit kind annotation.-data Kind l- = KindStar l -- ^ @*@, the kind of types- | KindBang l -- ^ @!@, the kind of unboxed types- | KindFn l (Kind l) (Kind l) -- ^ @->@, the kind of a type constructor- | KindParen l (Kind l) -- ^ a parenthesised kind- | KindVar l (Name l) -- ^ a kind variable (as-of-yet unsupported by compilers)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif----- | A functional dependency, given on the form--- l1 l2 ... ln -> r2 r3 .. rn-data FunDep l- = FunDep l [Name l] [Name l]-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A context is a set of assertions-data Context l- = CxSingle l (Asst l)- | CxTuple l [Asst l]- | CxParen l (Context l)- | CxEmpty l-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Class assertions.--- In Haskell 98, the argument would be a /tyvar/, but this definition--- allows multiple parameters, and allows them to be /type/s.--- Also extended with support for implicit parameters and equality constraints.-data Asst l- = ClassA l (QName l) [Type l] -- ^ ordinary class assertion- | InfixA l (Type l) (QName l) (Type l) -- ^ class assertion where the class name is given infix- | IParam l (IPName l) (Type l) -- ^ implicit parameter assertion- | EqualP l (Type l) (Type l) -- ^ type equality constraint-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | /literal/--- Values of this type hold the abstract value of the literal, along with the--- precise string representation used. For example, @10@, @0o12@ and @0xa@--- have the same value representation, but each carry a different string representation.-data Literal l- = Char l Char String -- ^ character literal- | String l String String -- ^ string literal- | Int l Integer String -- ^ integer literal- | Frac l Rational String -- ^ floating point literal- | PrimInt l Integer String -- ^ unboxed integer literal- | PrimWord l Integer String -- ^ unboxed word literal- | PrimFloat l Rational String -- ^ unboxed float literal- | PrimDouble l Rational String -- ^ unboxed double literal- | PrimChar l Char String -- ^ unboxed character literal- | PrimString l String String -- ^ unboxed string literal-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Haskell expressions.-data Exp l- = Var l (QName l) -- ^ variable- | IPVar l (IPName l) -- ^ implicit parameter variable- | Con l (QName l) -- ^ data constructor- | Lit l (Literal l) -- ^ literal constant- | InfixApp l (Exp l) (QOp l) (Exp l) -- ^ infix application- | App l (Exp l) (Exp l) -- ^ ordinary application- | NegApp l (Exp l) -- ^ negation expression @-/exp/@ (unary minus)- | Lambda l [Pat l] (Exp l) -- ^ lambda expression- | Let l (Binds l) (Exp l) -- ^ local declarations with @let@ ... @in@ ...- | If l (Exp l) (Exp l) (Exp l) -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/- | Case l (Exp l) [Alt l] -- ^ @case@ /exp/ @of@ /alts/- | Do l [Stmt l] -- ^ @do@-expression:- -- the last statement in the list- -- should be an expression.- | MDo l [Stmt l] -- ^ @mdo@-expression- | Tuple l [Exp l] -- ^ tuple expression- | TupleSection l [Maybe (Exp l)] -- ^ tuple section expression, e.g. @(,,3)@- | List l [Exp l] -- ^ list expression- | Paren l (Exp l) -- ^ parenthesised expression- | LeftSection l (Exp l) (QOp l) -- ^ left section @(@/exp/ /qop/@)@- | RightSection l (QOp l) (Exp l) -- ^ right section @(@/qop/ /exp/@)@- | RecConstr l (QName l) [FieldUpdate l] -- ^ record construction expression- | RecUpdate l (Exp l) [FieldUpdate l] -- ^ record update expression- | EnumFrom l (Exp l) -- ^ unbounded arithmetic sequence,- -- incrementing by 1: @[from ..]@- | EnumFromTo l (Exp l) (Exp l) -- ^ bounded arithmetic sequence,- -- incrementing by 1 @[from .. to]@- | EnumFromThen l (Exp l) (Exp l) -- ^ unbounded arithmetic sequence,- -- with first two elements given @[from, then ..]@- | EnumFromThenTo l (Exp l) (Exp l) (Exp l)- -- ^ bounded arithmetic sequence,- -- with first two elements given @[from, then .. to]@- | ListComp l (Exp l) [QualStmt l] -- ^ ordinary list comprehension- | ParComp l (Exp l) [[QualStmt l]] -- ^ parallel list comprehension- | ExpTypeSig l (Exp l) (Type l) -- ^ expression with explicit type signature-- | VarQuote l (QName l) -- ^ @'x@ for template haskell reifying of expressions- | TypQuote l (QName l) -- ^ @''T@ for template haskell reifying of types- | BracketExp l (Bracket l) -- ^ template haskell bracket expression- | SpliceExp l (Splice l) -- ^ template haskell splice expression- | QuasiQuote l String String -- ^ quasi-quotaion: @[$/name/| /string/ |]@---- Hsx- | XTag l (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]- -- ^ xml element, with attributes and children- | XETag l (XName l) [XAttr l] (Maybe (Exp l))- -- ^ empty xml element, with attributes- | XPcdata l String -- ^ PCDATA child element- | XExpTag l (Exp l) -- ^ escaped haskell expression inside xml- | XChildTag l [Exp l] -- ^ children of an xml element ----- Pragmas- | CorePragma l String (Exp l) -- ^ CORE pragma- | SCCPragma l String (Exp l) -- ^ SCC pragma- | GenPragma l String (Int, Int) (Int, Int) (Exp l)- -- ^ GENERATED pragma---- Arrows- | Proc l (Pat l) (Exp l) -- ^ arrows proc: @proc@ /pat/ @->@ /exp/- | LeftArrApp l (Exp l) (Exp l) -- ^ arrow application (from left): /exp/ @-<@ /exp/- | 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/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The name of an xml element or attribute,--- possibly qualified with a namespace.-data XName l- = XName l String -- <name ...- | XDomName l String String -- <dom:name ...-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An xml attribute, which is a name-expression pair.-data XAttr l = XAttr l (XName l) (Exp l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A template haskell bracket expression.-data Bracket l- = ExpBracket l (Exp l) -- ^ expression bracket: @[| ... |]@- | PatBracket l (Pat l) -- ^ pattern bracket: @[p| ... |]@- | TypeBracket l (Type l) -- ^ type bracket: @[t| ... |]@- | DeclBracket l [Decl l] -- ^ declaration bracket: @[d| ... |]@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A template haskell splice expression-data Splice l- = IdSplice l String -- ^ variable splice: @$var@- | ParenSplice l (Exp l) -- ^ parenthesised expression splice: @$(/exp/)@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The safety of a foreign function call.-data Safety l- = PlayRisky l -- ^ unsafe- | PlaySafe l Bool -- ^ safe ('False') or threadsafe ('True')-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The calling convention of a foreign function call.-data CallConv l- = StdCall l- | CCall l-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A top level options pragma, preceding the module header.-data ModulePragma l- = LanguagePragma l [Name l] -- ^ LANGUAGE pragma- | OptionsPragma l (Maybe Tool) String- -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC- | AnnModulePragma l (Annotation l)- -- ^ ANN pragma with module scope-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Recognised tools for OPTIONS pragmas.-data Tool = GHC | HUGS | NHC98 | YHC | HADDOCK | UnknownTool String-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Activation clause of a RULES pragma.-data Activation l- = ActiveFrom l Int- | ActiveUntil l Int-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The body of a RULES pragma.-data Rule l- = Rule l String (Maybe (Activation l)) (Maybe [RuleVar l]) (Exp l) (Exp l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Variables used in a RULES pragma, optionally annotated with types-data RuleVar l- = RuleVar l (Name l)- | TypedRuleVar l (Name l) (Type l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Warning text to optionally use in the module header of e.g.--- a deprecated module.-data WarningText l- = DeprText l String- | WarnText l String-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif----- | A pattern, to be matched against a value.-data Pat l- = PVar l (Name l) -- ^ variable- | PLit l (Literal l) -- ^ literal constant- | PNeg l (Pat l) -- ^ negated pattern- | PNPlusK l (Name l) Integer -- ^ n+k pattern- | PInfixApp l (Pat l) (QName l) (Pat l) -- ^ pattern with an infix data constructor- | PApp l (QName l) [Pat l] -- ^ data constructor and argument patterns- | PTuple l [Pat l] -- ^ tuple pattern- | PList l [Pat l] -- ^ list pattern- | PParen l (Pat l) -- ^ parenthesized pattern- | PRec l (QName l) [PatField l] -- ^ labelled pattern, record style- | PAsPat l (Name l) (Pat l) -- ^ @\@@-pattern- | PWildCard l -- ^ wildcard pattern: @_@- | PIrrPat l (Pat l) -- ^ irrefutable pattern: @~/pat/@- | PatTypeSig l (Pat l) (Type l) -- ^ pattern with type signature- | PViewPat l (Exp l) (Pat l) -- ^ view patterns of the form @(/exp/ -> /pat/)@- | PRPat l [RPat l] -- ^ regular list pattern- | PXTag l (XName l) [PXAttr l] (Maybe (Pat l)) [Pat l]- -- ^ XML element pattern- | PXETag l (XName l) [PXAttr l] (Maybe (Pat l))- -- ^ XML singleton element pattern- | PXPcdata l String -- ^ XML PCDATA pattern- | PXPatTag l (Pat l) -- ^ XML embedded pattern- | PXRPats l [RPat l] -- ^ XML regular list pattern- | PExplTypeArg l (QName l) (Type l) -- ^ Explicit generics style type argument e.g. @f {| Int |} x = ...@- | PQuasiQuote l String String -- ^ quasi quote pattern: @[$/name/| /string/ |]@- | PBangPat l (Pat l) -- ^ strict (bang) pattern: @f !x = ...@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An XML attribute in a pattern.-data PXAttr l = PXAttr l (XName l) (Pat l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A regular pattern operator.-data RPatOp l- = RPStar l -- ^ @*@ = 0 or more- | RPStarG l -- ^ @*!@ = 0 or more, greedy- | RPPlus l -- ^ @+@ = 1 or more- | RPPlusG l -- ^ @+!@ = 1 or more, greedy- | RPOpt l -- ^ @?@ = 0 or 1- | RPOptG l -- ^ @?!@ = 0 or 1, greedy-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An entity in a regular pattern.-data RPat l- = RPOp l (RPat l) (RPatOp l) -- ^ operator pattern, e.g. pat*- | RPEither l (RPat l) (RPat l) -- ^ choice pattern, e.g. (1 | 2)- | RPSeq l [RPat l] -- ^ sequence pattern, e.g. (| 1, 2, 3 |)- | RPGuard l (Pat l) [Stmt l] -- ^ guarded pattern, e.g. (| p | p < 3 |)- | RPCAs l (Name l) (RPat l) -- ^ non-linear variable binding, e.g. (foo\@:(1 | 2))*- | RPAs l (Name l) (RPat l) -- ^ linear variable binding, e.g. foo\@(1 | 2)- | RPParen l (RPat l) -- ^ parenthesised pattern, e.g. (2*)- | RPPat l (Pat l) -- ^ an ordinary pattern-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An /fpat/ in a labeled record pattern.-data PatField l- = PFieldPat l (QName l) (Pat l) -- ^ ordinary label-pattern pair- | PFieldPun l (Name l) -- ^ record field pun- | PFieldWildcard l -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A statement, representing both a /stmt/ in a @do@-expression,--- an ordinary /qual/ in a list comprehension, as well as a /stmt/--- in a pattern guard.-data Stmt l- = Generator l (Pat l) (Exp l)- -- ^ a generator: /pat/ @<-@ /exp/- | Qualifier l (Exp l) -- ^ an /exp/ by itself: in a @do@-expression,- -- an action whose result is discarded;- -- in a list comprehension and pattern guard,- -- a guard expression- | LetStmt l (Binds l) -- ^ local bindings- | RecStmt l [Stmt l] -- ^ a recursive binding group for arrows-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A general /transqual/ in a list comprehension,--- which could potentially be a transform of the kind--- enabled by TransformListComp.-data QualStmt l- = QualStmt l (Stmt l) -- ^ an ordinary statement- | ThenTrans l (Exp l) -- ^ @then@ /exp/- | ThenBy l (Exp l) (Exp l) -- ^ @then@ /exp/ @by@ /exp/- | GroupBy l (Exp l) -- ^ @then@ @group@ @by@ /exp/- | GroupUsing l (Exp l) -- ^ @then@ @group@ @using@ /exp/- | GroupByUsing l (Exp l) (Exp l) -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An /fbind/ in a labeled construction or update expression.-data FieldUpdate l- = FieldUpdate l (QName l) (Exp l) -- ^ ordinary label-expresion pair- | FieldPun l (Name l) -- ^ record field pun- | FieldWildcard l -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An /alt/ alternative in a @case@ expression.-data Alt l- = Alt l (Pat l) (GuardedAlts l) (Maybe (Binds l))-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The right-hand sides of a @case@ alternative,--- which may be a single right-hand side or a--- set of guarded ones.-data GuardedAlts l- = UnGuardedAlt l (Exp l) -- ^ @->@ /exp/- | GuardedAlts l [GuardedAlt l] -- ^ /gdpat/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A guarded case alternative @|@ /stmts/ @->@ /exp/.-data GuardedAlt l- = GuardedAlt l [Stmt l] (Exp l)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---------------------------------------------------------------------------------- Builtin names.--prelude_mod, main_mod :: l -> ModuleName l-prelude_mod l = ModuleName l "Prelude"-main_mod l = ModuleName l "Main"--main_name :: l -> Name l-main_name l = Ident l "main"--unit_con_name :: l -> QName l-unit_con_name l = Special l (UnitCon l)--tuple_con_name :: l -> Boxed -> Int -> QName l-tuple_con_name l b i = Special l (TupleCon l b (i+1))--list_cons_name :: l -> QName l-list_cons_name l = Special l (Cons l)--unboxed_singleton_con_name :: l -> QName l-unboxed_singleton_con_name l = Special l (UnboxedSingleCon l)--unit_con :: l -> Exp l-unit_con l = Con l $ unit_con_name l--tuple_con :: l -> Boxed -> Int -> Exp l-tuple_con l b i = Con l (tuple_con_name l b i)--unboxed_singleton_con :: l -> Exp l-unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)--as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name :: l -> Name l-as_name l = Ident l "as"-qualified_name l = Ident l "qualified"-hiding_name l = Ident l "hiding"-minus_name l = Symbol l "-"-bang_name l = Symbol l "!"-dot_name l = Symbol l "."-star_name l = Symbol l "*"--export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name :: l -> Name l-export_name l = Ident l "export"-safe_name l = Ident l "safe"-unsafe_name l = Ident l "unsafe"-threadsafe_name l = Ident l "threadsafe"-stdcall_name l = Ident l "stdcall"-ccall_name l = Ident l "ccall"--unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: l -> QName l-unit_tycon_name l = unit_con_name l-fun_tycon_name l = Special l (FunCon l)-list_tycon_name l = Special l (ListCon l)-unboxed_singleton_tycon_name l = Special l (UnboxedSingleCon l)--tuple_tycon_name :: l -> Boxed -> Int -> QName l-tuple_tycon_name l b i = tuple_con_name l b i--unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> Type l-unit_tycon l = TyCon l $ unit_tycon_name l-fun_tycon l = TyCon l $ fun_tycon_name l-list_tycon l = TyCon l $ list_tycon_name l-unboxed_singleton_tycon l = TyCon l $ unboxed_singleton_tycon_name l--tuple_tycon :: l -> Boxed -> Int -> Type l-tuple_tycon l b i = TyCon l (tuple_tycon_name l b i)---------------------------------------------------------------------------------- AST traversal, boiler-plate style---- | Test if two AST elements are equal modulo annotations.-(=~=) :: (Annotated a, Eq (a ())) => a l1 -> a l2 -> Bool-a =~= b = fmap (const ()) a == fmap (const ()) b--instance Functor ModuleName where- fmap f (ModuleName l s) = ModuleName (f l) s--instance Functor SpecialCon where- fmap f sc = case sc of- UnitCon l -> UnitCon (f l)- ListCon l -> ListCon (f l)- FunCon l -> FunCon (f l)- TupleCon l b n -> TupleCon (f l) b n- Cons l -> Cons (f l)- UnboxedSingleCon l -> UnboxedSingleCon (f l)--instance Functor QName where- fmap f qn = case qn of- Qual l mn n -> Qual (f l) (fmap f mn) (fmap f n)- UnQual l n -> UnQual (f l) (fmap f n)- Special l sc -> Special (f l) (fmap f sc)--instance Functor Name where- fmap f (Ident l s) = Ident (f l) s- fmap f (Symbol l s) = Symbol (f l) s--instance Functor IPName where- fmap f (IPDup l s) = IPDup (f l) s- fmap f (IPLin l s) = IPLin (f l) s--instance Functor QOp where- fmap f (QVarOp l qn) = QVarOp (f l) (fmap f qn)- fmap f (QConOp l qn) = QConOp (f l) (fmap f qn)--instance Functor Op where- fmap f (VarOp l n) = VarOp (f l) (fmap f n)- fmap f (ConOp l n) = ConOp (f l) (fmap f n)--instance Functor CName where- fmap f (VarName l n) = VarName (f l) (fmap f n)- fmap f (ConName l n) = ConName (f l) (fmap f n)--instance Functor Module where- fmap f (Module l mmh ops iss dcls) =- Module (f l) (fmap (fmap f) mmh) (map (fmap f) ops) (map (fmap f) iss) (map (fmap f) dcls)- fmap f (XmlPage l mn os xn xas me es) =- XmlPage (f l) (fmap f mn) (map (fmap f) os) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)- fmap f (XmlHybrid l mmh ops iss dcls xn xas me es) =- XmlHybrid (f l) (fmap (fmap f) mmh) (map (fmap f) ops) (map (fmap f) iss) (map (fmap f) dcls)- (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)--instance Functor ModuleHead where- fmap f (ModuleHead l mn mwt mexpl) =- ModuleHead (f l) (fmap f mn) (fmap (fmap f) mwt) (fmap (fmap f) mexpl)--instance Functor ExportSpecList where- fmap f (ExportSpecList l ess) = ExportSpecList (f l) (map (fmap f) ess)--instance Functor ExportSpec where- fmap f es = case es of- EVar l qn -> EVar (f l) (fmap f qn)- EAbs l qn -> EAbs (f l) (fmap f qn)- EThingAll l qn -> EThingAll (f l) (fmap f qn)- EThingWith l qn cns -> EThingWith (f l) (fmap f qn) (map (fmap f) cns)- EModuleContents l mn -> EModuleContents (f l) (fmap f mn)--instance Functor ImportDecl where- fmap f (ImportDecl l mn qual src pkg mmn mis) =- ImportDecl (f l) (fmap f mn) qual src pkg (fmap (fmap f) mmn) (fmap (fmap f) mis)--instance Functor ImportSpecList where- fmap f (ImportSpecList l b iss) = ImportSpecList (f l) b (map (fmap f) iss)--instance Functor ImportSpec where- fmap f is = case is of- IVar l n -> IVar (f l) (fmap f n)- IAbs l n -> IAbs (f l) (fmap f n)- IThingAll l n -> IThingAll (f l) (fmap f n)- IThingWith l n cns -> IThingWith (f l) (fmap f n) (map (fmap f) cns)--instance Functor Assoc where- fmap f (AssocNone l) = AssocNone (f l)- fmap f (AssocLeft l) = AssocLeft (f l)- fmap f (AssocRight l) = AssocRight (f l)--instance Functor Decl where- fmap f decl = case decl of- TypeDecl l dh t -> TypeDecl (f l) (fmap f dh) (fmap f t)- TypeFamDecl l dh mk -> TypeFamDecl (f l) (fmap f dh) (fmap (fmap f) mk)- DataDecl l dn mcx dh cds ders ->- DataDecl (f l) (fmap f dn) (fmap (fmap f) mcx) (fmap f dh) (map (fmap f) cds) (fmap (fmap f) ders)- GDataDecl l dn mcx dh mk gds ders ->- GDataDecl (f l) (fmap f dn) (fmap (fmap f) mcx) (fmap f dh) (fmap (fmap f) mk) (map (fmap f) gds) (fmap (fmap f) ders)- DataFamDecl l mcx dh mk -> DataFamDecl (f l) (fmap (fmap f) mcx) (fmap f dh) (fmap (fmap f) mk)- TypeInsDecl l t1 t2 -> TypeInsDecl (f l) (fmap f t1) (fmap f t2)- DataInsDecl l dn t cds ders -> DataInsDecl (f l) (fmap f dn) (fmap f t) (map (fmap f) cds) (fmap (fmap f) ders)- GDataInsDecl l dn t mk gds ders -> GDataInsDecl (f l) (fmap f dn) (fmap f t) (fmap (fmap f) mk) (map (fmap f) gds) (fmap (fmap f) ders)- ClassDecl l mcx dh fds mcds -> ClassDecl (f l) (fmap (fmap f) mcx) (fmap f dh) (map (fmap f) fds) (fmap (map (fmap f)) mcds)- InstDecl l mcx ih mids -> InstDecl (f l) (fmap (fmap f) mcx) (fmap f ih) (fmap (map (fmap f)) mids)- DerivDecl l mcx ih -> DerivDecl (f l) (fmap (fmap f) mcx) (fmap f ih)- InfixDecl l a k ops -> InfixDecl (f l) (fmap f a) k (map (fmap f) ops)- DefaultDecl l ts -> DefaultDecl (f l) (map (fmap f) ts)- SpliceDecl l sp -> SpliceDecl (f l) (fmap f sp)- TypeSig l ns t -> TypeSig (f l) (map (fmap f) ns) (fmap f t)- FunBind l ms -> FunBind (f l) (map (fmap f) ms)- PatBind l p mt rhs bs -> PatBind (f l) (fmap f p) (fmap (fmap f) mt) (fmap f rhs) (fmap (fmap f) bs)- ForImp l cc msf s n t -> ForImp (f l) (fmap f cc) (fmap (fmap f) msf) s (fmap f n) (fmap f t)- ForExp l cc s n t -> ForExp (f l) (fmap f cc) s (fmap f n) (fmap f t)- RulePragmaDecl l rs -> RulePragmaDecl (f l) (map (fmap f) rs)- DeprPragmaDecl l nss -> DeprPragmaDecl (f l) (map (wp f) nss)- WarnPragmaDecl l nss -> WarnPragmaDecl (f l) (map (wp f) nss)- InlineSig l b mact qn -> InlineSig (f l) b (fmap (fmap f) mact) (fmap f qn)- InlineConlikeSig l mact qn -> InlineConlikeSig (f l) (fmap (fmap f) mact) (fmap f qn)- SpecInlineSig l b mact qn ts -> SpecInlineSig (f l) b (fmap (fmap f) mact) (fmap f qn) (map (fmap f) ts)- SpecSig l qn ts -> SpecSig (f l) (fmap f qn) (map (fmap f) ts)- InstSig l mcx ih -> InstSig (f l) (fmap (fmap f) mcx) (fmap f ih)- AnnPragma l ann -> AnnPragma (f l) (fmap f ann)- where wp f (ns, s) = (map (fmap f) ns, s)--instance Functor Annotation where- fmap f (Ann l n e) = Ann (f l) (fmap f n) (fmap f e)- fmap f (TypeAnn l n e) = TypeAnn (f l) (fmap f n) (fmap f e)- fmap f (ModuleAnn l e) = ModuleAnn (f l) (fmap f e)--instance Functor DataOrNew where- fmap f (DataType l) = DataType (f l)- fmap f (NewType l) = NewType (f l)--instance Functor DeclHead where- fmap f (DHead l n tvs) = DHead (f l) (fmap f n) (map (fmap f) tvs)- fmap f (DHInfix l tva n tvb) = DHInfix (f l) (fmap f tva) (fmap f n) (fmap f tvb)- fmap f (DHParen l dh) = DHParen (f l) (fmap f dh)--instance Functor InstHead where- fmap f (IHead l qn ts) = IHead (f l) (fmap f qn) (map (fmap f) ts)- fmap f (IHInfix l ta qn tb) = IHInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb)- fmap f (IHParen l ih) = IHParen (f l) (fmap f ih)--instance Functor Deriving where- fmap f (Deriving l ihs) = Deriving (f l) (map (fmap f) ihs)--instance Functor Binds where- fmap f (BDecls l decls) = BDecls (f l) (map (fmap f) decls)- fmap f (IPBinds l ibs) = IPBinds (f l) (map (fmap f) ibs)--instance Functor IPBind where- fmap f (IPBind l ipn e) = IPBind (f l) (fmap f ipn) (fmap f e)--instance Functor Match where- fmap f (Match l n ps rhs bs) =- Match (f l) (fmap f n) (map (fmap f) ps) (fmap f rhs) (fmap (fmap f) bs)- fmap f (InfixMatch l a n ps rhs bs) =- InfixMatch (f l) (fmap f a) (fmap f n) (map (fmap f) ps) (fmap f rhs) (fmap (fmap f) bs)--instance Functor QualConDecl where- fmap f (QualConDecl l mtvs mcx cd) = QualConDecl (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f cd)--instance Functor ConDecl where- fmap f (ConDecl l n bts) = ConDecl (f l) (fmap f n) (map (fmap f) bts)- fmap f (InfixConDecl l ta n tb) = InfixConDecl (f l) (fmap f ta) (fmap f n) (fmap f tb)- fmap f (RecDecl l n fds) = RecDecl (f l) (fmap f n) (map (fmap f) fds)--instance Functor FieldDecl where- fmap f (FieldDecl l ns t) = FieldDecl (f l) (map (fmap f) ns) (fmap f t)--instance Functor GadtDecl where- fmap f (GadtDecl l n t) = GadtDecl (f l) (fmap f n) (fmap f t)--instance Functor ClassDecl where- fmap f (ClsDecl l d) = ClsDecl (f l) (fmap f d)- fmap f (ClsDataFam l mcx dh mk) = ClsDataFam (f l) (fmap (fmap f) mcx) (fmap f dh) (fmap (fmap f) mk)- fmap f (ClsTyFam l dh mk) = ClsTyFam (f l) (fmap f dh) (fmap (fmap f) mk)- fmap f (ClsTyDef l t1 t2) = ClsTyDef (f l) (fmap f t1) (fmap f t2)--instance Functor InstDecl where- fmap f id = case id of- InsDecl l d -> InsDecl (f l) (fmap f d)- InsType l t1 t2 -> InsType (f l) (fmap f t1) (fmap f t2)- InsData l dn t cds ders- -> InsData (f l) (fmap f dn) (fmap f t) (map (fmap f) cds) (fmap (fmap f) ders)- InsGData l dn t mk gds ders- -> InsGData (f l) (fmap f dn) (fmap f t) (fmap (fmap f) mk) (map (fmap f) gds) (fmap (fmap f) ders)--- InsInline l b mact qn -> InsInline (f l) b (fmap (fmap f) mact) (fmap f qn)--instance Functor BangType where- fmap f (BangedTy l t) = BangedTy (f l) (fmap f t)- fmap f (UnBangedTy l t) = UnBangedTy (f l) (fmap f t)- fmap f (UnpackedTy l t) = UnpackedTy (f l) (fmap f t)--instance Functor Rhs where- fmap f (UnGuardedRhs l e) = UnGuardedRhs (f l) (fmap f e)- fmap f (GuardedRhss l grhss) = GuardedRhss (f l) (map (fmap f) grhss)--instance Functor GuardedRhs where- fmap f (GuardedRhs l ss e) = GuardedRhs (f l) (map (fmap f) ss) (fmap f e)--instance Functor Type where- fmap f t = case t of- TyForall l mtvs mcx t -> TyForall (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f t)- TyFun l t1 t2 -> TyFun (f l) (fmap f t1) (fmap f t2)- TyTuple l b ts -> TyTuple (f l) b (map (fmap f) ts)- TyList l t -> TyList (f l) (fmap f t)- TyApp l t1 t2 -> TyApp (f l) (fmap f t1) (fmap f t2)- TyVar l n -> TyVar (f l) (fmap f n)- TyCon l qn -> TyCon (f l) (fmap f qn)- TyParen l t -> TyParen (f l) (fmap f t)- TyInfix l ta qn tb -> TyInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb)- TyKind l t k -> TyKind (f l) (fmap f t) (fmap f k)--instance Functor TyVarBind where- fmap f (KindedVar l n k) = KindedVar (f l) (fmap f n) (fmap f k)- fmap f (UnkindedVar l n) = UnkindedVar (f l) (fmap f n)--instance Functor Kind where- fmap f (KindStar l) = KindStar (f l)- fmap f (KindBang l) = KindBang (f l)- fmap f (KindFn l k1 k2) = KindFn (f l) (fmap f k1) (fmap f k2)- fmap f (KindParen l k) = KindParen (f l) (fmap f k)- fmap f (KindVar l n) = KindVar (f l) (fmap f n)--instance Functor FunDep where- fmap f (FunDep l ns1 ns2) = FunDep (f l) (map (fmap f) ns1) (map (fmap f) ns2)--instance Functor Context where- fmap f (CxSingle l asst) = CxSingle (f l) (fmap f asst)- fmap f (CxTuple l assts) = CxTuple (f l) (map (fmap f) assts)- fmap f (CxParen l ctxt) = CxParen (f l) (fmap f ctxt)- fmap f (CxEmpty l) = CxEmpty (f l)--instance Functor Asst where- fmap f asst = case asst of- ClassA l qn ts -> ClassA (f l) (fmap f qn) (map (fmap f) ts)- InfixA l ta qn tb -> InfixA (f l) (fmap f ta) (fmap f qn) (fmap f tb)- IParam l ipn t -> IParam (f l) (fmap f ipn) (fmap f t)- EqualP l t1 t2 -> EqualP (f l) (fmap f t1) (fmap f t2)--instance Functor Literal where- fmap f lit = case lit of- Char l c rw -> Char (f l) c rw- String l s rw -> String (f l) s rw- Int l i rw -> Int (f l) i rw- Frac l r rw -> Frac (f l) r rw- PrimInt l i rw -> PrimInt (f l) i rw- PrimWord l i rw -> PrimWord (f l) i rw- PrimFloat l r rw -> PrimFloat (f l) r rw- PrimDouble l r rw -> PrimDouble (f l) r rw- PrimChar l c rw -> PrimChar (f l) c rw- PrimString l s rw -> PrimString (f l) s rw--instance Functor Exp where- fmap f e = case e of- Var l qn -> Var (f l) (fmap f qn)- IPVar l ipn -> IPVar (f l) (fmap f ipn)- Con l qn -> Con (f l) (fmap f qn)- Lit l lit -> Lit (f l) (fmap f lit)- InfixApp l e1 qop e2 -> InfixApp (f l) (fmap f e1) (fmap f qop) (fmap f e2)- App l e1 e2 -> App (f l) (fmap f e1) (fmap f e2)- NegApp l e -> NegApp (f l) (fmap f e)- Lambda l ps e -> Lambda (f l) (map (fmap f) ps) (fmap f e)- Let l bs e -> Let (f l) (fmap f bs) (fmap f e)- If l ec et ee -> If (f l) (fmap f ec) (fmap f et) (fmap f ee)- Case l e alts -> Case (f l) (fmap f e) (map (fmap f) alts)- Do l ss -> Do (f l) (map (fmap f) ss)- MDo l ss -> MDo (f l) (map (fmap f) ss)- Tuple l es -> Tuple (f l) (map (fmap f) es)- TupleSection l mes -> TupleSection (f l) (map (fmap (fmap f)) mes)- List l es -> List (f l) (map (fmap f) es)- Paren l e -> Paren (f l) (fmap f e)- LeftSection l e qop -> LeftSection (f l) (fmap f e) (fmap f qop)- RightSection l qop e -> RightSection (f l) (fmap f qop) (fmap f e)- RecConstr l qn fups -> RecConstr (f l) (fmap f qn) (map (fmap f) fups)- RecUpdate l e fups -> RecUpdate (f l) (fmap f e) (map (fmap f) fups)- EnumFrom l e -> EnumFrom (f l) (fmap f e)- EnumFromTo l ef et -> EnumFromTo (f l) (fmap f ef) (fmap f et)- EnumFromThen l ef et -> EnumFromThen (f l) (fmap f ef) (fmap f et)- EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) (fmap f ef) (fmap f eth) (fmap f eto)- ListComp l e qss -> ListComp (f l) (fmap f e) (map (fmap f) qss)- ParComp l e qsss -> ParComp (f l) (fmap f e) (map (map (fmap f)) qsss)- ExpTypeSig l e t -> ExpTypeSig (f l) (fmap f e) (fmap f t)- VarQuote l qn -> VarQuote (f l) (fmap f qn)- TypQuote l qn -> TypQuote (f l) (fmap f qn)- BracketExp l br -> BracketExp (f l) (fmap f br)- SpliceExp l sp -> SpliceExp (f l) (fmap f sp)- QuasiQuote l sn se -> QuasiQuote (f l) sn se-- XTag l xn xas me es -> XTag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)- XETag l xn xas me -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me)- XPcdata l s -> XPcdata (f l) s- XExpTag l e -> XExpTag (f l) (fmap f e)- XChildTag l es -> XChildTag (f l) (map (fmap f) es)-- CorePragma l s e -> CorePragma (f l) s (fmap f e)- SCCPragma l s e -> SCCPragma (f l) s (fmap f e)- GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 (fmap f e)-- Proc l p e -> Proc (f l) (fmap f p) (fmap f e)- LeftArrApp l e1 e2 -> LeftArrApp (f l) (fmap f e1) (fmap f e2)- RightArrApp l e1 e2 -> RightArrApp (f l) (fmap f e1) (fmap f e2)- LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) (fmap f e1) (fmap f e2)- RightArrHighApp l e1 e2 -> RightArrHighApp (f l) (fmap f e1) (fmap f e2)--instance Functor XName where- fmap f (XName l s) = XName (f l) s- fmap f (XDomName l sd sn) = XDomName (f l) sd sn--instance Functor XAttr where- fmap f (XAttr l xn e) = XAttr (f l) (fmap f xn) (fmap f e)--instance Functor Bracket where- fmap f (ExpBracket l e) = ExpBracket (f l) (fmap f e)- fmap f (PatBracket l p) = PatBracket (f l) (fmap f p)- fmap f (TypeBracket l t) = TypeBracket (f l) (fmap f t)- fmap f (DeclBracket l ds) = DeclBracket (f l) (map (fmap f) ds)--instance Functor Splice where- fmap f (IdSplice l s) = IdSplice (f l) s- fmap f (ParenSplice l e) = ParenSplice (f l) (fmap f e)--instance Functor Safety where- fmap f (PlayRisky l) = PlayRisky (f l)- fmap f (PlaySafe l b) = PlaySafe (f l) b--instance Functor CallConv where- fmap f (StdCall l) = StdCall (f l)- fmap f (CCall l) = CCall (f l)--instance Functor ModulePragma where- fmap f (LanguagePragma l ns) = LanguagePragma (f l) (map (fmap f) ns)- fmap f (OptionsPragma l mt s) = OptionsPragma (f l) mt s- fmap f (AnnModulePragma l ann) = AnnModulePragma (f l) (fmap f ann)--instance Functor Activation where- fmap f (ActiveFrom l k) = ActiveFrom (f l) k- fmap f (ActiveUntil l k) = ActiveUntil (f l) k--instance Functor Rule where- fmap f (Rule l s mact mrvs e1 e2) =- Rule (f l) s (fmap (fmap f) mact) (fmap (map (fmap f)) mrvs) (fmap f e1) (fmap f e2)--instance Functor RuleVar where- fmap f (RuleVar l n) = RuleVar (f l) (fmap f n)- fmap f (TypedRuleVar l n t) = TypedRuleVar (f l) (fmap f n) (fmap f t)--instance Functor WarningText where- fmap f (DeprText l s) = DeprText (f l) s- fmap f (WarnText l s) = WarnText (f l) s--instance Functor Pat where- fmap f p = case p of- PVar l n -> PVar (f l) (fmap f n)- PLit l lit -> PLit (f l) (fmap f lit)- PNeg l p -> PNeg (f l) (fmap f p)- PNPlusK l n k -> PNPlusK (f l) (fmap f n) k- PInfixApp l pa qn pb -> PInfixApp (f l) (fmap f pa) (fmap f qn) (fmap f pb)- PApp l qn ps -> PApp (f l) (fmap f qn) (map (fmap f) ps)- PTuple l ps -> PTuple (f l) (map (fmap f) ps)- PList l ps -> PList (f l) (map (fmap f) ps)- PParen l p -> PParen (f l) (fmap f p)- PRec l qn pfs -> PRec (f l) (fmap f qn) (map (fmap f) pfs)- PAsPat l n p -> PAsPat (f l) (fmap f n) (fmap f p)- PWildCard l -> PWildCard (f l)- PIrrPat l p -> PIrrPat (f l) (fmap f p)- PatTypeSig l p t -> PatTypeSig (f l) (fmap f p) (fmap f t)- PViewPat l e p -> PViewPat (f l) (fmap f e) (fmap f p)- PRPat l rps -> PRPat (f l) (map (fmap f) rps)- PXTag l xn pxas mp ps -> PXTag (f l) (fmap f xn) (map (fmap f) pxas) (fmap (fmap f) mp) (map (fmap f) ps)- PXETag l xn pxas mp -> PXETag (f l) (fmap f xn) (map (fmap f) pxas) (fmap (fmap f) mp)- PXPcdata l s -> PXPcdata (f l) s- PXPatTag l p -> PXPatTag (f l) (fmap f p)- PXRPats l rps -> PXRPats (f l) (map (fmap f) rps)- PExplTypeArg l qn t -> PExplTypeArg (f l) (fmap f qn) (fmap f t)- PQuasiQuote l sn st -> PQuasiQuote (f l) sn st- PBangPat l p -> PBangPat (f l) (fmap f p)--instance Functor PXAttr where- fmap f (PXAttr l xn p) = PXAttr (f l) (fmap f xn) (fmap f p)--instance Functor RPatOp where- fmap f (RPStar l) = RPStar (f l)- fmap f (RPStarG l) = RPStarG (f l)- fmap f (RPPlus l) = RPPlus (f l)- fmap f (RPPlusG l) = RPPlusG (f l)- fmap f (RPOpt l) = RPOpt (f l)- fmap f (RPOptG l) = RPOptG (f l)--instance Functor RPat where- fmap f rp = case rp of- RPOp l rp rop -> RPOp (f l) (fmap f rp) (fmap f rop)- RPEither l rp1 rp2 -> RPEither (f l) (fmap f rp1) (fmap f rp2)- RPSeq l rps -> RPSeq (f l) (map (fmap f) rps)- RPGuard l p ss -> RPGuard (f l) (fmap f p) (map (fmap f) ss)- RPCAs l n rp -> RPCAs (f l) (fmap f n) (fmap f rp)- RPAs l n rp -> RPAs (f l) (fmap f n) (fmap f rp)- RPParen l rp -> RPParen (f l) (fmap f rp)- RPPat l p -> RPPat (f l) (fmap f p)--instance Functor PatField where- fmap f (PFieldPat l qn p) = PFieldPat (f l) (fmap f qn) (fmap f p)- fmap f (PFieldPun l n) = PFieldPun (f l) (fmap f n)- fmap f (PFieldWildcard l) = PFieldWildcard (f l)--instance Functor Stmt where- fmap f (Generator l p e) = Generator (f l) (fmap f p) (fmap f e)- fmap f (Qualifier l e) = Qualifier (f l) (fmap f e)- fmap f (LetStmt l bs) = LetStmt (f l) (fmap f bs)- fmap f (RecStmt l ss) = RecStmt (f l) (map (fmap f) ss)--instance Functor QualStmt where- fmap f (QualStmt l s) = QualStmt (f l) (fmap f s)- fmap f (ThenTrans l e) = ThenTrans (f l) (fmap f e)- fmap f (ThenBy l e1 e2) = ThenBy (f l) (fmap f e1) (fmap f e2)- fmap f (GroupBy l e) = GroupBy (f l) (fmap f e)- fmap f (GroupUsing l e) = GroupUsing (f l) (fmap f e)- fmap f (GroupByUsing l e1 e2) = GroupByUsing (f l) (fmap f e1) (fmap f e2)--instance Functor FieldUpdate where- fmap f (FieldUpdate l qn e) = FieldUpdate (f l) (fmap f qn) (fmap f e)- fmap f (FieldPun l n) = FieldPun (f l) (fmap f n)- fmap f (FieldWildcard l) = FieldWildcard (f l)--instance Functor Alt where- fmap f (Alt l p gs bs) = Alt (f l) (fmap f p) (fmap f gs) (fmap (fmap f) bs)--instance Functor GuardedAlts where- fmap f (UnGuardedAlt l e) = UnGuardedAlt (f l) (fmap f e)- fmap f (GuardedAlts l galts) = GuardedAlts (f l) (map (fmap f) galts)--instance Functor GuardedAlt where- fmap f (GuardedAlt l ss e) = GuardedAlt (f l) (map (fmap f) ss) (fmap f e)---------------------------------------------------------------------------------- Reading annotations---- | AST nodes are annotated, and this class allows manipulation of the annotations.-class Functor ast => Annotated ast where- -- | Retrieve the annotation of an AST node.- ann :: ast l -> l- -- | Change the annotation of an AST node. Note that only the annotation of- -- the node itself is affected, and not the annotations of any child nodes.- -- if all nodes in the AST tree are to be affected, use 'fmap'.- amap :: (l -> l) -> ast l -> ast l--instance Annotated ModuleName where- ann (ModuleName l _) = l- amap f (ModuleName l n) = ModuleName (f l) n--instance Annotated SpecialCon where- ann sc = case sc of- UnitCon l -> l- ListCon l -> l- FunCon l -> l- TupleCon l _ _ -> l- Cons l -> l- UnboxedSingleCon l -> l- amap = fmap--instance Annotated QName where- ann qn = case qn of- Qual l mn n -> l- UnQual l n -> l- Special l sc -> l- amap f qn = case qn of- Qual l mn n -> Qual (f l) mn n- UnQual l n -> UnQual (f l) n- Special l sc -> Special (f l) sc--instance Annotated Name where- ann (Ident l s) = l- ann (Symbol l s) = l- amap = fmap--instance Annotated IPName where- ann (IPDup l s) = l- ann (IPLin l s) = l- amap = fmap--instance Annotated QOp where- ann (QVarOp l qn) = l- ann (QConOp l qn) = l- amap f (QVarOp l qn) = QVarOp (f l) qn- amap f (QConOp l qn) = QConOp (f l) qn--instance Annotated Op where- ann (VarOp l n) = l- ann (ConOp l n) = l- amap f (VarOp l n) = VarOp (f l) n- amap f (ConOp l n) = ConOp (f l) n--instance Annotated CName where- ann (VarName l n) = l- ann (ConName l n) = l- amap f (VarName l n) = VarName (f l) n- amap f (ConName l n) = ConName (f l) n--instance Annotated Module where- ann (Module l mmh ops iss dcls) = l- ann (XmlPage l mn os xn xas me es) = l- ann (XmlHybrid l mmh ops iss dcls xn xas me es) = l-- amap f (Module l mmh ops iss dcls) =- Module (f l) mmh ops iss dcls- amap f (XmlPage l mn os xn xas me es) =- XmlPage (f l) mn os xn xas me es- amap f (XmlHybrid l mmh ops iss dcls xn xas me es) =- XmlHybrid (f l) mmh ops iss dcls xn xas me es--instance Annotated ModuleHead where- ann (ModuleHead l n mwt mesl) = l- amap f (ModuleHead l n mwt mesl) = ModuleHead (f l) n mwt mesl--instance Annotated ExportSpecList where- ann (ExportSpecList l ess) = l- amap f (ExportSpecList l ess) = ExportSpecList (f l) ess--instance Annotated ExportSpec where- ann es = case es of- EVar l qn -> l- EAbs l qn -> l- EThingAll l qn -> l- EThingWith l qn cns -> l- EModuleContents l mn -> l- amap f es = case es of- EVar l qn -> EVar (f l) qn- EAbs l qn -> EAbs (f l) qn- EThingAll l qn -> EThingAll (f l) qn- EThingWith l qn cns -> EThingWith (f l) qn cns- EModuleContents l mn -> EModuleContents (f l) mn--instance Annotated ImportDecl where- ann (ImportDecl l mn qual src pkg mmn mis) = l- amap f (ImportDecl l mn qual src pkg mmn mis) =- ImportDecl (f l) mn qual src pkg mmn mis--instance Annotated ImportSpecList where- ann (ImportSpecList l b iss) = l- amap f (ImportSpecList l b iss) = ImportSpecList (f l) b iss--instance Annotated ImportSpec where- ann is = case is of- IVar l n -> l- IAbs l n -> l- IThingAll l n -> l- IThingWith l n cns -> l- amap f is = case is of- IVar l n -> IVar (f l) n- IAbs l n -> IAbs (f l) n- IThingAll l n -> IThingAll (f l) n- IThingWith l n cns -> IThingWith (f l) n cns--instance Annotated Assoc where- ann (AssocNone l) = l- ann (AssocLeft l) = l- ann (AssocRight l) = l- amap = fmap--instance Annotated Deriving where- ann (Deriving l ihs) = l- amap f (Deriving l ihs) = Deriving (f l) ihs--instance Annotated Decl where- ann decl = case decl of- TypeDecl l dh t -> l- TypeFamDecl l dh mk -> l- DataDecl l dn cx dh cds ders -> l- GDataDecl l dn cx dh mk gds ders -> l- DataFamDecl l cx dh mk -> l- TypeInsDecl l t1 t2 -> l- DataInsDecl l dn t cds ders -> l- GDataInsDecl l dn t mk gds ders -> l- ClassDecl l cx dh fds cds -> l- InstDecl l cx ih ids -> l- DerivDecl l cx ih -> l- InfixDecl l a k ops -> l- DefaultDecl l ts -> l- SpliceDecl l sp -> l- TypeSig l ns t -> l- FunBind l ms -> l- PatBind l p mt rhs bs -> l- ForImp l cc msf s n t -> l- ForExp l cc s n t -> l- RulePragmaDecl l rs -> l- DeprPragmaDecl l nss -> l- WarnPragmaDecl l nss -> l- InlineSig l b act qn -> l- InlineConlikeSig l act qn -> l- SpecSig l qn ts -> l- SpecInlineSig l b act qn ts -> l- InstSig l cx ih -> l- AnnPragma l ann -> l- amap f decl = case decl of- TypeDecl l dh t -> TypeDecl (f l) dh t- TypeFamDecl l dh mk -> TypeFamDecl (f l) dh mk- DataDecl l dn mcx dh cds ders ->- DataDecl (f l) dn mcx dh cds ders- GDataDecl l dn mcx dh mk gds ders ->- GDataDecl (f l) dn mcx dh mk gds ders- DataFamDecl l mcx dh mk -> DataFamDecl (f l) mcx dh mk- TypeInsDecl l t1 t2 -> TypeInsDecl (f l) t1 t2- DataInsDecl l dn t cds ders -> DataInsDecl (f l) dn t cds ders- GDataInsDecl l dn t mk gds ders -> GDataInsDecl (f l) dn t mk gds ders- ClassDecl l mcx dh fds cds -> ClassDecl (f l) mcx dh fds cds- InstDecl l mcx ih ids -> InstDecl (f l) mcx ih ids- DerivDecl l mcx ih -> DerivDecl (f l) mcx ih- InfixDecl l a k ops -> InfixDecl (f l) a k ops- DefaultDecl l ts -> DefaultDecl (f l) ts- SpliceDecl l sp -> SpliceDecl (f l) sp- TypeSig l ns t -> TypeSig (f l) ns t- FunBind l ms -> FunBind (f l) ms- PatBind l p mt rhs bs -> PatBind (f l) p mt rhs bs- ForImp l cc msf s n t -> ForImp (f l) cc msf s n t- ForExp l cc s n t -> ForExp (f l) cc s n t- RulePragmaDecl l rs -> RulePragmaDecl (f l) rs- DeprPragmaDecl l nss -> DeprPragmaDecl (f l) nss- WarnPragmaDecl l nss -> WarnPragmaDecl (f l) nss- InlineSig l b act qn -> InlineSig (f l) b act qn- InlineConlikeSig l act qn -> InlineConlikeSig (f l) act qn- SpecSig l qn ts -> SpecSig (f l) qn ts- SpecInlineSig l b act qn ts -> SpecInlineSig (f l) b act qn ts- InstSig l mcx ih -> InstSig (f l) mcx ih- AnnPragma l ann -> AnnPragma (f l) ann--instance Annotated Annotation where- ann (Ann l n e) = l- ann (TypeAnn l n e) = l- ann (ModuleAnn l e) = l- amap f (Ann l n e) = Ann (f l) n e- amap f (TypeAnn l n e) = TypeAnn (f l) n e- amap f (ModuleAnn l e) = ModuleAnn (f l) e- -instance Annotated DataOrNew where- ann (DataType l) = l- ann (NewType l) = l- amap = fmap--instance Annotated DeclHead where- ann (DHead l n tvs) = l- ann (DHInfix l tva n tvb) = l- ann (DHParen l dh) = l- amap f (DHead l n tvs) = DHead (f l) n tvs- amap f (DHInfix l tva n tvb) = DHInfix (f l) tva n tvb- amap f (DHParen l dh) = DHParen (f l) dh--instance Annotated InstHead where- ann (IHead l qn ts) = l- ann (IHInfix l ta qn tb) = l- ann (IHParen l ih) = l- amap f (IHead l qn ts) = IHead (f l) qn ts- amap f (IHInfix l ta qn tb) = IHInfix (f l) ta qn tb- amap f (IHParen l ih) = IHParen (f l) ih--instance Annotated Binds where- ann (BDecls l decls) = l- ann (IPBinds l ibs) = l- amap f (BDecls l decls) = BDecls (f l) decls- amap f (IPBinds l ibs) = IPBinds (f l) ibs--instance Annotated IPBind where- ann (IPBind l ipn e) = l- amap f (IPBind l ipn e) = IPBind (f l) ipn e--instance Annotated Match where- ann (Match l n ps rhs bs) = l- ann (InfixMatch l a n b rhs bs) = l- amap f (Match l n ps rhs bs) = Match (f l) n ps rhs bs- amap f (InfixMatch l a n b rhs bs) = InfixMatch (f l) a n b rhs bs--instance Annotated QualConDecl where- ann (QualConDecl l tvs cx cd) = l- amap f (QualConDecl l tvs cx cd) = QualConDecl (f l) tvs cx cd--instance Annotated ConDecl where- ann (ConDecl l n bts) = l- ann (InfixConDecl l ta n tb) = l- ann (RecDecl l n nsbts) = l- amap f (ConDecl l n bts) = ConDecl (f l) n bts- amap f (InfixConDecl l ta n tb) = InfixConDecl (f l) ta n tb- amap f (RecDecl l n fds) = RecDecl (f l) n fds--instance Annotated FieldDecl where- ann (FieldDecl l ns t) = l- amap f (FieldDecl l ns t) = FieldDecl (f l) ns t--instance Annotated GadtDecl where- ann (GadtDecl l n t) = l- amap f (GadtDecl l n t) = GadtDecl (f l) n t--instance Annotated ClassDecl where- ann (ClsDecl l d) = l- ann (ClsDataFam l cx dh mk) = l- ann (ClsTyFam l dh mk) = l- ann (ClsTyDef l t1 t2) = l- amap f (ClsDecl l d) = ClsDecl (f l) d- amap f (ClsDataFam l mcx dh mk) = ClsDataFam (f l) mcx dh mk- amap f (ClsTyFam l dh mk) = ClsTyFam (f l) dh mk- amap f (ClsTyDef l t1 t2) = ClsTyDef (f l) t1 t2--instance Annotated InstDecl where- ann id = case id of- InsDecl l d -> l- InsType l t1 t2 -> l- InsData l dn t cds ders -> l- InsGData l dn t mk gds ders -> l--- InsInline l b act qn -> l- amap f id = case id of- InsDecl l d -> InsDecl (f l) d- InsType l t1 t2 -> InsType (f l) t1 t2- InsData l dn t cds ders -> InsData (f l) dn t cds ders- InsGData l dn t mk gds ders -> InsGData (f l) dn t mk gds ders--- InsInline l b act qn -> InsInline (f l) b act qn--instance Annotated BangType where- ann (BangedTy l t) = l- ann (UnBangedTy l t) = l- ann (UnpackedTy l t) = l- amap f (BangedTy l t) = BangedTy (f l) t- amap f (UnBangedTy l t) = UnBangedTy (f l) t- amap f (UnpackedTy l t) = UnpackedTy (f l) t--instance Annotated Rhs where- ann (UnGuardedRhs l e) = l- ann (GuardedRhss l grhss) = l- amap f (UnGuardedRhs l e) = UnGuardedRhs (f l) e- amap f (GuardedRhss l grhss) = GuardedRhss (f l) grhss--instance Annotated GuardedRhs where- ann (GuardedRhs l ss e) = l- amap f (GuardedRhs l ss e) = GuardedRhs (f l) ss e--instance Annotated Type where- ann t = case t of- TyForall l mtvs cx t -> l- TyFun l t1 t2 -> l- TyTuple l b ts -> l- TyList l t -> l- TyApp l t1 t2 -> l- TyVar l n -> l- TyCon l qn -> l- TyParen l t -> l- TyInfix l ta qn tb -> l- TyKind l t k -> l- amap f t = case t of- TyForall l mtvs mcx t -> TyForall (f l) mtvs mcx t- TyFun l t1 t2 -> TyFun (f l) t1 t2- TyTuple l b ts -> TyTuple (f l) b ts- TyList l t -> TyList (f l) t- TyApp l t1 t2 -> TyApp (f l) t1 t2- TyVar l n -> TyVar (f l) n- TyCon l qn -> TyCon (f l) qn- TyParen l t -> TyParen (f l) t- TyInfix l ta qn tb -> TyInfix (f l) ta qn tb- TyKind l t k -> TyKind (f l) t k--instance Annotated TyVarBind where- ann (KindedVar l n k) = l- ann (UnkindedVar l n) = l- amap f (KindedVar l n k) = KindedVar (f l) n k- amap f (UnkindedVar l n) = UnkindedVar (f l) n--instance Annotated Kind where- ann (KindStar l) = l- ann (KindBang l) = l- ann (KindFn l k1 k2) = l- ann (KindParen l k) = l- ann (KindVar l v) = l- amap f (KindStar l) = KindStar (f l)- amap f (KindBang l) = KindBang (f l)- amap f (KindFn l k1 k2) = KindFn (f l) k1 k2- amap f (KindParen l k) = KindParen (f l) k- amap f (KindVar l n) = KindVar (f l) n--instance Annotated FunDep where- ann (FunDep l ns1 ns2) = l- amap f (FunDep l ns1 ns2) = FunDep (f l) ns1 ns2--instance Annotated Context where- ann (CxSingle l asst ) = l- ann (CxTuple l assts) = l- ann (CxParen l ctxt ) = l- ann (CxEmpty l) = l- amap f (CxSingle l asst ) = CxSingle (f l) asst- amap f (CxTuple l assts) = CxTuple (f l) assts- amap f (CxParen l ctxt ) = CxParen (f l) ctxt- amap f (CxEmpty l) = CxEmpty (f l)--instance Annotated Asst where- ann asst = case asst of- ClassA l qn ts -> l- InfixA l ta qn tb -> l- IParam l ipn t -> l- EqualP l t1 t2 -> l- amap f asst = case asst of- ClassA l qn ts -> ClassA (f l) qn ts- InfixA l ta qn tb -> InfixA (f l) ta qn tb- IParam l ipn t -> IParam (f l) ipn t- EqualP l t1 t2 -> EqualP (f l) t1 t2--instance Annotated Literal where- ann lit = case lit of- Char l c rw -> l- String l s rw -> l- Int l i rw -> l- Frac l r rw -> l- PrimInt l i rw -> l- PrimWord l i rw -> l- PrimFloat l r rw -> l- PrimDouble l r rw -> l- PrimChar l c rw -> l- PrimString l s rw -> l- amap = fmap--instance Annotated Exp where- ann e = case e of- Var l qn -> l- IPVar l ipn -> l- Con l qn -> l- Lit l lit -> l- InfixApp l e1 qop e2 -> l- App l e1 e2 -> l- NegApp l e -> l- Lambda l ps e -> l- Let l bs e -> l- If l ec et ee -> l- Case l e alts -> l- Do l ss -> l- MDo l ss -> l- Tuple l es -> l- TupleSection l mes -> l- List l es -> l- Paren l e -> l- LeftSection l e qop -> l- RightSection l qop e -> l- RecConstr l qn fups -> l- RecUpdate l e fups -> l- EnumFrom l e -> l- EnumFromTo l ef et -> l- EnumFromThen l ef et -> l- EnumFromThenTo l ef eth eto -> l- ListComp l e qss -> l- ParComp l e qsss -> l- ExpTypeSig l e t -> l- VarQuote l qn -> l- TypQuote l qn -> l- BracketExp l br -> l- SpliceExp l sp -> l- QuasiQuote l sn se -> l-- XTag l xn xas me es -> l- XETag l xn xas me -> l- XPcdata l s -> l- XExpTag l e -> l- XChildTag l es -> l-- CorePragma l s e -> l- SCCPragma l s e -> l- GenPragma l s n12 n34 e -> l-- Proc l p e -> l- LeftArrApp l e1 e2 -> l- RightArrApp l e1 e2 -> l- LeftArrHighApp l e1 e2 -> l- RightArrHighApp l e1 e2 -> l-- amap f e = case e of- Var l qn -> Var (f l) qn- IPVar l ipn -> IPVar (f l) ipn- Con l qn -> Con (f l) qn- Lit l lit -> Lit (f l) lit- InfixApp l e1 qop e2 -> InfixApp (f l) e1 qop e2- App l e1 e2 -> App (f l) e1 e2- NegApp l e -> NegApp (f l) e- Lambda l ps e -> Lambda (f l) ps e- Let l bs e -> Let (f l) bs e- If l ec et ee -> If (f l) ec et ee- Case l e alts -> Case (f l) e alts- Do l ss -> Do (f l) ss- MDo l ss -> MDo (f l) ss- Tuple l es -> Tuple (f l) es- TupleSection l mes -> TupleSection (f l) mes- List l es -> List (f l) es- Paren l e -> Paren (f l) e- LeftSection l e qop -> LeftSection (f l) e qop- RightSection l qop e -> RightSection (f l) qop e- RecConstr l qn fups -> RecConstr (f l) qn fups- RecUpdate l e fups -> RecUpdate (f l) e fups- EnumFrom l e -> EnumFrom (f l) e- EnumFromTo l ef et -> EnumFromTo (f l) ef et- EnumFromThen l ef et -> EnumFromThen (f l) ef et- EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto- ListComp l e qss -> ListComp (f l) e qss- ParComp l e qsss -> ParComp (f l) e qsss- ExpTypeSig l e t -> ExpTypeSig (f l) e t- VarQuote l qn -> VarQuote (f l) qn- TypQuote l qn -> TypQuote (f l) qn- BracketExp l br -> BracketExp (f l) br- SpliceExp l sp -> SpliceExp (f l) sp- QuasiQuote l sn se -> QuasiQuote (f l) sn se-- XTag l xn xas me es -> XTag (f l) xn xas me es- XETag l xn xas me -> XETag (f l) xn xas me- XPcdata l s -> XPcdata (f l) s- XExpTag l e -> XExpTag (f l) e- XChildTag l es -> XChildTag (f l) es-- CorePragma l s e -> CorePragma (f l) s e- SCCPragma l s e -> SCCPragma (f l) s e- GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 e-- Proc l p e -> Proc (f l) p e- LeftArrApp l e1 e2 -> LeftArrApp (f l) e1 e2- 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---instance Annotated XName where- ann (XName l s) = l- ann (XDomName l sd sn) = l- amap = fmap--instance Annotated XAttr where- ann (XAttr l xn e) = l- amap f (XAttr l xn e) = XAttr (f l) xn e--instance Annotated Bracket where- ann (ExpBracket l e) = l- ann (PatBracket l p) = l- ann (TypeBracket l t) = l- ann (DeclBracket l ds) = l- amap f (ExpBracket l e) = ExpBracket (f l) e- amap f (PatBracket l p) = PatBracket (f l) p- amap f (TypeBracket l t) = TypeBracket (f l) t- amap f (DeclBracket l ds) = DeclBracket (f l) ds--instance Annotated Splice where- ann (IdSplice l s) = l- ann (ParenSplice l e) = l- amap f (IdSplice l s) = IdSplice (f l) s- amap f (ParenSplice l e) = ParenSplice (f l) e--instance Annotated Safety where- ann (PlayRisky l) = l- ann (PlaySafe l b) = l- amap = fmap--instance Annotated CallConv where- ann (StdCall l) = l- ann (CCall l) = l- amap = fmap--instance Annotated ModulePragma where- ann (LanguagePragma l ns) = l- ann (OptionsPragma l mt s) = l- ann (AnnModulePragma l a) = l- amap f (LanguagePragma l ns) = LanguagePragma (f l) ns- amap f (AnnModulePragma l a) = AnnModulePragma (f l) a- amap f p = fmap f p--instance Annotated Activation where- ann (ActiveFrom l k) = l- ann (ActiveUntil l k) = l- amap = fmap--instance Annotated Rule where- ann (Rule l s act mrvs e1 e2) = l- amap f (Rule l s act mrvs e1 e2) = Rule (f l) s act mrvs e1 e2--instance Annotated RuleVar where- ann (RuleVar l n) = l- ann (TypedRuleVar l n t) = l- amap f (RuleVar l n) = RuleVar (f l) n- amap f (TypedRuleVar l n t) = TypedRuleVar (f l) n t--instance Annotated WarningText where- ann (DeprText l s) = l- ann (WarnText l s) = l- amap = fmap--instance Annotated Pat where- ann p = case p of- PVar l n -> l- PLit l lit -> l- PNeg l p -> l- PNPlusK l n k -> l- PInfixApp l pa qn pb -> l- PApp l qn ps -> l- PTuple l ps -> l- PList l ps -> l- PParen l p -> l- PRec l qn pfs -> l- PAsPat l n p -> l- PWildCard l -> l- PIrrPat l p -> l- PatTypeSig l p t -> l- PViewPat l e p -> l- PRPat l rps -> l- PXTag l xn pxas mp ps -> l- PXETag l xn pxas mp -> l- PXPcdata l s -> l- PXPatTag l p -> l- PXRPats l rps -> l- PExplTypeArg l qn t -> l- PQuasiQuote l sn st -> l- PBangPat l p -> l- amap f p = case p of- PVar l n -> PVar (f l) n- PLit l lit -> PLit (f l) lit- PNeg l p -> PNeg (f l) p- PNPlusK l n k -> PNPlusK (f l) n k- PInfixApp l pa qn pb -> PInfixApp (f l) pa qn pb- PApp l qn ps -> PApp (f l) qn ps- PTuple l ps -> PTuple (f l) ps- PList l ps -> PList (f l) ps- PParen l p -> PParen (f l) p- PRec l qn pfs -> PRec (f l) qn pfs- PAsPat l n p -> PAsPat (f l) n p- PWildCard l -> PWildCard (f l)- PIrrPat l p -> PIrrPat (f l) p- PatTypeSig l p t -> PatTypeSig (f l) p t- PViewPat l e p -> PViewPat (f l) e p- PRPat l rps -> PRPat (f l) rps- PXTag l xn pxas mp ps -> PXTag (f l) xn pxas mp ps- PXETag l xn pxas mp -> PXETag (f l) xn pxas mp- PXPcdata l s -> PXPcdata (f l) s- PXPatTag l p -> PXPatTag (f l) p- PXRPats l rps -> PXRPats (f l) rps- PExplTypeArg l qn t -> PExplTypeArg (f l) qn t- PQuasiQuote l sn st -> PQuasiQuote (f l) sn st- PBangPat l p -> PBangPat (f l) p--instance Annotated PXAttr where- ann (PXAttr l xn p) = l- amap f (PXAttr l xn p) = PXAttr (f l) xn p--instance Annotated RPatOp where- ann (RPStar l) = l- ann (RPStarG l) = l- ann (RPPlus l) = l- ann (RPPlusG l) = l- ann (RPOpt l) = l- ann (RPOptG l) = l- amap = fmap--instance Annotated RPat where- ann rp = case rp of- RPOp l rp rop -> l- RPEither l rp1 rp2 -> l- RPSeq l rps -> l- RPGuard l p ss -> l- RPCAs l n rp -> l- RPAs l n rp -> l- RPParen l rp -> l- RPPat l p -> l- amap f rp = case rp of- RPOp l rp rop -> RPOp (f l) rp rop- RPEither l rp1 rp2 -> RPEither (f l) rp1 rp2- RPSeq l rps -> RPSeq (f l) rps- RPGuard l p ss -> RPGuard (f l) p ss- RPCAs l n rp -> RPCAs (f l) n rp- RPAs l n rp -> RPAs (f l) n rp- RPParen l rp -> RPParen (f l) rp- RPPat l p -> RPPat (f l) p--instance Annotated PatField where- ann (PFieldPat l qn p) = l- ann (PFieldPun l n) = l- ann (PFieldWildcard l) = l- amap f (PFieldPat l qn p) = PFieldPat (f l) qn p- amap f (PFieldPun l n) = PFieldPun (f l) n- amap f (PFieldWildcard l) = PFieldWildcard (f l)--instance Annotated Stmt where- ann (Generator l p e) = l- ann (Qualifier l e) = l- ann (LetStmt l bs) = l- ann (RecStmt l ss) = l- amap f (Generator l p e) = Generator (f l) p e- amap f (Qualifier l e) = Qualifier (f l) e- amap f (LetStmt l bs) = LetStmt (f l) bs- amap f (RecStmt l ss) = RecStmt (f l) ss--instance Annotated QualStmt where- ann (QualStmt l s) = l- ann (ThenTrans l e) = l- ann (ThenBy l e1 e2) = l- ann (GroupBy l e) = l- ann (GroupUsing l e) = l- ann (GroupByUsing l e1 e2) = l- amap f (QualStmt l s) = QualStmt (f l) s- amap f (ThenTrans l e) = ThenTrans (f l) e- amap f (ThenBy l e1 e2) = ThenBy (f l) e1 e2- amap f (GroupBy l e) = GroupBy (f l) e- amap f (GroupUsing l e) = GroupUsing (f l) e- amap f (GroupByUsing l e1 e2) = GroupByUsing (f l) e1 e2--instance Annotated FieldUpdate where- ann (FieldUpdate l qn e) = l- ann (FieldPun l n) = l- ann (FieldWildcard l) = l- amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e- amap f (FieldPun l n) = FieldPun (f l) n- amap f (FieldWildcard l) = FieldWildcard (f l)--instance Annotated Alt where- ann (Alt l p gs bs) = l- amap f (Alt l p gs bs) = Alt (f l) p gs bs--instance Annotated GuardedAlts where- ann (UnGuardedAlt l e) = l- ann (GuardedAlts l galts) = l- amap f (UnGuardedAlt l e) = UnGuardedAlt (f l) e- amap f (GuardedAlts l galts) = GuardedAlts (f l) galts--instance Annotated GuardedAlt where- ann (GuardedAlt l ss e) = l- amap f (GuardedAlt l ss e) = GuardedAlt (f l) ss e
src/Language/Haskell/Exts/Build.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Build@@ -20,54 +22,54 @@ module Language.Haskell.Exts.Build ( -- * Syntax building functions- name, -- :: String -> Name- sym, -- :: String -> Name- var, -- :: Name -> Exp- op, -- :: Name -> QOp- qvar, -- :: Module -> Name -> Exp- pvar, -- :: Name -> Pat- app, -- :: Exp -> Exp -> Exp- infixApp, -- :: Exp -> QOp -> Exp -> Exp- appFun, -- :: Exp -> [Exp] -> Exp- pApp, -- :: Name -> [Pat] -> Pat- tuple, -- :: [Exp] -> Exp- pTuple, -- :: [Pat] -> Pat- varTuple, -- :: [Name] -> Exp- pvarTuple, -- :: [Name] -> Pat- function, -- :: String -> Exp- strE, -- :: String -> Exp- charE, -- :: Char -> Exp- intE, -- :: Integer -> Exp- strP, -- :: String -> Pat- charP, -- :: Char -> Pat- intP, -- :: Integer -> Pat- doE, -- :: [Stmt] -> Exp- lamE, -- :: SrcLoc -> [Pat] -> Exp -> Exp- letE, -- :: [Decl] -> Exp -> Exp- caseE, -- :: Exp -> [Alt] -> Exp- alt, -- :: SrcLoc -> Pat -> Exp -> Alt- altGW, -- :: SrcLoc -> Pat -> [Stmt] -> Exp -> Binds -> Alt- listE, -- :: [Exp] -> Exp- eList, -- :: Exp- peList, -- :: Pat- paren, -- :: Exp -> Exp- pParen, -- :: Pat -> Pat- qualStmt, -- :: Exp -> Stmt- genStmt, -- :: SrcLoc -> Pat -> Exp -> Stmt+ name, -- :: String -> Name ()+ sym, -- :: String -> Name ()+ var, -- :: Name () -> Exp ()+ op, -- :: Name () -> QOp+ qvar, -- :: Module -> Name () -> Exp ()+ pvar, -- :: Name () -> Pat ()+ app, -- :: Exp () -> Exp () -> Exp ()+ infixApp, -- :: Exp () -> QOp -> Exp () -> Exp ()+ appFun, -- :: Exp () -> [Exp] -> Exp ()+ pApp, -- :: Name () -> [Pat] -> Pat ()+ tuple, -- :: [Exp] -> Exp ()+ pTuple, -- :: [Pat] -> Pat ()+ varTuple, -- :: [Name] -> Exp ()+ pvarTuple, -- :: [Name] -> Pat ()+ function, -- :: String -> Exp ()+ strE, -- :: String -> Exp ()+ charE, -- :: Char -> Exp ()+ intE, -- :: Integer -> Exp ()+ strP, -- :: String -> Pat ()+ charP, -- :: Char -> Pat ()+ intP, -- :: Integer -> Pat ()+ doE, -- :: [Stmt] -> Exp ()+ lamE, -- :: SrcLoc -> [Pat] -> Exp () -> Exp ()+ letE, -- :: [Decl] -> Exp () -> Exp ()+ caseE, -- :: Exp () -> [Alt] -> Exp ()+ alt, -- :: SrcLoc -> Pat () -> Exp () -> Alt+ altGW, -- :: SrcLoc -> Pat () -> [Stmt] -> Exp () -> Binds -> Alt+ listE, -- :: [Exp] -> Exp ()+ eList, -- :: Exp ()+ peList, -- :: Pat ()+ paren, -- :: Exp () -> Exp ()+ pParen, -- :: Pat () -> Pat ()+ qualStmt, -- :: Exp () -> Stmt+ genStmt, -- :: SrcLoc -> Pat () -> Exp () -> Stmt letStmt, -- :: [Decl] -> Stmt binds, -- :: [Decl] -> Binds noBinds, -- :: Binds- wildcard, -- :: Pat+ wildcard, -- :: Pat () genNames, -- :: String -> Int -> [Name] -- * More advanced building- sfun, -- :: SrcLoc -> Name -> [Name] -> Rhs -> Binds -> Decl- simpleFun, -- :: SrcLoc -> Name -> Name -> Exp -> Decl- patBind, -- :: SrcLoc -> Pat -> Exp -> Decl- patBindWhere, -- :: SrcLoc -> Pat -> Exp -> [Decl] -> Decl- nameBind, -- :: SrcLoc -> Name -> Exp -> Decl- metaFunction, -- :: String -> [Exp] -> Exp- metaConPat -- :: String -> [Pat] -> Pat+ sfun, -- :: SrcLoc -> Name () -> [Name] -> Rhs -> Binds -> Decl ()+ simpleFun, -- :: SrcLoc -> Name () -> Name () -> Exp () -> Decl ()+ patBind, -- :: SrcLoc -> Pat () -> Exp () -> Decl ()+ patBindWhere, -- :: SrcLoc -> Pat () -> Exp () -> [Decl] -> Decl ()+ nameBind, -- :: SrcLoc -> Name () -> Exp () -> Decl ()+ metaFunction, -- :: String -> [Exp] -> Exp ()+ metaConPat -- :: String -> [Pat] -> Pat () ) where import Language.Haskell.Exts.Syntax@@ -77,214 +79,216 @@ -- | An identifier with the given string as its name. -- The string should be a valid Haskell identifier.-name :: String -> Name-name = Ident+name :: String -> Name ()+name = Ident () -- | A symbol identifier. The string should be a valid -- Haskell symbol identifier.-sym :: String -> Name-sym = Symbol+sym :: String -> Name ()+sym = Symbol () -- | A local variable as expression.-var :: Name -> Exp-var = Var . UnQual+var :: Name () -> Exp ()+var = Var () . UnQual () -- | Use the given identifier as an operator.-op :: Name -> QOp-op = QVarOp . UnQual+op :: Name () -> QOp ()+op = QVarOp () . UnQual () -- | A qualified variable as expression.-qvar :: ModuleName -> Name -> Exp-qvar m n = Var $ Qual m n+qvar :: ModuleName () -> Name () -> Exp ()+qvar m n = Var () $ Qual () m n -- | A pattern variable.-pvar :: Name -> Pat-pvar = PVar+pvar :: Name () -> Pat ()+pvar = PVar () -- | Application of expressions by juxtaposition.-app :: Exp -> Exp -> Exp-app = App+app :: Exp () -> Exp () -> Exp ()+app = App () -- | Apply an operator infix.-infixApp :: Exp -> QOp -> Exp -> Exp-infixApp = InfixApp+infixApp :: Exp () -> QOp () -> Exp () -> Exp ()+infixApp = InfixApp () -- | Apply a function to a list of arguments.-appFun :: Exp -> [Exp] -> Exp+appFun :: Exp () -> [Exp ()] -> Exp () appFun f [] = f appFun f (a:as) = appFun (app f a) as -- | A constructor pattern, with argument patterns.-pApp :: Name -> [Pat] -> Pat-pApp n ps = PApp (UnQual n) ps+pApp :: Name () -> [Pat ()] -> Pat ()+pApp n ps = PApp () (UnQual () n) ps -- | A tuple expression.-tuple :: [Exp] -> Exp-tuple = Tuple+tuple :: [Exp ()] -> Exp ()+tuple = Tuple () Boxed -- | A tuple pattern.-pTuple :: [Pat] -> Pat-pTuple = PTuple+pTuple :: [Pat ()] -> Pat ()+pTuple = PTuple () Boxed -- | A tuple expression consisting of variables only.-varTuple :: [Name] -> Exp+varTuple :: [Name ()] -> Exp () varTuple ns = tuple $ map var ns -- | A tuple pattern consisting of variables only.-pvarTuple :: [Name] -> Pat+pvarTuple :: [Name ()] -> Pat () pvarTuple ns = pTuple $ map pvar ns -- | A function with a given name.-function :: String -> Exp-function = var . Ident+function :: String -> Exp ()+function = var . Ident () -- | A literal string expression.-strE :: String -> Exp-strE = Lit . String+strE :: String -> Exp ()+strE s = Lit () (String () s s) -- | A literal character expression.-charE :: Char -> Exp-charE = Lit . Char+charE :: Char -> Exp ()+charE c = Lit () (Char () c [c]) -- | A literal integer expression.-intE :: Integer -> Exp-intE = Lit . Int+intE :: Integer -> Exp ()+intE n = Lit () (Int () n (show n)) -- | A literal string pattern.-strP :: String -> Pat-strP = PLit . String+strP :: String -> Pat ()+strP s = PLit () (Signless ()) (String () s s) -- | A literal character pattern.-charP :: Char -> Pat-charP = PLit . Char+charP :: Char -> Pat ()+charP x = PLit () (Signless ()) (Char () x [x]) -- | A literal integer pattern.-intP :: Integer -> Pat-intP = PLit . Int+intP :: Integer -> Pat ()+intP x = PLit ()+ (if x >= 0 then Signless () else Negative ())+ (Int () (abs x) (show x)) -- | A do block formed by the given statements. -- The last statement in the list should be -- a 'Qualifier' expression.-doE :: [Stmt] -> Exp-doE = Do+doE :: [Stmt ()] -> Exp ()+doE = Do () -- | Lambda abstraction, given a list of argument -- patterns and an expression body.-lamE :: SrcLoc -> [Pat] -> Exp -> Exp-lamE = Lambda+lamE :: [Pat ()] -> Exp () -> Exp ()+lamE = Lambda () -- | A @let@ ... @in@ block.-letE :: [Decl] -> Exp -> Exp-letE ds e = Let (binds ds) e+letE :: [Decl ()] -> Exp () -> Exp ()+letE ds e = Let () (binds ds) e -- | A @case@ expression.-caseE :: Exp -> [Alt] -> Exp-caseE = Case+caseE :: Exp () -> [Alt ()] -> Exp ()+caseE = Case () -- | An unguarded alternative in a @case@ expression.-alt :: SrcLoc -> Pat -> Exp -> Alt-alt s p e = Alt s p (unGAlt e) noBinds+alt :: Pat () -> Exp () -> Alt ()+alt p e = Alt () p (unGAlt e) noBinds -- | An alternative with a single guard in a @case@ expression.-altGW :: SrcLoc -> Pat -> [Stmt] -> Exp -> Binds -> Alt-altGW s p gs e w = Alt s p (gAlt s gs e) w+altGW :: Pat () -> [Stmt ()] -> Exp () -> Binds () -> Alt ()+altGW p gs e w = Alt () p (gAlt gs e) (Just w) -- | An unguarded righthand side of a @case@ alternative.-unGAlt :: Exp -> GuardedAlts-unGAlt = UnGuardedAlt+unGAlt :: Exp () -> Rhs ()+unGAlt = UnGuardedRhs () -- | An list of guarded righthand sides for a @case@ alternative.-gAlts :: SrcLoc -> [([Stmt],Exp)] -> GuardedAlts-gAlts s as = GuardedAlts $ map (\(gs,e) -> GuardedAlt s gs e) as+gAlts :: [([Stmt ()],Exp ())] -> Rhs ()+gAlts as = GuardedRhss () $ map (\(gs,e) -> GuardedRhs () gs e) as -- | A single guarded righthand side for a @case@ alternative.-gAlt :: SrcLoc -> [Stmt] -> Exp -> GuardedAlts-gAlt s gs e = gAlts s [(gs,e)]+gAlt :: [Stmt ()] -> Exp () -> Rhs ()+gAlt gs e = gAlts [(gs,e)] -- | A list expression.-listE :: [Exp] -> Exp-listE = List+listE :: [Exp ()] -> Exp ()+listE = List () -- | The empty list expression.-eList :: Exp-eList = List []+eList :: Exp ()+eList = List () [] -- | The empty list pattern.-peList :: Pat-peList = PList []+peList :: Pat ()+peList = PList () [] -- | Put parentheses around an expression.-paren :: Exp -> Exp-paren = Paren+paren :: Exp () -> Exp ()+paren = Paren () -- | Put parentheses around a pattern.-pParen :: Pat -> Pat-pParen = PParen+pParen :: Pat () -> Pat ()+pParen = PParen () -- | A qualifier expression statement.-qualStmt :: Exp -> Stmt-qualStmt = Qualifier+qualStmt :: Exp () -> Stmt ()+qualStmt = Qualifier () -- | A generator statement: /pat/ @<-@ /exp/-genStmt :: SrcLoc -> Pat -> Exp -> Stmt-genStmt = Generator+genStmt :: Pat () -> Exp () -> Stmt ()+genStmt = Generator () -- | A @let@ binding group as a statement.-letStmt :: [Decl] -> Stmt-letStmt ds = LetStmt $ binds ds+letStmt :: [Decl ()] -> Stmt ()+letStmt ds = LetStmt () $ binds ds -- | Hoist a set of declarations to a binding group.-binds :: [Decl] -> Binds-binds = BDecls+binds :: [Decl ()] -> Binds ()+binds = BDecls () -- | An empty binding group.-noBinds :: Binds-noBinds = binds []+noBinds :: Maybe (Binds ())+noBinds = Nothing -- | The wildcard pattern: @_@-wildcard :: Pat-wildcard = PWildCard+wildcard :: Pat ()+wildcard = PWildCard () -- | Generate k names by appending numbers 1 through k to a given string.-genNames :: String -> Int -> [Name]-genNames s k = [ Ident $ s ++ show i | i <- [1..k] ]+genNames :: String -> Int -> [Name ()]+genNames s k = [ Ident () $ s ++ show i | i <- [1..k] ] ------------------------------------------------------------------------------- -- Some more specialised help functions -- | A function with a single clause-sfun :: SrcLoc -> Name -> [Name] -> Rhs -> Binds -> Decl-sfun s f pvs rhs bs = FunBind [Match s f (map pvar pvs) Nothing rhs bs]+sfun :: Name () -> [Name ()] -> (Rhs ()) -> Maybe (Binds ()) -> Decl ()+sfun f pvs rhs bs = FunBind () [Match () f (map pvar pvs) rhs bs] -- | A function with a single clause, a single argument, no guards -- and no where declarations-simpleFun :: SrcLoc -> Name -> Name -> Exp -> Decl-simpleFun s f a e = let rhs = UnGuardedRhs e- in sfun s f [a] rhs noBinds+simpleFun :: Name () -> Name () -> Exp () -> Decl ()+simpleFun f a e = let rhs = UnGuardedRhs () e+ in sfun f [a] rhs noBinds -- | A pattern bind where the pattern is a variable, and where -- there are no guards and no 'where' clause.-patBind :: SrcLoc -> Pat -> Exp -> Decl-patBind s p e = let rhs = UnGuardedRhs e- in PatBind s p Nothing rhs noBinds+patBind :: Pat () -> Exp () -> Decl ()+patBind p e = let rhs = UnGuardedRhs () e+ in PatBind () p rhs noBinds -- | A pattern bind where the pattern is a variable, and where -- there are no guards, but with a 'where' clause.-patBindWhere :: SrcLoc -> Pat -> Exp -> [Decl] -> Decl-patBindWhere s p e ds = let rhs = UnGuardedRhs e- in PatBind s p Nothing rhs (binds ds)+patBindWhere :: Pat () -> Exp () -> [Decl ()] -> Decl ()+patBindWhere p e ds = let rhs = UnGuardedRhs () e+ in PatBind () p rhs (if null ds then Nothing else Just (binds ds)) -- | Bind an identifier to an expression.-nameBind :: SrcLoc -> Name -> Exp -> Decl-nameBind s n e = patBind s (pvar n) e+nameBind :: Name () -> Exp () -> Decl ()+nameBind n e = patBind (pvar n) e -- | Apply function of a given name to a list of arguments.-metaFunction :: String -> [Exp] -> Exp-metaFunction s es = mf s (reverse es)+metaFunction :: String -> [Exp ()] -> Exp ()+metaFunction s' es' = mf s' (reverse es') where mf s [] = var $ name s mf s (e:es) = app (mf s es) e -- | Apply a constructor of a given name to a list of pattern -- arguments, forming a constructor pattern.-metaConPat :: String -> [Pat] -> Pat+metaConPat :: String -> [Pat ()] -> Pat () metaConPat s ps = pApp (name s) ps
src/Language/Haskell/Exts/Comments.hs view
@@ -1,20 +1,189 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-} -module Language.Haskell.Exts.Comments where - -import Language.Haskell.Exts.SrcLoc - -#ifdef __GLASGOW_HASKELL__ -#ifdef BASE4 -import Data.Data -#else -import Data.Generics (Data(..),Typeable(..)) -#endif -#endif - --- | A Haskell comment. The 'Bool' is 'True' if the comment is multi-line, i.e. @{- -}@. -data Comment = Comment Bool SrcSpan String -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Show,Typeable,Data) -#else - deriving (Eq,Show) -#endif +{-# LANGUAGE DeriveDataTypeable, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Comments+-- Copyright : (c) JP Moresmau 2015+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : experimental+-- Portability : portable+--+-- This module processes comments along with an annotated AST,+-- to be able to associate Haddock comments with the actual item+-- they refer to.+--+-- Example:+--+-- @+-- let+-- parse1Result :: ParseResult (Module SrcSpanInfo,[Comment])+-- parse1Result =+-- parseFileContentsWithComments+-- (defaultParseMode { parseFilename = file })+-- contents+-- withC :: ParseResult (Module (SrcSpanInfo,[Comment]))+-- withC = case parse1Result of+-- ParseOk res -> ParseOk $ associateHaddock res+-- ParseFailed sloc msg -> ParseFailed sloc msg+-- @+--+-- In this code sample, parse1Result is what you get when you parse a file:+-- a 'Module' annotated wth 'SrcSpanInfo', and a list of comments+-- After passing the result to 'associateHaddock', you get a 'Module'+-- annotated with both a 'SrcSpanInfo' and the list of 'Comment' related to the+-- specific AST node.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Comments+ ( associateHaddock+ , Comment(..), UnknownPragma(..)+ ) where++import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.SrcLoc++import Data.Char (isSpace)+import Data.Traversable+import Data.Data+++-- | A Haskell comment. The 'Bool' is 'True' if the comment is multi-line, i.e. @{- -}@.+data Comment = Comment Bool SrcSpan String+ deriving (Eq,Show,Typeable,Data)++-- | An unknown pragma.+data UnknownPragma = UnknownPragma SrcSpan String+ deriving (Eq,Show,Typeable,Data)+++-- | Associates an AST with Source Span Information+-- with relevant Haddock comments+associateHaddock+ ::(Annotated ast,Traversable ast)+ => (ast SrcSpanInfo,[Comment])+ -> ast (SrcSpanInfo,[Comment])+associateHaddock (ast,[]) = fmap (\src->(src,[])) ast+associateHaddock (ast,comments) =+ let+ (ca,assocs1) = mapAccumL associate1 (newAccumulator comments) ast+ in snd $ mapAccumL merge (lastPost ca) assocs1+++-- | Merge existing association with post comment associations+merge+ :: [(SrcSpanInfo,[Comment])]+ -> (SrcSpanInfo,[Comment])+ -> ([(SrcSpanInfo,[Comment])], (SrcSpanInfo,[Comment]))+merge [] ret = ([],ret)+merge (x:xs) (src,cmts) =+ if fst x == src+ then (xs,(src,cmts ++ snd x))+ else (x:xs,(src,cmts))+++-- | Ensure that if file ends with comment we process it+lastPost :: CommentAccumulator -> [(SrcSpanInfo, [Comment])]+lastPost (CommentAccumulator (Post cmt : rest) past assocs) =+ let (toMerge, _) = span isNone rest+ psrc = matchPreviousSrc past+ in (assocs ++ [(psrc, cmt : map hcComment toMerge)])+lastPost (CommentAccumulator _ _ assocs) = assocs+++-- | Accumulate comments mappings, either directly with the source+-- or in another association list for later processing+associate1+ :: CommentAccumulator+ -> SrcSpanInfo+ -> (CommentAccumulator,(SrcSpanInfo,[Comment]))+associate1 ca@(CommentAccumulator [] _ _) src = (ca,(src,[]))+associate1 (CommentAccumulator (hc@(Pre cmt):rest) _ assocs) src =+ if isBefore hc src+ then+ let (toMerge,next) = getToMerge src rest+ newAssoc = (src,cmt : map hcComment toMerge)+ in (CommentAccumulator next [] assocs,newAssoc)+ else (CommentAccumulator (hc:rest) [] assocs,(src,[]))+associate1 (CommentAccumulator (hc@(Post cmt):rest) past assocs) src =+ if isBefore hc src+ then+ let (toMerge,next) = getToMerge src rest+ newAssocs =+ if null past+ then assocs+ else assocs++[(matchPreviousSrc past,cmt : map hcComment toMerge)]+ in associate1 (CommentAccumulator next [] newAssocs) src+ else (CommentAccumulator (hc:rest) (src:past) assocs,(src,[]))+associate1 (CommentAccumulator (_:rest) past assocs) src =+ (CommentAccumulator rest (src:past) assocs,(src,[]))+++-- | The comment accumulator+data CommentAccumulator = CommentAccumulator+ [HaddockComment] -- The Haddock comments to process+ [SrcSpanInfo] -- The past src infos to resolve post comments+ [(SrcSpanInfo,[Comment])] -- The additional associations between src and comments+++-- | Create a new accumulator+newAccumulator :: [Comment] -> CommentAccumulator+newAccumulator comments = CommentAccumulator (commentsToHaddock comments) [] []++-- | Get comments to merge+getToMerge+ :: SrcSpanInfo -- ^ Stop before src+ -> [HaddockComment] -- ^ All remaining comments+ -> ([HaddockComment],[HaddockComment]) -- ^ Comments to merge, left overs+getToMerge src = span (\hc-> isNone hc && isBefore hc src)+++-- | Get the biggest src that ends where the first one does+matchPreviousSrc :: [SrcSpanInfo] -> SrcSpanInfo+matchPreviousSrc [] =+ error "Language.Haskell.Exts.Annotated.Comments.matchPreviousSrc: empty list"+matchPreviousSrc srcs =+ let end = srcSpanEnd $ srcInfoSpan $ head srcs+ in last $ filter ((end ==) . srcSpanEnd . srcInfoSpan) srcs++-- | Is a Haddock comment before a given location+isBefore :: HaddockComment -> SrcSpanInfo -> Bool+isBefore hc src=+ let+ (Comment _ csrc _) = hcComment hc+ in csrc < srcInfoSpan src++-- | Represents a Haddock Comment+data HaddockComment =+ -- | Comment before declaration+ Pre+ {+ hcComment::Comment+ }+ -- | Comment after declaration+ | Post {+ hcComment::Comment+ }+ -- | Non Haddock comment+ | None {+ hcComment::Comment+ }++-- | Is a comment not haddock?+isNone :: HaddockComment -> Bool+isNone (None _) = True+isNone _ = False+++-- | Comments to Haddock Comments+commentsToHaddock :: [Comment] -> [HaddockComment]+commentsToHaddock = map commentToHaddock++-- | Comment to Haddock Comment+commentToHaddock :: Comment -> HaddockComment+commentToHaddock c@(Comment _ _ txt) =+ case dropWhile isSpace txt of+ ('|':_) -> Pre c+ ('^':_) -> Post c+ _ -> None c
+ src/Language/Haskell/Exts/ExactPrint.hs view
@@ -0,0 +1,2219 @@+{-# LANGUAGE CPP, DeriveFunctor, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Annotated.ExactPrint+-- Copyright : (c) Niklas Broberg 2009+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Exact-printer for Haskell abstract syntax. The input is a (semi-concrete)+-- abstract syntax tree, annotated with exact source information to enable+-- printing the tree exactly as it was parsed.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.ExactPrint+ ( exactPrint+ , ExactP+ ) where++import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.Comments++import Control.Monad (when, liftM, ap, unless)+import qualified Control.Monad.Fail as Fail+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative (Applicative(..))+#endif+import Control.Arrow ((***), (&&&))+import Prelude hiding (exp)+import Data.List (intersperse)++------------------------------------------------------+-- The EP monad and basic combinators++type Pos = (Int,Int)++pos :: (SrcInfo loc) => loc -> Pos+pos ss = (startLine ss, startColumn ss)++newtype EP x = EP (Pos -> [Comment] -> (x, Pos, [Comment], ShowS))++instance Functor EP where+ fmap = liftM++instance Applicative EP where+ pure x = EP $ \l cs -> (x, l, cs, id)+ (<*>) = ap++instance Monad EP where++ EP m >>= k = EP $ \l0 c0 -> let+ (a, l1, c1, s1) = m l0 c0+ EP f = k a+ (b, l2, c2, s2) = f l1 c1+ in (b, l2, c2, s1 . s2)++instance Fail.MonadFail EP where+ fail = error++runEP :: EP () -> [Comment] -> String+runEP (EP f) cs = let (_,_,_,s) = f (1,1) cs in s ""++getPos :: EP Pos+getPos = EP (\l cs -> (l,l,cs,id))++setPos :: Pos -> EP ()+setPos l = EP (\_ cs -> ((),l,cs,id))++printString :: String -> EP ()+printString str =+ EP (\(l,c) cs -> let (l', c') = foldl go (l, c) str+ go (cl, _) '\n' = (cl + 1, 1)+ go (cl, cc) _ = (cl, cc + 1)+ in ((), (l', c'), cs, showString str))+++getComment :: EP (Maybe Comment)+getComment = EP $ \l cs ->+ let x = case cs of+ c:_ -> Just c+ _ -> Nothing+ in (x, l, cs, id)++dropComment :: EP ()+dropComment = EP $ \l cs ->+ let cs' = case cs of+ (_:cs1) -> cs1+ _ -> cs+ in ((), l, cs', id)++newLine :: EP ()+newLine = do+ (l,_) <- getPos+ printString "\n"+ setPos (l+1,1)++padUntil :: Pos -> EP ()+padUntil (l,c) = do+ (l1,c1) <- getPos+ case {- trace (show ((l,c), (l1,c1))) -} () of+ _ {-()-} | l1 >= l && c1 <= c -> printString $ replicate (c - c1) ' '+ | l1 < l -> newLine >> padUntil (l,c)+ | otherwise -> return ()+++mPrintComments :: Pos -> EP ()+mPrintComments p = do+ mc <- getComment+ case mc of+ Nothing -> return ()+ Just (Comment multi s str) ->+ when (pos s < p) $ do+ dropComment+ padUntil (pos s)+ printComment multi str+ setPos (srcSpanEndLine s, srcSpanEndColumn s)+ mPrintComments p++printComment :: Bool -> String -> EP ()+printComment b str+ | b = printString $ "{-" ++ str ++ "-}"+ | otherwise = printString $ "--" ++ str++printWhitespace :: Pos -> EP ()+printWhitespace p = mPrintComments p >> padUntil p++printStringAt :: Pos -> String -> EP ()+printStringAt p str = printWhitespace p >> printString str++errorEP :: String -> EP a+errorEP = fail++------------------------------------------------------------------------------+-- Printing of source elements++-- | Print an AST exactly as specified by the annotations on the nodes in the tree.+exactPrint :: (ExactP ast) => ast SrcSpanInfo -> [Comment] -> String+exactPrint ast = runEP (exactPC ast)++exactPC :: (ExactP ast) => ast SrcSpanInfo -> EP ()+exactPC ast = let p = pos (ann ast) in mPrintComments p >> padUntil p >> exactP ast++printSeq :: [(Pos, EP ())] -> EP ()+printSeq [] = return ()+printSeq ((p,pr):xs) = printWhitespace p >> pr >> printSeq xs++printStrs :: SrcInfo loc => [(loc, String)] -> EP ()+printStrs = printSeq . map (pos *** printString)++printPoints :: SrcSpanInfo -> [String] -> EP ()+printPoints l = printStrs . zip (srcInfoPoints l)++printInterleaved, printInterleaved' :: (ExactP ast, SrcInfo loc) => [(loc, String)] -> [ast SrcSpanInfo] -> EP ()+printInterleaved sistrs asts = printSeq $+ interleave (map (pos *** printString ) sistrs)+ (map (pos . ann &&& exactP) asts)++printInterleaved' sistrs (a:asts) = exactPC a >> printInterleaved sistrs asts+printInterleaved' _ _ = internalError "printInterleaved'"++printStreams :: [(Pos, EP ())] -> [(Pos, EP ())] -> EP ()+printStreams [] ys = printSeq ys+printStreams xs [] = printSeq xs+printStreams (x@(p1,ep1):xs) (y@(p2,ep2):ys)+ | p1 <= p2 = printWhitespace p1 >> ep1 >> printStreams xs (y:ys)+ | otherwise = printWhitespace p2 >> ep2 >> printStreams (x:xs) ys+++interleave :: [a] -> [a] -> [a]+interleave [] ys = ys+interleave xs [] = xs+interleave (x:xs) (y:ys) = x:y: interleave xs ys++maybeEP :: (a -> EP ()) -> Maybe a -> EP ()+maybeEP = maybe (return ())++bracketList :: (ExactP ast) => (String, String, String) -> [SrcSpan] -> [ast SrcSpanInfo] -> EP ()+bracketList (a,b,c) poss asts = printInterleaved (pList poss (a,b,c)) asts++pList :: [a] -> (b, b, b) -> [(a, b)]+pList (p:ps) (a,b,c) = (p,a) : pList' ps (b,c)+pList _ _ = internalError "pList"+pList' :: [a] -> (b, b) -> [(a, b)]+pList' [] _ = []+pList' [p] (_,c) = [(p,c)]+pList' (p:ps) (b,c) = (p, b) : pList' ps (b,c)++parenList, squareList, squareColonList, curlyList, parenHashList,+ unboxedSumTypeList :: (ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP ()+parenList = bracketList ("(",",",")")+squareList = bracketList ("[",",","]")+squareColonList = bracketList ("[:",",",":]")+curlyList = bracketList ("{",",","}")+parenHashList = bracketList ("(#",",","#)")+unboxedSumTypeList = bracketList ("(#", "|", "#)")++layoutList :: (ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP ()+layoutList poss asts = printStreams+ (map (pos *** printString) $ lList poss)+ (map (pos . ann &&& exactP) asts)++lList :: [SrcSpan] -> [(SrcSpan, String)]+lList (p:ps) = (if isNullSpan p then (p,"") else (p,"{")) : lList' ps+lList _ = internalError "lList"+lList' :: [SrcSpan] -> [(SrcSpan, String)]+lList' [] = []+lList' [p] = [if isNullSpan p then (p,"") else (p,"}")]+lList' (p:ps) = (if isNullSpan p then (p,"") else (p,";")) : lList' ps++printSemi :: SrcSpan -> EP ()+printSemi p = do+ printWhitespace (pos p)+ unless (isNullSpan p) $ printString ";"+++--------------------------------------------------+-- Exact printing++class Annotated ast => ExactP ast where+ exactP :: ast SrcSpanInfo -> EP ()++instance ExactP Literal where+ exactP lit = case lit of+ Char _ _ rw -> printString ('\'':rw ++ "\'")+ String _ _ rw -> printString ('\"':rw ++ "\"")+ Int _ _ rw -> printString rw+ Frac _ _ rw -> printString rw+ PrimInt _ _ rw -> printString (rw ++ "#" )+ PrimWord _ _ rw -> printString (rw ++ "##")+ PrimFloat _ _ rw -> printString (rw ++ "#" )+ PrimDouble _ _ rw -> printString (rw ++ "##")+ PrimChar _ _ rw -> printString ('\'':rw ++ "\'#" )+ PrimString _ _ rw -> printString ('\"':rw ++ "\"#" )++instance ExactP Sign where+ exactP sg = case sg of+ Signless _ -> return ()+ Negative l -> printStringAt (pos l) "-"++instance ExactP ModuleName where+ exactP (ModuleName _ str) = printString str++instance ExactP SpecialCon where+ exactP sc = case sc of+ UnitCon l -> printPoints l ["(",")"]+ ListCon l -> printPoints l ["[","]"]+ FunCon l -> case srcInfoPoints l of+ [_,b,_] -> printStringAt (pos b) "->"+ _ -> errorEP "ExactP: SpecialCon is given wrong number of srcInfoPoints"+ TupleCon l b n -> printPoints l $+ case b of+ Unboxed -> "(#": replicate (n-1) "," ++ ["#)"]+ _ -> "(" : replicate (n-1) "," ++ [")"]+ Cons _ -> printString ":"+ UnboxedSingleCon l -> printPoints l ["(#","#)"]+ ExprHole l -> printStringAt (pos l) "_"++isSymbolName :: Name l -> Bool+isSymbolName (Symbol _ _) = True+isSymbolName _ = False++isSymbolQName :: QName l -> Bool+isSymbolQName (UnQual _ n) = isSymbolName n+isSymbolQName (Qual _ _ n) = isSymbolName n+isSymbolQName (Special _ Cons{}) = True+isSymbolQName (Special _ FunCon{}) = True+isSymbolQName _ = False++instance ExactP QName where+ exactP qn+ | isSymbolQName qn =+ case srcInfoPoints (ann qn) of+ [_,b,c] -> do+ printString "("+ printWhitespace (pos b)+ epQName qn+ printStringAt (pos c) ")"+ _ -> errorEP "ExactP: QName is given wrong number of srcInfoPoints"+ | otherwise = epQName qn++epQName :: QName SrcSpanInfo -> EP ()+epQName qn = case qn of+ Qual _ mn n -> exactP mn >> printString "." >> exactP n+ UnQual _ n -> exactP n+ Special _ sc -> exactP sc++epInfixQName :: QName SrcSpanInfo -> EP ()+epInfixQName qn+ | isSymbolQName qn = printWhitespace (pos (ann qn)) >> epQName qn+ | otherwise =+ case srcInfoPoints (ann qn) of+ [a,b,c] -> do+ printStringAt (pos a) "`"+ printWhitespace (pos b)+ epQName qn+ printStringAt (pos c) "`"+ _ -> errorEP "ExactP: QName (epInfixName) is given wrong number of srcInfoPoints"++instance ExactP Name where+ exactP n = case n of+ Ident _ str -> printString str+ Symbol l str ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "("+ printWhitespace (pos b)+ printString str+ printStringAt (pos c) ")"+ [] -> printString str+ _ -> errorEP "ExactP: Name is given wrong number of srcInfoPoints"++epInfixName :: Name SrcSpanInfo -> EP ()+epInfixName n+ | isSymbolName n = printWhitespace (pos (ann n)) >> exactP n+ | otherwise =+ case srcInfoPoints (ann n) of+ [a,b,c] -> do+ printStringAt (pos a) "`"+ printWhitespace (pos b)+ exactP n+ printStringAt (pos c) "`"+ _ -> errorEP "ExactP: Name (epInfixName) is given wrong number of srcInfoPoints"++instance ExactP IPName where+ exactP ipn = case ipn of+ IPDup _ str -> printString $ '?':str+ IPLin _ str -> printString $ '%':str++instance ExactP QOp where+ exactP qop = case qop of+ QVarOp _ qn -> epInfixQName qn+ QConOp _ qn -> epInfixQName qn++instance ExactP Op where+ exactP op = case op of+ VarOp _ n -> epInfixName n+ ConOp _ n -> epInfixName n++++instance ExactP CName where+ exactP cn = case cn of+ VarName _ n -> exactP n+ ConName _ n -> exactP n++instance ExactP Namespace where+ exactP ns = case ns of+ NoNamespace _ -> return ()+ TypeNamespace l -> printStringAt (pos l) "type"+ PatternNamespace l -> printStringAt (pos l) "pattern"++instance ExactP ExportSpec where+ exactP espec = case espec of+ EVar _ qn -> exactPC qn+ EAbs _ ns qn -> exactP ns >> exactPC qn+ EThingWith l wc qn cns ->+ let names = case wc of+ NoWildcard {} -> cns+ EWildcard wcl n ->+ let (before,after) = splitAt n cns+ wildcardName = VarName wcl (Ident wcl "..")+ in before ++ [wildcardName] ++ after+ k = length (srcInfoPoints l)+ in exactP qn >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) names+ EModuleContents _ mn -> printString "module" >> exactPC mn++instance ExactP ExportSpecList where+ exactP (ExportSpecList l ess) =+ let k = length (srcInfoPoints l)+ in printInterleaved (zip (srcInfoPoints l) $ "(": replicate (k-2) "," ++ [")"]) ess++instance ExactP ImportSpecList where+ exactP (ImportSpecList l hid ispecs) = do+ let pts = srcInfoPoints l+ pts1 <- if hid then do+ let (x:pts') = pts+ printStringAt (pos x) "hiding"+ return pts'+ else return pts+ let k = length pts1+ printInterleaved (zip pts1 $ "(": replicate (k-2) "," ++ [")"]) ispecs++instance ExactP ImportSpec where+ exactP ispec = case ispec of+ IVar _ qn -> exactPC qn+ IAbs _ ns n -> exactP ns >> exactPC n+ IThingAll l n -> exactP n >> printPoints l ["(","..",")"]+ IThingWith l n cns ->+ let k = length (srcInfoPoints l)+ in exactP n >> printInterleaved (zip (srcInfoPoints l) $ "(":replicate (k-2) "," ++ [")"]) cns++instance ExactP ImportDecl where+ exactP (ImportDecl l mn qf src safe mpkg mas mispecs) = do+ printString "import"+ case srcInfoPoints l of+ (_:pts) -> do+ pts1 <- if src then+ case pts of+ x:y:pts' -> do+ printStringAt (pos x) "{-# SOURCE"+ printStringAt (pos y) "#-}"+ return pts'+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ else return pts+ pts2 <- if safe then+ case pts1 of+ x:pts' -> do+ printStringAt (pos x) "safe"+ return pts'+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ else return pts1++ -- Try to determine if qualified is post-positioned only if we have enough points+ let isPostQual = (qf && not (null pts2)) && safeIsPostQualified pts2++ pts3 <- if qf && not isPostQual then+ case pts2 of+ x:pts' -> do+ printStringAt (pos x) "qualified"+ return pts'+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ else return pts2++ pts4 <- case mpkg of+ Just pkg ->+ case pts3 of+ x:pts' -> do+ printStringAt (pos x) $ show pkg+ return pts'+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ _ -> return pts3++ exactPC mn++ -- Only try post-qualified if we determined it's actually post-qualified+ pts5 <- if qf && isPostQual then+ case pts4 of+ x:pts' -> do+ printStringAt (pos x) "qualified"+ return pts'+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ else return pts4++ _ <- case mas of+ Just as ->+ case pts5 of+ x:pts' -> do+ printStringAt (pos x) "as"+ exactPC as+ return pts'+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ _ -> return pts5++ case mispecs of+ Nothing -> return ()+ Just ispecs -> exactPC ispecs+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ where safeIsPostQualified pts =+ case pts of+ (p:_) ->+ let modSpan = srcInfoSpan (ann mn)+ -- Only consider it post-qualified if we have valid spans to compare+ in ((isValidSpan modSpan && isValidSpan p) &&+ (srcSpanEnd modSpan <= srcSpanStart p))+ _ -> False+ where+ isValidSpan s =+ srcSpanStartLine s > 0 && srcSpanEndLine s > 0 &&+ srcSpanStartColumn s >= 0 && srcSpanEndColumn s >= 0++instance ExactP Module where+ exactP mdl = case mdl of+ Module l mmh oss ids decls -> do+ let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l)+ layoutList oPts oss+ maybeEP exactPC mmh+ printStreams (map (pos *** printString) $ lList pts)+ (map (pos . ann &&& exactPC) ids ++ map (pos . ann &&& exactPC) (sepFunBinds decls))+ XmlPage l _mn oss xn attrs mat es -> do+ let (oPts, pPts) = splitAt (max (length oss + 1) 2) $ srcInfoPoints l+ case pPts of+ [a,b,c,d,e] -> do+ layoutList oPts oss+ printStringAt (pos a) "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) ">"+ mapM_ exactPC es+ printStringAt (pos c) "</"+ printWhitespace (pos d)+ exactP xn+ printStringAt (pos e) ">"+ _ -> errorEP "ExactP: Module: XmlPage is given wrong number of srcInfoPoints"+ XmlHybrid l mmh oss ids decls xn attrs mat es -> do+ let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l)+ layoutList oPts oss+ maybeEP exactPC mmh+ let (dPts, pPts) = splitAt (length pts - 5) pts+ case pPts of+ [a,b,c,d,e] -> do+ printStreams (map (\(p,s) -> (pos p, printString s)) $ lList dPts)+ (map (\i -> (pos $ ann i, exactPC i)) ids ++ map (\d' -> (pos $ ann d', exactPC d')) (sepFunBinds decls))++ printStringAt (pos a) "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) ">"+ mapM_ exactPC es+ printStringAt (pos c) "</"+ printWhitespace (pos d)+ exactP xn+ printStringAt (pos e) ">"+ _ -> errorEP "ExactP: Module: XmlHybrid is given wrong number of srcInfoPoints"++instance ExactP ModuleHead where+ exactP (ModuleHead l mn mwt mess) =+ case srcInfoPoints l of+ [a,b] -> do+ printStringAt (pos a) "module"+ exactPC mn+ maybeEP exactPC mwt+ maybeEP exactPC mess+ printStringAt (pos b) "where"+ _ -> errorEP "ExactP: ModuleHead is given wrong number of srcInfoPoints"++instance ExactP ModulePragma where+ exactP op = case op of+ LanguagePragma l ns ->+ let pts = srcInfoPoints l+ k = length ns - 1 -- number of commas+ m = length pts - k - 2 -- number of virtual semis, likely 0+ in printInterleaved (zip pts ("{-# LANGUAGE":replicate k "," ++ replicate m "" ++ ["#-}"])) ns+ OptionsPragma l mt str ->+ let k = length (srcInfoPoints l)+ -- We strip out a leading space in the lexer unless the pragma+ -- starts with a newline.+ addSpace xs@('\n':_) = xs+ addSpace xs = ' ':xs+ opstr = "{-# OPTIONS" ++ case mt of { Just t -> "_" ++ show t ; _ -> "" } ++ addSpace str+ in printPoints l $ opstr : replicate (k-2) "" ++ ["#-}"]+ AnnModulePragma l ann' ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "{-# ANN"+ exactPC ann'+ printStringAt (pos b) "#-}"+ _ -> errorEP "ExactP: ModulePragma: AnnPragma is given wrong number of srcInfoPoints"++instance ExactP WarningText where+ exactP (DeprText l str) = printPoints l ["{-# DEPRECATED", str, "#-}"]+ exactP (WarnText l str) = printPoints l ["{-# WARNING", str, "#-}"]++instance ExactP Assoc where+ exactP a = case a of+ AssocNone _ -> printString "infix"+ AssocLeft _ -> printString "infixl"+ AssocRight _ -> printString "infixr"++instance ExactP DataOrNew where+ exactP (DataType _) = printString "data"+ exactP (NewType _) = printString "newtype"++instance ExactP TypeEqn where+ exactP (TypeEqn l t1 t2) =+ case srcInfoPoints l of+ [a] -> do+ exactPC t1+ printStringAt (pos a) "="+ exactPC t2+ _ -> errorEP "ExactP: TypeEqn is given wrong number of srcInfoPoints"++instance ExactP InjectivityInfo where+ exactP (InjectivityInfo l to from) =+ case srcInfoPoints l of+ a:b:_ -> do+ printStringAt (pos a) "|"+ exactPC to+ printStringAt (pos b) "->"+ mapM_ exactPC from+ _ -> errorEP "ExactP: InjectivityInfo given wrong number of srcInfoPoints"++instance ExactP ResultSig where+ exactP (KindSig l k) =+ case srcInfoPoints l of+ a:_ -> do+ printStringAt (pos a) "::"+ exactPC k+ _ -> errorEP "ExactP: ResultSig given wrong number of srcInfoPoints"+ exactP (TyVarSig l tv) =+ case srcInfoPoints l of+ a:_ -> do+ printStringAt (pos a) "="+ exactPC tv+ _ -> errorEP "ExactP: ResultSig given wrong number of srcInfoPoints"+++instance ExactP Decl where+ exactP decl = case decl of+ TypeDecl l dh t ->+ case srcInfoPoints l of+ [a,b] -> do+ printStringAt (pos a) "type"+ exactPC dh+ printStringAt (pos b) "="+ exactPC t+ _ -> errorEP "ExactP: Decl: TypeDecl is given wrong number of srcInfoPoints"+ TypeFamDecl l dh mk mi ->+ case srcInfoPoints l of+ a:b:_ -> do+ printStringAt (pos a) "type"+ printStringAt (pos b) "family"+ exactPC dh+ maybeEP exactPC mk+ maybeEP exactPC mi+ _ -> errorEP "ExactP: Decl: TypeFamDecl is given wrong number of srcInfoPoints"+ ClosedTypeFamDecl l dh mk mi eqns ->+ case srcInfoPoints l of+ a:b:c:_ -> do+ printStringAt (pos a) "type"+ printStringAt (pos b) "family"+ exactPC dh+ maybeEP exactPC mk+ maybeEP exactPC mi+ printStringAt (pos c) "where"+ mapM_ exactP eqns+ _ -> errorEP "ExactP: Decl: ClosedTypeFamDecl is given wrong number of srcInfoPoints"+ DataDecl l dn mctxt dh constrs mder -> do+ exactP dn+ maybeEP exactPC mctxt+ exactPC dh+ -- the next line works for empty data types since the srcInfoPoints will be empty then+ printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs+ mapM_ exactPC mder+ GDataDecl l dn mctxt dh mk gds mder -> do+ let pts = srcInfoPoints l+ exactP dn+ maybeEP exactPC mctxt+ exactPC dh+ pts1 <- case mk of+ Nothing -> return pts+ Just kd -> case pts of+ p:pts' -> do+ printStringAt (pos p) "::"+ exactPC kd+ return pts'+ _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints"+ case pts1 of+ x:pts' -> do+ printStringAt (pos x) "where"+ layoutList pts' gds+ mapM_ exactPC mder+ _ -> errorEP "ExactP: Decl: GDataDecl is given too few srcInfoPoints"+ DataFamDecl l mctxt dh mk -> do+ printString "data"+ maybeEP exactPC mctxt+ exactPC dh+ maybeEP (\kd -> printStringAt (pos (head (srcInfoPoints l))) "::" >> exactPC kd) mk+ TypeInsDecl l t1 t2 ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "type"+ printStringAt (pos b) "instance"+ exactPC t1+ printStringAt (pos c) "="+ exactPC t2+ _ -> errorEP "ExactP: Decl: TypeInsDecl is given wrong number of srcInfoPoints"+ DataInsDecl l dn t constrs mder ->+ case srcInfoPoints l of+ p:pts -> do+ exactP dn+ printStringAt (pos p) "instance"+ exactPC t+ printInterleaved (zip pts ("=": repeat "|")) constrs+ mapM_ exactPC mder+ _ -> errorEP "ExactP: Decl: DataInsDecl is given too few srcInfoPoints"+ GDataInsDecl l dn t mk gds mder ->+ case srcInfoPoints l of+ p:pts -> do+ exactP dn+ printStringAt (pos p) "instance"+ exactPC t+ pts1 <- case mk of+ Nothing -> return pts+ Just kd -> case pts of+ p':pts' -> do+ printStringAt (pos p') "::"+ exactPC kd+ return pts'+ _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"+ case pts1 of+ x:pts' -> do+ printStringAt (pos x) "where"+ layoutList pts' gds+ mapM_ exactPC mder+ _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"+ _ -> errorEP "ExactP: Decl: GDataInsDecl is given too few srcInfoPoints"+ ClassDecl l mctxt dh fds mcds ->+ case srcInfoPoints l of+ _:pts -> do+ printString "class"+ maybeEP exactPC mctxt+ exactPC dh+ _ <- case fds of+ [] -> return pts+ _ -> do+ let (pts1, pts2) = splitAt (length fds) pts+ printInterleaved (zip pts1 ("|":repeat ",")) fds+ return pts2+ maybeEP (\cds ->+ case pts of+ p:pts' -> do+ printStringAt (pos p) "where"+ layoutList pts' $ sepClassFunBinds cds+ _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints"+ ) mcds+ _ -> errorEP "ExactP: Decl: ClassDecl is given too few srcInfoPoints"+ InstDecl l movlp ih mids ->+ case srcInfoPoints l of+ _:pts -> do+ printString "instance"+ maybeEP exactPC movlp+ exactPC ih+ maybeEP (\ids -> do+ let (p:pts') = pts+ printStringAt (pos p) "where"+ layoutList pts' $ sepInstFunBinds ids+ ) mids+ _ -> errorEP "ExactP: Decl: InstDecl is given too few srcInfoPoints"+ DerivDecl l mds movlp ih ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "deriving"+ maybeEP exactPC mds+ printStringAt (pos b) "instance"+ maybeEP exactPC movlp+ exactPC ih+ _ -> errorEP "ExactP: Decl: DerivDecl is given wrong number of srcInfoPoints"+ InfixDecl l assoc mprec ops -> do+ let pts = srcInfoPoints l+ exactP assoc+ pts1 <- case mprec of+ Nothing -> return pts+ Just prec ->+ case pts of+ p:pts' -> do+ printStringAt (pos p) (show prec)+ return pts'+ _ -> errorEP "ExactP: Decl: InfixDecl is given too few srcInfoPoints"+ printInterleaved' (zip pts1 (repeat ",")) ops+ DefaultDecl l ts ->+ case srcInfoPoints l of+ _:pts -> do+ printString "default"+ printInterleaved (zip (init pts) ("(":repeat ",")) ts+ printStringAt (pos (last pts)) ")"+ _ -> errorEP "ExactP: Decl: DefaultDecl is given too few srcInfoPoints"+ SpliceDecl _ spl -> exactP spl+ TSpliceDecl _ spl -> exactP spl+ TypeSig l ns t -> do+ let pts = srcInfoPoints l+ printInterleaved' (zip pts (replicate (length pts - 1) "," ++ ["::"])) ns+ exactPC t+ PatSynSig l ns dh c1 _ c2 t -> do+ let (pat:pts) = srcInfoPoints l+ printStringAt (pos pat) "pattern"+ printInterleaved' (zip pts (replicate (length ns - 1) "," ++ ["::"])) ns+ case dh of+ Nothing -> return ()+ Just tvs ->+ -- (length ns - 1) commas + 1 for "::"+ case drop (length ns) pts of+ (a:b:_) -> do+ printStringAt (pos a) "forall"+ mapM_ exactPC tvs+ printStringAt (pos b) "."+ _ -> errorEP ("ExactP: Decl: PatSynSig: Forall: is given too few srcInfoPoints" ++ show pts ++ show (drop (length ns + 1) pts))+ maybeEP exactPC c1+ maybeEP exactPC c2+ exactPC t+ FunBind _ ms -> mapM_ exactPC ms+ PatBind l p rhs mbs -> do+ let pts = srcInfoPoints l+ exactP p+ exactPC rhs+ maybeEP (\bs -> printStringAt (pos (head pts)) "where" >> exactPC bs) mbs+ PatSyn l lhs rhs dir ->+ case srcInfoPoints l of+ [pat,sepPos] -> do+ let sep = case dir of+ ImplicitBidirectional -> "="+ ExplicitBidirectional _ _ -> "<-"+ Unidirectional -> "<-"+ printStringAt (pos pat) "pattern"+ exactPC lhs+ printStringAt (pos sepPos) sep+ exactPC rhs+ case dir of+ ExplicitBidirectional bl ds -> do+ case srcInfoPoints bl of+ (w:pts) -> do+ printStringAt (pos w) "where"+ layoutList pts ds+ _ -> errorEP "ExactP: Decl: PaySyn: ExplicitBidirectional is given too few srcInfoPoints"+ _ -> return ()+ _ -> errorEP "ExactP: Decl: PatSyn is given too few srcInfoPoints"+ ForImp l cc msf mstr n t ->+ case srcInfoPoints l of+ _:b:pts -> do+ printString "foreign"+ printStringAt (pos b) "import"+ exactPC cc+ maybeEP exactPC msf+ pts1 <- case mstr of+ Nothing -> return pts+ Just str -> case pts of+ x:pts' -> do+ printStringAt (pos x) (show str)+ return pts'+ _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"+ case pts1 of+ y:_ -> do+ exactPC n+ printStringAt (pos y) "::"+ exactPC t+ _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"+ _ -> errorEP "ExactP: Decl: ForImp is given too few srcInfoPoints"+ ForExp l cc mstr n t ->+ case srcInfoPoints l of+ _:b:pts -> do+ printString "foreign"+ printStringAt (pos b) "export"+ exactPC cc+ pts1 <- case mstr of+ Nothing -> return pts+ Just str -> case pts of+ x:pts' -> do+ printStringAt (pos x) (show str)+ return pts'+ _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"+ case pts1 of+ y:_ -> do+ exactPC n+ printStringAt (pos y) "::"+ exactPC t+ _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"+ _ -> errorEP "ExactP: Decl: ForExp is given too few srcInfoPoints"+ RulePragmaDecl l rs ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "{-# RULES"+ mapM_ exactPC rs+ printStringAt (pos b) "#-}"+ _ -> errorEP "ExactP: Decl: RulePragmaDecl is given too few srcInfoPoints"+ DeprPragmaDecl l nstrs ->+ case srcInfoPoints l of+ _:pts -> do+ printString "{-# DEPRECATED"+ printWarndeprs (map pos (init pts)) nstrs+ printStringAt (pos (last pts)) "#-}"+ _ -> errorEP "ExactP: Decl: DeprPragmaDecl is given too few srcInfoPoints"+ WarnPragmaDecl l nstrs ->+ case srcInfoPoints l of+ _:pts -> do+ printString "{-# WARNING"+ printWarndeprs (map pos (init pts)) nstrs+ printStringAt (pos (last pts)) "#-}"+ _ -> errorEP "ExactP: Decl: WarnPragmaDecl is given too few srcInfoPoints"+ InlineSig l inl mact qn ->+ case srcInfoPoints l of+ [_,b] -> do+ printString $ if inl then "{-# INLINE" else "{-# NOINLINE"+ maybeEP exactPC mact+ exactPC qn+ printStringAt (pos b) "#-}"+ _ -> errorEP "ExactP: Decl: InlineSig is given wrong number of srcInfoPoints"+ InlineConlikeSig l mact qn ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "{-# INLINE CONLIKE"+ maybeEP exactPC mact+ exactPC qn+ printStringAt (pos b) "#-}"+ _ -> errorEP "ExactP: Decl: InlineConlikeSig is given wrong number of srcInfoPoints"+ SpecSig l mact qn ts ->+ case srcInfoPoints l of+ _:pts -> do+ printString "{-# SPECIALISE"+ maybeEP exactPC mact+ exactPC qn+ printInterleaved (zip pts ("::" : replicate (length pts - 2) "," ++ ["#-}"])) ts+ _ -> errorEP "ExactP: Decl: SpecSig is given too few srcInfoPoints"+ SpecInlineSig l b mact qn ts ->+ case srcInfoPoints l of+ _:pts -> do+ printString $ "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE"+ maybeEP exactPC mact+ exactPC qn+ printInterleaved (zip pts ("::" : replicate (length pts - 2) "," ++ ["#-}"])) ts+ _ -> errorEP "ExactP: Decl: SpecInlineSig is given too few srcInfoPoints"+ InstSig l ih ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "{-# SPECIALISE"+ printStringAt (pos b) "instance"+ exactPC ih+ printStringAt (pos c) "#-}"+ _ -> errorEP "ExactP: Decl: InstSig is given wrong number of srcInfoPoints"+ AnnPragma l ann' ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "{-# ANN"+ exactPC ann'+ printStringAt (pos b) "#-}"+ _ -> errorEP "ExactP: Decl: AnnPragma is given wrong number of srcInfoPoints"+ MinimalPragma l b ->+ case srcInfoPoints l of+ [_,b'] -> do+ printString "{-# MINIMAL"+ maybeEP exactPC b+ printStringAt (pos b') "#-}"+ _ -> errorEP "ExactP: Decl: MinimalPragma is given wrong number of srcInfoPoints"+ RoleAnnotDecl l ty roles ->+ case srcInfoPoints l of+ (t:r:_) -> do+ printStringAt (pos t) "type"+ printStringAt (pos r) "role"+ exactPC ty+ mapM_ exactPC roles+ _ -> errorEP "ExactP: Decl: RoleAnnotDecl is given wrong number of srcInfoPoints"+ CompletePragma l cls opt_ts ->+ case srcInfoPoints l of+ (t:rs) -> do+ let (cls_s, rs') = splitAt (length cls - 1) rs+ printStringAt (pos t)"{-# COMPLETE"+ printInterleaved' (zip cls_s (repeat ",")) cls+ case (rs', opt_ts) of+ ((opt_dcolon: end:_), Just tc) -> do+ printStringAt (pos opt_dcolon) "::"+ exactPC tc+ printStringAt (pos end) "#-}"+ ([end], Nothing) -> printStringAt (pos end) "#-}"+ _ -> errorEP "ExactP: Decl: CompletePragma is given wrong number of srcInfoPoints"+ _ -> errorEP "ExactP: Decl: CompletePragma is given wrong number of srcInfoPoints"+++instance ExactP Role where+ exactP r =+ case r of+ RoleWildcard l -> printStringAt (pos l) "_"+ Representational l -> printStringAt (pos l) "representational"+ Phantom l -> printStringAt (pos l) "phantom"+ Nominal l -> printStringAt (pos l) "nominal"+++instance ExactP Annotation where+ exactP ann' = case ann' of+ Ann _ n e -> do+ exactP n+ exactPC e+ TypeAnn _ n e -> do+ printString "type"+ exactPC n+ exactPC e+ ModuleAnn _ e -> do+ printString "module"+ exactPC e++instance ExactP BooleanFormula where+ exactP b' = case b' of+ VarFormula _ n -> exactPC n+ AndFormula l bs ->+ let pts = srcInfoPoints l+ in printStreams (zip (map pos pts) (repeat $ printString ",")) (map (pos . ann &&& exactPC) bs)+ OrFormula l bs ->+ let pts = srcInfoPoints l+ in printStreams (zip (map pos pts) (repeat $ printString "|")) (map (pos . ann &&& exactPC) bs)+ ParenFormula l b ->+ case srcInfoPoints l of+ [a'',b''] -> printStringAt (pos a'') "(" >> exactPC b >> printStringAt (pos b'') ")"+ _ -> errorEP "ExactP: BooleanFormula: ParenFormula is given wrong number of srcInfoPoints"++printWarndeprs :: [Pos] -> [([Name SrcSpanInfo], String)] -> EP ()+printWarndeprs _ [] = return ()+printWarndeprs ps' ((ns',str'):nsts') = printWd ps' ns' str' nsts'+ where printWd :: [Pos] -> [Name SrcSpanInfo] -> String -> [([Name SrcSpanInfo], String)] -> EP ()+ printWd (p:ps) [] str nsts = printStringAt p (show str) >> printWarndeprs ps nsts+ printWd ps [n] str nsts = exactPC n >> printWd ps [] str nsts+ printWd (p:ps) (n:ns) str nsts = exactPC n >> printStringAt p "," >> printWd ps ns str nsts+ printWd _ _ _ _ = internalError "printWd"+++sepFunBinds :: [Decl SrcSpanInfo] -> [Decl SrcSpanInfo]+sepFunBinds [] = []+sepFunBinds (FunBind _ ms:ds) = map (\m -> FunBind (ann m) [m]) ms ++ sepFunBinds ds+sepFunBinds (d:ds) = d : sepFunBinds ds++sepClassFunBinds :: [ClassDecl SrcSpanInfo] -> [ClassDecl SrcSpanInfo]+sepClassFunBinds [] = []+sepClassFunBinds (ClsDecl _ (FunBind _ ms):ds) = map (\m -> ClsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepClassFunBinds ds+sepClassFunBinds (d:ds) = d : sepClassFunBinds ds++sepInstFunBinds :: [InstDecl SrcSpanInfo] -> [InstDecl SrcSpanInfo]+sepInstFunBinds [] = []+sepInstFunBinds (InsDecl _ (FunBind _ ms):ds) = map (\m -> InsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepInstFunBinds ds+sepInstFunBinds (d:ds) = d : sepInstFunBinds ds++instance ExactP DeclHead where+ exactP dh' = case dh' of+ DHead _ n -> exactP n+ DHInfix _ tva n -> exactP tva >> epInfixName n+ DHParen l dh ->+ case srcInfoPoints l of+ [_,b] -> printString "(" >> exactPC dh >> printStringAt (pos b) ")"+ _ -> errorEP "ExactP: DeclHead: DeclParen is given wrong number of srcInfoPoints"+ DHApp _ dh t -> exactP dh >> exactPC t++instance ExactP InstRule where+ exactP ih' = case ih' of+ IRule l mtvs mctxt qn -> do+ let pts = srcInfoPoints l+ _ <- case mtvs of+ Nothing -> return pts+ Just tvs ->+ case pts of+ [a,b] -> do+ printStringAt (pos a) "forall"+ mapM_ exactPC tvs+ printStringAt (pos b) "."+ return pts+ _ -> errorEP "ExactP: InstRule: IRule is given too few srcInfoPoints"+ maybeEP exactPC mctxt+ exactPC qn+ IParen l ih ->+ case srcInfoPoints l of+ [a,b] -> printStringAt (pos a) "(" >> exactPC ih >> printStringAt (pos b) ")"+ _ -> errorEP "ExactP: InstRule: IParen is given wrong number of srcInfoPoints"++instance ExactP InstHead where+ exactP doih' = case doih' of+ IHCon _ qn -> exactPC qn+ IHInfix _ ta qn -> exactPC ta >> epInfixQName qn+ IHParen l doih ->+ case srcInfoPoints l of+ [a,b] -> printStringAt (pos a) "(" >> exactPC doih >> printStringAt (pos b) ")"+ _ -> errorEP "ExactP: OrInstHead: IHParen is given wrong number of srcInfoPoints"+ IHApp _ doih t -> exactPC doih >> exactPC t++instance ExactP TyVarBind where+ exactP (KindedVar l n k) =+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "("+ exactPC n+ printStringAt (pos b) "::"+ exactPC k+ printStringAt (pos c) ")"+ _ -> errorEP "ExactP: TyVarBind: KindedVar is given wrong number of srcInfoPoints"+ exactP (UnkindedVar l n) =+ case srcInfoPoints l of+ [a,_,c] -> do+ printStringAt (pos a) "("+ exactPC n+ printStringAt (pos c) ")"+ [] -> exactPC n+ _ -> errorEP "ExactP: TyVarBind: UnkindedVar is given wrong number of srcInfoPoints"++instance ExactP Type where+ exactP t' = case t' of+ TyForall l mtvs mctxt t -> do+ let pts = srcInfoPoints l+ _ <- case mtvs of+ Nothing -> return pts+ Just tvs ->+ case pts of+ _:b:pts' -> do+ printString "forall"+ mapM_ exactPC tvs+ printStringAt (pos b) "."+ return pts'+ _ -> errorEP "ExactP: Type: TyForall is given too few srcInfoPoints"+ maybeEP exactPC mctxt+ exactPC t+ TyStar _ -> printString "*"+ TyFun l t1 t2 ->+ case srcInfoPoints l of+ [a] -> do+ exactP t1+ printStringAt (pos a) "->"+ exactPC t2+ _ -> errorEP "ExactP: Type: TyFun is given wrong number of srcInfoPoints"+ TyTuple l bx ts ->+ case bx of+ Boxed -> parenList (srcInfoPoints l) ts+ Unboxed -> parenHashList (srcInfoPoints l) ts+ TyUnboxedSum l es ->+ unboxedSumTypeList (srcInfoPoints l) es+ TyList l t ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "["+ exactPC t+ printStringAt (pos b) "]"+ _ -> errorEP "ExactP: Type: TyList is given wrong number of srcInfoPoints"+ TyParArray l t ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "[:"+ exactPC t+ printStringAt (pos b) ":]"+ _ -> errorEP "ExactP: Type: TyParArray is given wrong number of srcInfoPoints"+ TyApp _ t1 t2 -> exactP t1 >> exactPC t2+ TyVar _ n -> exactP n+ TyCon _ qn -> exactP qn+ TyParen l t ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "("+ exactPC t+ printStringAt (pos b) ")"+ _ -> errorEP "ExactP: Type: TyParen is given wrong number of srcInfoPoints"+ TyInfix _ t1 qn t2 -> exactP t1 >> exactP qn >> exactPC t2+ TyKind l t kd ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "("+ exactPC t+ printStringAt (pos b) "::"+ exactPC kd+ printStringAt (pos c) ")"+ _ -> errorEP "ExactP: Type: TyKind is given wrong number of srcInfoPoints"+ TyPromoted _ p -> exactPC p+ TyEquals l t0 t1 -> case srcInfoPoints l of+ a:_ -> exactPC t0 >> printStringAt (pos a) "~" >> exactPC t1+ _ -> errorEP "ExactP: Type: TyEquals is given wrong number of srcInfoPoints"++ TySplice _ sp -> exactP sp+ TyBang _ b u t -> exactPC u >> exactPC b >> exactPC t+ TyWildCard _ mn -> printString "_" >> maybeEP exactPC mn+ TyQuasiQuote _ name qt -> do+ let qtLines = lines qt+ printString $ "[" ++ name ++ "|"+ sequence_ (intersperse newLine $ map printString qtLines)+ printString "|]"++instance ExactP MaybePromotedName where+ exactP (PromotedName l qn) = case srcInfoPoints l of+ [a] -> printStringAt (pos a) "'" >> epInfixQName qn+ _ -> errorEP "ExactP: MaybePromotedName: PromotedName given wrong number of args"+ exactP (UnpromotedName _ qn) = epInfixQName qn++instance ExactP Promoted where+ exactP (PromotedInteger _ _ rw) = printString rw+ exactP (PromotedString _ _ rw) = printString ('\"':rw ++ "\"")+ exactP (PromotedCon l True qn) = case srcInfoPoints l of+ [a] -> printStringAt (pos a) "'" >> epQName qn+ _ -> errorEP "ExactP: Promoted: PromotedCon is given wrong number of srcInfoPoints"+ exactP (PromotedCon _ False qn) = epQName qn+ exactP (PromotedList l b pl) =+ let o | b = "'[" | otherwise = "["+ e = "]"+ pts = srcInfoPoints l+ in printInterleaved (zip pts (o: replicate (length pts - 2) "," ++ [e])) pl+ exactP (PromotedTuple l pl) =+ let o = "'("+ e = ")"+ pts = srcInfoPoints l+ in printInterleaved (zip pts (o: replicate (length pts - 2) "," ++ [e])) pl+ exactP (PromotedUnit l) = case srcInfoPoints l of+ [_,b] -> do+ printString "("+ printStringAt (pos b) ")"+ _ -> errorEP "ExactP: Promoted: PromotedUnit is given wrong number of srcInfoPoints"+++instance ExactP Context where+ exactP ctxt = do+ printContext ctxt+ printStringAt (pos . last . srcInfoPoints . ann $ ctxt) "=>"++printContext :: Context SrcSpanInfo -> EP ()+printContext ctxt = do+ let l = ann ctxt+ pts = init $ srcInfoPoints l+ case ctxt of+ CxSingle _ asst -> exactP asst+ CxEmpty _ ->+ case pts of+ [a,b] -> do+ printStringAt (pos a) "("+ printStringAt (pos b) ")"+ _ -> errorEP "ExactP: Context: CxEmpty is given wrong number of srcInfoPoints"+ CxTuple _ assts -> parenList pts assts+++instance ExactP Asst where+ exactP asst = case asst of+ TypeA _ t -> exactP t+ IParam l ipn t ->+ case srcInfoPoints l of+ [a] -> do+ exactP ipn+ printStringAt (pos a) "::"+ exactPC t+ _ -> errorEP "ExactP: Asst: IParam is given wrong number of srcInfoPoints"+ ParenA l asst' ->+ case take 2 $ srcInfoPoints l of+ [a,b] -> do+ printStringAt (pos a) "("+ exactPC asst'+ printStringAt (pos b) ")"+ _ -> errorEP "ExactP: Asst: ParenA is given wrong number of srcInfoPoints"++instance ExactP Deriving where+ exactP (Deriving l mds ihs) =+ case srcInfoPoints l of+ _:pts -> do+ printString "deriving"+ maybeEP exactPC mds+ case pts of+ [] -> exactPC $ head ihs+ _ -> parenList pts ihs+ _ -> errorEP "ExactP: Deriving is given too few srcInfoPoints"++instance ExactP DerivStrategy where+ exactP (DerivStock _) =+ printString "stock"+ exactP (DerivAnyclass _) =+ printString "anyclass"+ exactP (DerivNewtype _) =+ printString "newtype"+ exactP (DerivVia _ ty) = do+ printString "via"+ exactP ty++instance ExactP ClassDecl where+ exactP cdecl = case cdecl of+ ClsDecl _ d -> exactP d+ ClsDataFam l mctxt dh mk ->+ case srcInfoPoints l of+ _:pts -> do+ printString "data"+ maybeEP exactPC mctxt+ exactPC dh+ maybeEP (\kd -> printStringAt (pos (head pts)) "::" >> exactPC kd) mk+ _ -> errorEP "ExactP: ClassDecl: ClsDataFam is given too few srcInfoPoints"+ ClsTyFam l dh mk mi ->+ case srcInfoPoints l of+ _:_ -> do+ printString "type"+ exactPC dh+ maybeEP exactPC mk+ maybeEP exactPC mi+ _ -> errorEP "ExactP: ClassDecl: ClsTyFam is given too few srcInfoPoints"+ ClsTyDef l t1 ->+ case srcInfoPoints l of+ _:b:_ -> do -- 3 sourceInfoPoints implies parsed as "type instance"+ printString "type"+ printStringAt (pos b) "instance"+ exactPC t1+ _:_ -> do+ printString "type"+ exactPC t1+ _ -> errorEP "ExactP: ClassDecl: ClsTyDef is given too few srcInfoPoints"+ ClsDefSig l n t ->+ case srcInfoPoints l of+ _:b:_ -> do+ printString "default"+ exactPC n+ printStringAt (pos b) "::"+ exactPC t+ _ -> errorEP "ExactP: ClassDecl: ClsDefSig is given too few srcInfoPoints"+++instance ExactP InstDecl where+ exactP idecl = case idecl of+ InsDecl _ d -> exactP d+ InsType l t1 t2 ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "type"+ exactPC t1+ printStringAt (pos b) "="+ exactPC t2+ _ -> internalError "InstDecl -> InsType"+ InsData l dn t constrs mder -> do+ exactP dn+ exactPC t+ printInterleaved (zip (srcInfoPoints l) ("=": repeat "|")) constrs+ mapM_ exactPC mder+ InsGData l dn t mk gds mder -> do+ let pts = srcInfoPoints l+ exactP dn+ exactPC t+ pts1 <- case mk of+ Nothing -> return pts+ Just kd -> case pts of+ p:pts' -> do+ printStringAt (pos p) "::"+ exactPC kd+ return pts'+ _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints"+ case pts1 of+ x:_ -> do+ printStringAt (pos x) "where"+ mapM_ exactPC gds+ mapM_ exactPC mder+ _ -> errorEP "ExactP: InstDecl: InsGData is given too few srcInfoPoints"+-- InsInline l inl mact qn -> do+-- case srcInfoPoints l of+-- [a,b] -> do+-- printString $ if inl then "{-# INLINE" else "{-# NOINLINE"+-- maybeEP exactPC mact+-- exactPC qn+-- printStringAt (pos b) "#-}"+-- _ -> errorEP "ExactP: InstDecl: InsInline is given wrong number of srcInfoPoints"++instance ExactP FunDep where+ exactP (FunDep l nxs nys) =+ case srcInfoPoints l of+ [a] -> do+ mapM_ exactPC nxs+ printStringAt (pos a) "->"+ mapM_ exactPC nys+ _ -> errorEP "ExactP: FunDep is given wrong number of srcInfoPoints"++instance ExactP QualConDecl where+ exactP (QualConDecl l mtvs mctxt cd) = do+ let pts = srcInfoPoints l+ _ <- case mtvs of+ Nothing -> return pts+ Just tvs ->+ case pts of+ _:b:pts' -> do+ printString "forall"+ mapM_ exactPC tvs+ printStringAt (pos b) "."+ return pts'+ _ -> errorEP "ExactP: QualConDecl is given wrong number of srcInfoPoints"+ maybeEP exactPC mctxt+ exactPC cd++instance ExactP ConDecl where+ exactP cd = case cd of+ ConDecl _ n bts -> exactP n >> mapM_ exactPC bts+ InfixConDecl _ bta n btb -> exactP bta >> epInfixName n >> exactP btb+ RecDecl l n fds -> exactP n >> curlyList (srcInfoPoints l) fds++instance ExactP GadtDecl where+ exactP (GadtDecl l n _mtvs mctxt ns' t) =+ case ns' of+ Nothing ->+ case srcInfoPoints l of+ [a] -> do+ exactP n+ printStringAt (pos a) "::"+ exactPC t+ _ -> errorEP "ExactP: GadtDecl is given wrong number of srcInfoPoints"+ Just ts ->+ case srcInfoPoints l of+ (a:b:c:d:rest) -> do+ exactPC n+ printStringAt (pos a) "::"+ maybeEP exactPC mctxt+ printStringAt (pos b) "{"+ printInterleaved' (zip rest (repeat ",")) ts+ printStringAt (pos c) "}"+ printStringAt (pos d) "->"+ exactPC t+ _ -> errorEP "ExactP: GadtDecl is given wrong number of srcInfoPoints"++instance ExactP BangType where+ exactP bt = case bt of+ BangedTy l -> printStringAt (pos l) "!"+ LazyTy l -> printStringAt (pos l) "~"+ _ -> return ()++instance ExactP Unpackedness where+ exactP bt = case bt of+ Unpack l ->+ case srcInfoPoints l of+ [a,b] -> do+ printStringAt (pos a) "{-# UNPACK"+ printStringAt (pos b) "#-}"+ _ -> errorEP "ExactP: Unpackedness: Unpack is given wrong number of srcInfoPoints"+ NoUnpack l ->+ case srcInfoPoints l of+ [a,b] -> do+ printStringAt (pos a) "{-# NOUNPACK"+ printStringAt (pos b) "#-}"+ _ -> errorEP "ExactP: Unpackedness: NoUnpack is given wrong number of srcInfoPoints"+ NoUnpackPragma {} -> return ()++instance ExactP Splice where+ exactP (IdSplice _ str) = printString $ '$':str+ exactP (TIdSplice _ str) = printString $ "$$" ++ str+ exactP (ParenSplice l e) = printParen "ParenSplice" "$(" l e+ exactP (TParenSplice l e) = printParen "TParenSplice" "$$(" l e++printParen :: ExactP ast => String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()+printParen con paren l e =+ case srcInfoPoints l of+ [_,b] -> do+ printString paren+ exactPC e+ printStringAt (pos b) ")"+ _ -> errorEP $ "ExactP: Splice: " ++ con ++ " is given wrong number of srcInfoPoints"++instance ExactP Exp where+ exactP exp = case exp of+ Var _ qn -> exactP qn+ OverloadedLabel _ qn -> printString ('#':qn)+ IPVar _ ipn -> exactP ipn+ Con _ qn -> exactP qn+ Lit _ lit -> exactP lit+ InfixApp _ e1 op e2 -> exactP e1 >> exactPC op >> exactPC e2+ App _ e1 e2 -> exactP e1 >> exactPC e2+ NegApp _ e -> printString "-" >> exactPC e+ Lambda l ps e ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "\\"+ mapM_ exactPC ps+ printStringAt (pos b) "->"+ exactPC e+ _ -> errorEP "ExactP: Exp: Lambda is given wrong number of srcInfoPoints"+ Let l bs e ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "let"+ exactPC bs+ printStringAt (pos b) "in"+ exactPC e+ _ -> errorEP "ExactP: Exp: Let is given wrong number of srcInfoPoints"+ If l ec et ee -> -- traceShow (srcInfoPoints l) $ do+ -- First we need to sort out if there are any optional+ -- semicolons hiding among the srcInfoPoints.+ case srcInfoPoints l of+ (_:b:c:rest) -> do+ let (mpSemi1,pThen,rest2) =+ if snd (spanSize b) == 4 -- this is "then", not a semi+ then (Nothing, b, c:rest)+ else (Just b, c, rest)+ case rest2 of+ (c':rest3) -> do+ let (mpSemi2,rest4) = if snd (spanSize c') == 4 -- this is "else", not a semi+ then (Nothing, rest2)+ else (Just c', rest3)+ case rest4 of+ [pElse] -> do+ -- real work starts here:+ printString "if"+ exactPC ec+ maybeEP printSemi mpSemi1+ printStringAt (pos pThen) "then"+ exactPC et+ maybeEP printSemi mpSemi2+ printStringAt (pos pElse) "else"+ exactPC ee+ [] -> errorEP "ExactP: Exp: If is given too few srcInfoPoints"+ _ -> errorEP "ExactP: Exp: If is given too many srcInfoPoints"+ _ -> errorEP "ExactP: Exp: If is given too few srcInfoPoints"++ _ -> errorEP "ExactP: Exp: If is given too few srcInfoPoints"+ MultiIf l alts ->+ case srcInfoPoints l of+ _:pts -> do+ printString "if"+ layoutList pts (map GuardedAlt alts)+ _ -> internalError "Exp -> MultiIf"+ Case l e alts ->+ case srcInfoPoints l of+ _:b:pts -> do+ printString "case"+ exactPC e+ printStringAt (pos b) "of"+ layoutList pts alts+ _ -> errorEP "ExactP: Exp: Case is given too few srcInfoPoints"+ Do l stmts ->+ case srcInfoPoints l of+ _:pts -> do+ printString "do"+ layoutList pts stmts+ _ -> errorEP "ExactP: Exp: Do is given too few srcInfoPoints"+ MDo l stmts ->+ case srcInfoPoints l of+ _:pts -> do+ printString "mdo"+ layoutList pts stmts+ _ -> errorEP "ExactP: Exp: Mdo is given wrong number of srcInfoPoints"+ Tuple l bx es ->+ case bx of+ Boxed -> parenList (srcInfoPoints l) es+ Unboxed -> parenHashList (srcInfoPoints l) es+ UnboxedSum l b a es -> do+ unboxedSumEP l b a es+ TupleSection l bx mexps -> do+ let pts = srcInfoPoints l+ (o, e) = case bx of Boxed -> ("(", ")"); Unboxed -> ("(#", "#)")+ printSeq $ interleave (zip (map pos $ init pts) (map printString (o: repeat ",")) ++ [(pos $ last pts, printString e)])+ (map (maybe (0,0) (pos . ann) &&& maybeEP exactPC) mexps)+ List l es -> squareList (srcInfoPoints l) es+ ParArray l es -> squareColonList (srcInfoPoints l) es+ Paren l p -> parenList (srcInfoPoints l) [p]+ LeftSection l e qop ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "("+ exactPC e+ exactPC qop+ printStringAt (pos b) ")"+ _ -> errorEP "ExactP: Exp: LeftSection is given wrong number of srcInfoPoints"+ RightSection l qop e ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "("+ exactPC qop+ exactPC e+ printStringAt (pos b) ")"+ _ -> errorEP "ExactP: Exp: RightSection is given wrong number of srcInfoPoints"+ RecConstr l qn fups -> do+ let pts = srcInfoPoints l+ exactP qn+ curlyList pts fups+ RecUpdate l e fups -> do+ let pts = srcInfoPoints l+ exactP e+ curlyList pts fups+ EnumFrom l e ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "["+ exactPC e+ printStringAt (pos b) ".."+ printStringAt (pos c) "]"+ _ -> errorEP "ExactP: Exp: EnumFrom is given wrong number of srcInfoPoints"+ EnumFromTo l e1 e2 ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "["+ exactPC e1+ printStringAt (pos b) ".."+ exactPC e2+ printStringAt (pos c) "]"+ _ -> errorEP "ExactP: Exp: EnumFromTo is given wrong number of srcInfoPoints"+ EnumFromThen l e1 e2 ->+ case srcInfoPoints l of+ [_,b,c,d] -> do+ printString "["+ exactPC e1+ printStringAt (pos b) ","+ exactPC e2+ printStringAt (pos c) ".."+ printStringAt (pos d) "]"+ _ -> errorEP "ExactP: Exp: EnumFromThen is given wrong number of srcInfoPoints"+ EnumFromThenTo l e1 e2 e3 ->+ case srcInfoPoints l of+ [_,b,c,d] -> do+ printString "["+ exactPC e1+ printStringAt (pos b) ","+ exactPC e2+ printStringAt (pos c) ".."+ exactPC e3+ printStringAt (pos d) "]"+ _ -> errorEP "ExactP: Exp: EnumFromToThen is given wrong number of srcInfoPoints"+ ParArrayFromTo l e1 e2 ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "[:"+ exactPC e1+ printStringAt (pos b) ".."+ exactPC e2+ printStringAt (pos c) ":]"+ _ -> errorEP "ExactP: Exp: ParArrayFromTo is given wrong number of srcInfoPoints"+ ParArrayFromThenTo l e1 e2 e3 ->+ case srcInfoPoints l of+ [_,b,c,d] -> do+ printString "[:"+ exactPC e1+ printStringAt (pos b) ","+ exactPC e2+ printStringAt (pos c) ".."+ exactPC e3+ printStringAt (pos d) ":]"+ _ -> errorEP "ExactP: Exp: ParArrayFromToThen is given wrong number of srcInfoPoints"+ ListComp l e qss ->+ case srcInfoPoints l of+ _:pts -> do+ printString "["+ exactPC e+ bracketList ("|",",","]") pts qss+ _ -> errorEP "ExactP: Exp: ListComp is given too few srcInfoPoints"+ ParComp l e qsss ->+ case srcInfoPoints l of+ _:pts -> do+ let (strs, qss) = unzip $ pairUp qsss+ printString "["+ exactPC e+ printInterleaved (zip pts (strs ++ ["]"])) qss+ _ -> errorEP "ExactP: Exp: ParComp is given wrong number of srcInfoPoints"+ where pairUp [] = []+ pairUp ((a:as):xs) = ("|", a) : zip (repeat ",") as ++ pairUp xs+ pairUp _ = internalError "Exp -> ParComp -> pairUp"+ ParArrayComp l e qsss ->+ case srcInfoPoints l of+ _:pts -> do+ let (strs, qss) = unzip $ pairUp qsss+ printString "[:"+ exactPC e+ printInterleaved (zip pts (strs ++ [":]"])) qss+ _ -> errorEP "ExactP: Exp: ParArrayComp is given wrong number of srcInfoPoints"+ where pairUp [] = []+ pairUp ((a:as):xs) = ("|", a) : zip (repeat "|") as ++ pairUp xs+ pairUp _ = internalError "Exp -> ParArrayComp -> pairUp"++ ExpTypeSig l e t ->+ case srcInfoPoints l of+ [a] -> do+ exactP e+ printStringAt (pos a) "::"+ exactPC t+ _ -> errorEP "ExactP: Exp: ExpTypeSig is given wrong number of srcInfoPoints"+ VarQuote _ qn -> do+ printString "'"+ exactPC qn+ TypQuote _ qn -> do+ printString "''"+ exactPC qn+ BracketExp _ br -> exactP br+ SpliceExp _ sp -> exactP sp+ QuasiQuote _ name qt -> do+ let qtLines = lines qt+ printString $ "[" ++ name ++ "|"+ sequence_ (intersperse newLine $ map printString qtLines)+ printString "|]"+ XTag l xn attrs mat es ->+ case srcInfoPoints l of+ [_,b,c,d,e] -> do+ printString "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) ">"+ mapM_ exactPC es+ printStringAt (pos c) "</"+ printWhitespace (pos d)+ exactP xn+ printStringAt (pos e) ">"+ -- TODO: Fugly hack/duplication, should be refactored+ -- For the case when there's an optional semicolon+ [_,b,semi,c,d,e] -> do+ printString "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) ">"+ mapM_ exactPC es+ printSemi semi+ printStringAt (pos c) "</"+ printWhitespace (pos d)+ exactP xn+ printStringAt (pos e) ">"+ _ -> errorEP "ExactP: Exp: XTag is given wrong number of srcInfoPoints"+ XETag l xn attrs mat ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) "/>"+ _ -> errorEP "ExactP: Exp: XETag is given wrong number of srcInfoPoints"+ XPcdata _ str -> do+ let strLines = lines str+ sequence_ (intersperse newLine $ map printString strLines)+ XExpTag l e ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "<%"+ exactPC e+ printStringAt (pos b) "%>"+ _ -> errorEP "ExactP: Exp: XExpTag is given wrong number of srcInfoPoints"+ XChildTag l es ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "<%>"+ mapM_ exactPC es+ printStringAt (pos b) "</"+ printStringAt (pos c) "%>"+ -- Ugly duplication for when there's an optional semi+ [_,semi,b,c] -> do+ printString "<%>"+ mapM_ exactPC es+ printSemi semi+ printStringAt (pos b) "</"+ printStringAt (pos c) "%>"+ _ -> errorEP "ExactP: Exp: XChildTag is given wrong number of srcInfoPoints"+ CorePragma l str e ->+ case srcInfoPoints l of+ [_,b] -> do+ printString $ "{-# CORE " ++ show str+ printStringAt (pos b) "#-}"+ exactPC e+ _ -> errorEP "ExactP: Exp: CorePragma is given wrong number of srcInfoPoints"+ SCCPragma l str e ->+ case srcInfoPoints l of+ [_,b] -> do+ printString $ "{-# SCC " ++ show str+ printStringAt (pos b) "#-}"+ exactPC e+ _ -> errorEP "ExactP: Exp: SCCPragma is given wrong number of srcInfoPoints"+ GenPragma l str (i1,i2) (i3,i4) e -> do+ printStrs $ zip (srcInfoPoints l) ["{-# GENERATED", show str, show i1, ":", show i2, "-", show i3, ":", show i4, "#-}"]+ exactPC e+ Proc l p e ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "proc"+ exactPC p+ printStringAt (pos b) "->"+ exactPC e+ _ -> errorEP "ExactP: Exp: Proc is given wrong number of srcInfoPoints"+ LeftArrApp l e1 e2 ->+ case srcInfoPoints l of+ [a] -> do+ exactP e1+ printStringAt (pos a) "-<"+ exactPC e2+ _ -> errorEP "ExactP: Exp: LeftArrApp is given wrong number of srcInfoPoints"+ RightArrApp l e1 e2 ->+ case srcInfoPoints l of+ [a] -> do+ exactP e1+ printStringAt (pos a) ">-"+ exactPC e2+ _ -> errorEP "ExactP: Exp: RightArrApp is given wrong number of srcInfoPoints"+ LeftArrHighApp l e1 e2 ->+ case srcInfoPoints l of+ [a] -> do+ exactP e1+ printStringAt (pos a) "-<<"+ exactPC e2+ _ -> errorEP "ExactP: Exp: LeftArrHighApp is given wrong number of srcInfoPoints"+ RightArrHighApp l e1 e2 ->+ case srcInfoPoints l of+ [a] -> do+ exactP e1+ printStringAt (pos a) ">>-"+ exactPC e2+ _ -> errorEP "ExactP: Exp: RightArrHighApp is given wrong number of srcInfoPoints"++ ArrOp l e -> case srcInfoPoints l of+ [a, b] -> do+ printStringAt (pos a) "(|"+ exactPC e+ printStringAt (pos b) "|)"+ _ -> errorEP "ExactP: Exp: ArrOp is given wrong number of srcInfoPoints"++ LCase l alts ->+ case srcInfoPoints l of+ _:b:pts -> do+ printString "\\"+ printStringAt (pos b) "case"+ layoutList pts alts+ _ -> errorEP "ExactP: Exp: LCase is given wrong number of srcInfoPoints"+ TypeApp _ ty -> printString "@" >> exactP ty++unboxedSumEP :: ExactP e => SrcSpanInfo -> Int -> Int -> e SrcSpanInfo -> EP ()+unboxedSumEP l b _a es = do+ let (opt:pts) = srcInfoPoints l+ (o, e) = ("(#", "#)")+ bars = zip (map pos (init pts)) (map printString (repeat "|"))+ open = (pos opt, printString o)+ close = (pos (last pts), printString e)+ fs = take b bars+ as = drop b bars+ printSeq $ open : fs ++ [((0, 0), exactPC es)] ++ as ++ [close]++instance ExactP FieldUpdate where+ exactP fup = case fup of+ FieldUpdate l qn e ->+ case srcInfoPoints l of+ [a] -> do+ exactP qn+ printStringAt (pos a) "="+ exactPC e+ _ -> errorEP "ExactP: FieldUpdate is given wrong number of srcInfoPoints"+ FieldPun _ n -> exactP n+ FieldWildcard _ -> printString ".."++instance ExactP Stmt where+ exactP stmt = case stmt of+ Generator l p e ->+ case srcInfoPoints l of+ [a] -> do+ exactP p+ printStringAt (pos a) "<-"+ exactPC e+ _ -> errorEP "ExactP: Stmt: Generator is given wrong number of srcInfoPoints"+ Qualifier _ e -> exactP e+ LetStmt _ bds -> do+ printString "let"+ exactPC bds+ RecStmt l ss ->+ case srcInfoPoints l of+ _:pts -> do+ printString "rec"+ layoutList pts ss+ _ -> errorEP "ExactP: Stmt: RecStmt is given too few srcInfoPoints"++instance ExactP QualStmt where+ exactP qstmt = case qstmt of+ QualStmt _ stmt -> exactP stmt+ ThenTrans _ e -> printString "then" >> exactPC e+ ThenBy l e1 e2 ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "then"+ exactPC e1+ printStringAt (pos b) "by"+ exactPC e2+ _ -> errorEP "ExactP: QualStmt: ThenBy is given wrong number of srcInfoPoints"+ GroupBy l e -> do+ printStrs $ zip (srcInfoPoints l) ["then","group","by"]+ exactPC e+ GroupUsing l e -> do+ printStrs $ zip (srcInfoPoints l) ["then","group","using"]+ exactPC e+ GroupByUsing l e1 e2 -> do+ let pts = srcInfoPoints l+ printStrs $ zip (init pts) ["then","group","by"]+ exactPC e1+ printStringAt (pos (last pts)) "using"+ exactPC e2++instance ExactP Bracket where+ exactP br = case br of+ ExpBracket l e -> printBracket "ExpBracket" "[|" "|]" l e+ TExpBracket l e -> printBracket "TExpBracket" "[||" "||]" l e+ PatBracket l p -> printBracket "PatBracket" "[p|" "|]" l p+ TypeBracket l t -> printBracket "TypeBracket" "[t|" "|]" l t+ DeclBracket l ds ->+ case srcInfoPoints l of+ pts@(_:_) -> do+ printString "[d|"+ layoutList (init pts) (sepFunBinds ds)+ printStringAt (pos (last pts)) "|]"+ _ -> errorEP "ExactP: Bracket: DeclBracket is given too few srcInfoPoints"++printBracket :: ExactP ast => String -> String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()+printBracket con oBracket cBracket l c =+ case srcInfoPoints l of+ [_,b] -> do+ printString oBracket+ exactPC c+ printStringAt (pos b) cBracket+ _ -> errorEP $ "ExactP: Bracket: " ++ con ++ " is given wrong number of srcInfoPoints"++instance ExactP XAttr where+ exactP (XAttr l xn e) =+ case srcInfoPoints l of+ [a] -> do+ exactP xn+ printStringAt (pos a) "="+ exactPC e+ _ -> errorEP "ExactP: XAttr is given wrong number of srcInfoPoints"++instance ExactP Alt where+ exactP (Alt l p galts mbs) = do+ exactP p+ exactPC (GuardedAlts galts)+ maybeEP (\bs -> printStringAt (pos (head (srcInfoPoints l))) "where" >> exactPC bs) mbs++instance ExactP Match where+ exactP (Match l n ps rhs mbinds) = do+ let pts = srcInfoPoints l+ len = length pts+ pars = len `div` 2+ (oPars,cParsWh) = splitAt pars pts+ (cPars,_) = splitAt pars cParsWh -- _§ is either singleton or empty+ printStrs (zip oPars (repeat "("))+ exactPC n+ printStreams (zip (map pos cPars) (repeat $ printString ")")) (map (pos . ann &&& exactPC) ps)+ exactPC rhs+ maybeEP (\bds -> printStringAt (pos (head pts)) "where" >> exactPC bds) mbinds+ exactP (InfixMatch l a n bs rhs mbinds) = do+ let pts = srcInfoPoints l+ len = length pts+ pars = len `div` 2+ (oPars,cParsWh) = splitAt pars pts+ (cPars,whPt) = splitAt pars cParsWh -- whPt is either singleton or empty+ printStrs (zip oPars (repeat "("))+ exactPC a+ epInfixName n+ printInterleaved' (zip cPars (repeat ")")) bs+ exactPC rhs+ maybeEP (\bds -> printStringAt (pos (head whPt)) "where" >> exactPC bds) mbinds++instance ExactP Rhs where+ exactP (UnGuardedRhs _ e) = printString "=" >> exactPC e+ exactP (GuardedRhss _ grhss) = mapM_ exactPC grhss++instance ExactP GuardedRhs where+ exactP (GuardedRhs l ss e) =+ case srcInfoPoints l of+ _:pts -> do+ printString "|"+ printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "=")]) ss+ exactPC e+ _ -> errorEP "ExactP: GuardedRhs is given wrong number of srcInfoPoints"++newtype GuardedAlts l = GuardedAlts (Rhs l)+ deriving (Functor, Show)+instance Annotated GuardedAlts where+ amap f (GuardedAlts v) = GuardedAlts (amap f v)+ ann (GuardedAlts v) = ann v++newtype GuardedAlt l = GuardedAlt (GuardedRhs l)+ deriving (Functor, Show)+instance Annotated GuardedAlt where+ amap f (GuardedAlt v) = GuardedAlt (amap f v)+ ann (GuardedAlt v) = ann v++instance ExactP GuardedAlts where+ exactP (GuardedAlts (UnGuardedRhs _ e)) = printString "->" >> exactPC e+ exactP (GuardedAlts (GuardedRhss _ grhss)) = mapM_ (exactPC . GuardedAlt) grhss++instance ExactP GuardedAlt where+ exactP (GuardedAlt (GuardedRhs l ss e)) =+ case srcInfoPoints l of+ _:pts -> do+ printString "|"+ printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "->")]) ss+ exactPC e+ _ -> errorEP "ExactP: GuardedAlt is given wrong number of srcInfoPoints"++instance ExactP Pat where+ exactP pat = case pat of+ PVar l n -> exactPC (fmap (const l) n)+ PLit _ sg lit -> exactPC sg >> exactPC lit+ PNPlusK l n k ->+ case srcInfoPoints l of+ [a,b] -> do+ exactP n+ printStringAt (pos a) "+"+ printStringAt (pos b) (show k)+ _ -> errorEP "ExactP: Pat: PNPlusK is given wrong number of srcInfoPoints"+ PInfixApp _ pa qn pb -> exactP pa >> epInfixQName qn >> exactPC pb+ PApp _ qn ps -> exactP qn >> mapM_ exactPC ps+ PTuple l bx ps ->+ case bx of+ Boxed -> parenList (srcInfoPoints l) ps+ Unboxed -> parenHashList (srcInfoPoints l) ps+ PUnboxedSum l before after e ->+ unboxedSumEP l before after e+ PList l ps -> squareList (srcInfoPoints l) ps+ PParen l p -> parenList (srcInfoPoints l) [p]+ PRec l qn pfs -> exactP qn >> curlyList (srcInfoPoints l) pfs+ PAsPat l n p ->+ case srcInfoPoints l of+ [a] -> do+ exactP n+ printStringAt (pos a) "@"+ exactPC p+ _ -> errorEP "ExactP: Pat: PAsPat is given wrong number of srcInfoPoints"+ PWildCard _ -> printString "_"+ PIrrPat _ p -> printString "~" >> exactPC p+ PatTypeSig l p t ->+ case srcInfoPoints l of+ [a] -> do+ exactP p+ printStringAt (pos a) "::"+ exactPC t+ _ -> errorEP "ExactP: Pat: PatTypeSig is given wrong number of srcInfoPoints"+ PViewPat l e p ->+ case srcInfoPoints l of+ [a] -> do+ exactP e+ printStringAt (pos a) "->"+ exactPC p+ _ -> errorEP "ExactP: Pat: PViewPat is given wrong number of srcInfoPoints"+ PRPat l rps -> squareList (srcInfoPoints l) rps+ PXTag l xn attrs mat ps ->+ case srcInfoPoints l of+ [_,b,c,d,e] -> do+ printString "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) ">"+ mapM_ exactPC ps+ printStringAt (pos c) "</"+ printWhitespace (pos d)+ exactP xn+ printStringAt (pos e) ">"+ -- Optional semi+ [_,b,semi,c,d,e] -> do+ printString "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) ">"+ mapM_ exactPC ps+ printSemi semi+ printStringAt (pos c) "</"+ printWhitespace (pos d)+ exactP xn+ printStringAt (pos e) ">"+ _ -> errorEP "ExactP: Pat: PXTag is given wrong number of srcInfoPoints"+ PXETag l xn attrs mat ->+ case srcInfoPoints l of+ [_,b] -> do+ printString "<"+ exactPC xn+ mapM_ exactPC attrs+ maybeEP exactPC mat+ printStringAt (pos b) "/>"+ _ -> errorEP "ExactP: Pat: PXETag is given wrong number of srcInfoPoints"+ PXPcdata _ str -> printString str+ PXPatTag l p ->+ case srcInfoPoints l of+ [_,_] -> do+ printString "<%"+ exactPC p+ printString "%>"+ _ -> errorEP "ExactP: Pat: PXPatTag is given wrong number of srcInfoPoints"+ PXRPats l rps -> bracketList ("<[",",","]>") (srcInfoPoints l) rps+ PSplice _ sp -> exactP sp+ PQuasiQuote _ name qt -> printString $ "[$" ++ name ++ "|" ++ qt ++ "]"+ PBangPat _ p -> printString "!" >> exactPC p++instance ExactP PatField where+ exactP pf = case pf of+ PFieldPat l qn p ->+ case srcInfoPoints l of+ [a] -> do+ exactP qn+ printStringAt (pos a) "="+ exactPC p+ _ -> errorEP "ExactP: PatField: PFieldPat is given wrong number of srcInfoPoints"+ PFieldPun _ n -> exactP n+ PFieldWildcard _ -> printString ".."++instance ExactP RPat where+ exactP rpat = case rpat of+ RPOp _ rp op -> exactP rp >> exactPC op+ RPEither l r1 r2 ->+ case srcInfoPoints l of+ [a] -> do+ exactP r1+ printStringAt (pos a) "|"+ exactPC r2+ _ -> errorEP "ExactP: RPat: RPEither is given wrong number of srcInfoPoints"+ RPSeq l rps -> bracketList ("(|",",","|)") (srcInfoPoints l) rps+ RPGuard l p stmts ->+ case srcInfoPoints l of+ _:pts -> do+ printString "(|"+ exactPC p+ bracketList ("|",",","|)") pts stmts+ _ -> errorEP "ExactP: RPat: RPGuard is given wrong number of srcInfoPoints"+ RPCAs l n rp ->+ case srcInfoPoints l of+ [a] -> do+ exactP n+ printStringAt (pos a) "@:"+ exactPC rp+ _ -> errorEP "ExactP: RPat: RPCAs is given wrong number of srcInfoPoints"+ RPAs l n rp ->+ case srcInfoPoints l of+ [a] -> do+ exactP n+ printStringAt (pos a) "@"+ exactPC rp+ _ -> errorEP "ExactP: RPat: RPAs is given wrong number of srcInfoPoints"+ RPParen l rp -> parenList (srcInfoPoints l) [rp]+ RPPat _ p -> exactP p++instance ExactP RPatOp where+ exactP rop = printString $ case rop of+ RPStar _ -> "*"+ RPStarG _ -> "*!"+ RPPlus _ -> "+"+ RPPlusG _ -> "+!"+ RPOpt _ -> "?"+ RPOptG _ -> "?!"++instance ExactP PXAttr where+ exactP (PXAttr l xn p) =+ case srcInfoPoints l of+ [a] -> do+ exactP xn+ printStringAt (pos a) "="+ exactPC p+ _ -> errorEP "ExactP: PXAttr is given wrong number of srcInfoPoints"++instance ExactP XName where+ exactP xn = case xn of+ XName _ name -> printString name+ XDomName l dom name ->+ case srcInfoPoints l of+ [_,b,c] -> do+ printString dom+ printStringAt (pos b) ":"+ printStringAt (pos c) name+ _ -> errorEP "ExactP: XName: XDomName is given wrong number of srcInfoPoints"++instance ExactP Binds where+ exactP (BDecls l ds) = layoutList (srcInfoPoints l) (sepFunBinds ds)+ exactP (IPBinds l ips) = layoutList (srcInfoPoints l) ips++instance ExactP CallConv where+ exactP (StdCall _) = printString "stdcall"+ exactP (CCall _) = printString "ccall"+ exactP (CPlusPlus _) = printString "cplusplus"+ exactP (DotNet _) = printString "dotnet"+ exactP (Jvm _) = printString "jvm"+ exactP (Js _) = printString "js"+ exactP (JavaScript _) = printString "javascript"+ exactP (CApi _) = printString "capi"++instance ExactP Safety where+ exactP (PlayRisky _) = printString "unsafe"+ exactP (PlaySafe _ b) = printString $ if b then "threadsafe" else "safe"+ exactP (PlayInterruptible _) = printString "interruptible"++instance ExactP Rule where+ exactP (Rule l str mact mrvs e1 e2) =+ case srcInfoPoints l of+ _:pts -> do+ printString (show str)+ maybeEP exactP mact+ pts1 <- case mrvs of+ Nothing -> return pts+ Just rvs ->+ case pts of+ a':b:pts' -> do+ printStringAt (pos a') "forall"+ mapM_ exactPC rvs+ printStringAt (pos b) "."+ return pts'+ _ -> errorEP "ExactP: Rule is given too few srcInfoPoints"+ case pts1 of+ [x] -> do+ exactPC e1+ printStringAt (pos x) "="+ exactPC e2+ _ -> errorEP "ExactP: Rule is given wrong number of srcInfoPoints"+ _ -> errorEP "ExactP: Rule is given too few srcInfoPoints"++instance ExactP RuleVar where+ exactP (TypedRuleVar l n t) =+ case srcInfoPoints l of+ [_,b,c] -> do+ printString "("+ exactPC n+ printStringAt (pos b) "::"+ exactPC t+ printStringAt (pos c) ")"+ _ -> errorEP "ExactP: RuleVar: TypedRuleVar is given wrong number of srcInfoPoints"+ exactP (RuleVar _ n) = exactP n++instance ExactP Overlap where+ exactP (NoOverlap _) =+ printString "{-# NO_OVERLAP #-}"+ exactP (Overlap _) =+ printString "{-# OVERLAP #-}"+ exactP (Overlaps _) =+ printString "{-# OVERLAPS #-}"+ exactP (Overlapping _) =+ printString "{-# OVERLAPPING #-}"+ exactP (Overlappable _) =+ printString "{-# OVERLAPPABLE #-}"+ exactP (Incoherent _) =+ printString "{-# INCOHERENT #-}"++instance ExactP Activation where+ exactP (ActiveFrom l i) =+ printPoints l ["[", show i, "]"]+ exactP (ActiveUntil l i) =+ printPoints l ["[", "~", show i, "]"]++instance ExactP FieldDecl where+ exactP (FieldDecl l ns bt) = do+ let pts = srcInfoPoints l+ printInterleaved' (zip (init pts) (repeat ",") ++ [(last pts, "::")]) ns+ exactPC bt++instance ExactP IPBind where+ exactP (IPBind l ipn e) =+ case srcInfoPoints l of+ [a] -> do+ exactP ipn+ printStringAt (pos a) "="+ exactPC e+ _ -> errorEP "ExactP: IPBind is given wrong number of srcInfoPoints"++-- Hopefully, this will never fire.+-- If it does, hopefully by that time https://github.com/sol/rewrite-with-location+-- will be implemented.+-- If not, then removing all calls to internalError should give a better+-- idea where the error comes from.+-- So far, it's necessary to eliminate non-exhaustive patterns warnings.+-- We don't want to turn them off, as we want unhandled AST nodes to be+-- reported.+internalError :: String -> a+internalError loc' = error $ unlines+ [ "haskell-src-exts: ExactPrint: internal error (non-exhaustive pattern)"+ , "Location: " ++ loc'+ , "This is either caused by supplying incorrect location information or by"+ , "a bug in haskell-src-exts. If this happens on an unmodified AST obtained"+ , "by the haskell-src-exts Parser it is a bug, please it report it at"+ , "https://github.com/haskell-suite/haskell-src-exts"]
src/Language/Haskell/Exts/ExtScheme.hs view
@@ -1,37 +1,39 @@-{-# OPTIONS_HADDOCK hide #-} ------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.ExtScheme --- Copyright : (c) Niklas Broberg 2009 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- Internal scheme for handling extensions in a --- convenient fashion. --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.ExtScheme where - -import Language.Haskell.Exts.Extension - -data ExtScheme = Any [Extension] | All [Extension] - deriving (Eq,Show) - -type MExtScheme = Maybe ExtScheme - -class Enabled a where - isEnabled :: a -> [Extension] -> Bool - -instance Enabled Extension where - isEnabled = elem - -instance Enabled ExtScheme where - isEnabled (Any exts) enabled = any (`elem` enabled) exts - isEnabled (All exts) enabled = all (`elem` enabled) exts - -instance Enabled a => Enabled (Maybe a) where - isEnabled Nothing = const True - isEnabled (Just a) = isEnabled a +{-# LANGUAGE Safe #-}+{-# OPTIONS_HADDOCK hide #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.ExtScheme+-- Copyright : (c) Niklas Broberg 2009+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Internal scheme for handling extensions in a+-- convenient fashion.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.ExtScheme where++import Language.Haskell.Exts.Extension++data ExtScheme = Any [KnownExtension] | All [KnownExtension]+ deriving (Eq,Show)++type MExtScheme = Maybe ExtScheme++class Enabled a where+ isEnabled :: a -> [KnownExtension] -> Bool++instance Enabled KnownExtension where+ isEnabled = elem++instance Enabled ExtScheme where+ isEnabled (Any exts) enabled = any (`elem` enabled) exts+ isEnabled (All exts) enabled = all (`elem` enabled) exts++instance Enabled a => Enabled (Maybe a) where+ isEnabled Nothing = const True+ isEnabled (Just a) = isEnabled a
src/Language/Haskell/Exts/Extension.hs view
@@ -1,246 +1,750 @@------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Extension --- Copyright : (c) Niklas Broberg 2009 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : transient --- Portability : portable --- --- This entire module should be replaced with --- Language.Haskell.Extension from cabal, but we must --- wait for a release of cabal that includes the --- 'XmlSyntax' and 'RegularPatterns' extensions. --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.Extension ( - -- * Extensions - Extension(..), classifyExtension, impliesExts, - - -- * Extension groups - glasgowExts, knownExtensions - - ) where - - --- | This datatype is a copy of the one in Cabal's Language.Haskell.Extension module. --- The intention is to eventually import it from Cabal, but we need to wait for --- the next release of Cabal which includes XmlSyntax and RegularPatterns. -data Extension - = OverlappingInstances - | UndecidableInstances - | IncoherentInstances - | RecursiveDo - | ParallelListComp - | MultiParamTypeClasses - | NoMonomorphismRestriction - | FunctionalDependencies - | ExplicitForall - | Rank2Types - | RankNTypes - | PolymorphicComponents - | ExistentialQuantification - | ScopedTypeVariables - | ImplicitParams - | FlexibleContexts - | FlexibleInstances - | EmptyDataDecls - | CPP - - | KindSignatures - | BangPatterns - | TypeSynonymInstances - | TemplateHaskell - | ForeignFunctionInterface - | Arrows - | Generics - | NoImplicitPrelude - | NamedFieldPuns - | PatternGuards - | GeneralizedNewtypeDeriving - - | ExtensibleRecords - | RestrictedTypeSynonyms - | HereDocuments - | MagicHash - | TypeFamilies - | StandaloneDeriving - - | UnicodeSyntax - | PatternSignatures - | UnliftedFFITypes - | LiberalTypeSynonyms - | TypeOperators - | RecordWildCards - | RecordPuns -- should be deprecated - | DisambiguateRecordFields - | OverloadedStrings - | GADTs - | MonoPatBinds - | NoMonoPatBinds -- should be deprecated - | RelaxedPolyRec - | ExtendedDefaultRules - | UnboxedTuples - | DeriveDataTypeable - | ConstrainedClassMethods - - | PackageImports - - | ImpredicativeTypes - | NewQualifiedOperators - | PostfixOperators - | QuasiQuotes - | TransformListComp - | ViewPatterns - - | XmlSyntax - - | RegularPatterns - - | TupleSections - - | UnknownExtension String - deriving (Eq, Ord, Show, Read) - - --- | Certain extensions imply other extensions, and this function --- makes the implication explicit. This also handles deprecated --- extensions, which imply their replacements. --- The returned valued is the transitive closure of implied --- extensions. -impliesExts :: [Extension] -> [Extension] -impliesExts = go - where go [] = [] - go es = let xs = concatMap implE es - ys = filter (not . flip elem es) xs - in es ++ go ys - - implE e = case e of - TypeFamilies -> [KindSignatures] - ScopedTypeVariables -> [TypeOperators, ExplicitForall] - XmlSyntax -> [RegularPatterns] - RegularPatterns -> [PatternGuards] - RankNTypes -> [Rank2Types] - Rank2Types -> [PolymorphicComponents] - PolymorphicComponents -> [ExplicitForall] - LiberalTypeSynonyms -> [ExplicitForall] - -- Deprecations - RecordPuns -> [NamedFieldPuns] - PatternSignatures -> [ScopedTypeVariables] - e -> [] - --- | The list of extensions enabled by --- GHC's portmanteau -fglasgow-exts flag. -glasgowExts :: [Extension] -glasgowExts = [ - ForeignFunctionInterface - , UnliftedFFITypes - , GADTs - , ImplicitParams - , ScopedTypeVariables - , UnboxedTuples - , TypeSynonymInstances - , StandaloneDeriving - , DeriveDataTypeable - , FlexibleContexts - , FlexibleInstances - , ConstrainedClassMethods - , MultiParamTypeClasses - , FunctionalDependencies - , MagicHash - , PolymorphicComponents - , ExistentialQuantification - , UnicodeSyntax - , PostfixOperators - , PatternGuards - , LiberalTypeSynonyms - , RankNTypes - , ImpredicativeTypes - , TypeOperators - , RecursiveDo - , ParallelListComp - , EmptyDataDecls - , KindSignatures - , GeneralizedNewtypeDeriving - , TypeFamilies - ] - --- | List of all known extensions. Poor man's 'Enum' instance --- (we can't enum with the 'UnknownExtension' constructor). -knownExtensions :: [Extension] -knownExtensions = - [ OverlappingInstances - , UndecidableInstances - , IncoherentInstances - , RecursiveDo - , ParallelListComp - , MultiParamTypeClasses - , NoMonomorphismRestriction - , FunctionalDependencies - , ExplicitForall - , Rank2Types - , RankNTypes - , PolymorphicComponents - , ExistentialQuantification - , ScopedTypeVariables - , ImplicitParams - , FlexibleContexts - , FlexibleInstances - , EmptyDataDecls - , CPP - , KindSignatures - , BangPatterns - , TypeSynonymInstances - , TemplateHaskell - , ForeignFunctionInterface - , Arrows - , Generics - , NoImplicitPrelude - , NamedFieldPuns - , PatternGuards - , GeneralizedNewtypeDeriving - , ExtensibleRecords - , RestrictedTypeSynonyms - , HereDocuments - , MagicHash - , TypeFamilies - , StandaloneDeriving - , UnicodeSyntax - , PatternSignatures - , UnliftedFFITypes - , LiberalTypeSynonyms - , TypeOperators - , RecordWildCards - , RecordPuns -- should be deprecated - , DisambiguateRecordFields - , OverloadedStrings - , GADTs - , MonoPatBinds - , NoMonoPatBinds -- should be deprecated - , RelaxedPolyRec - , ExtendedDefaultRules - , UnboxedTuples - , DeriveDataTypeable - , ConstrainedClassMethods - , PackageImports - , ImpredicativeTypes - , NewQualifiedOperators - , PostfixOperators - , QuasiQuotes - , TransformListComp - , ViewPatterns - , XmlSyntax - , RegularPatterns - , TupleSections - ] - - - --- | A clever version of read that returns an 'UnknownExtension' --- if the string is not recognised. -classifyExtension :: String -> Extension -classifyExtension str - = case readsPrec 0 str of - [(e,"")] -> e - _ -> UnknownExtension str +{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Extension+-- Copyright : (c) Niklas Broberg 2009+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, niklas.broberg@chalmers.se+-- Stability : transient+-- Portability : portable+--+-- This module defines the list of recognized modular features+-- of Haskell, most often (sloppily) referred to as "extensions".+--+-- Closely mimicking the Language.Haskell.Extension module from+-- the Cabal library, this package also includes functionality for+-- "computing" languages as sets of features. Also, we make no+-- promise not to add extensions not yet recognized by Cabal.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Extension (+ -- * Language definitions+ Language(..),+ knownLanguages,+ classifyLanguage,+ prettyLanguage,++ -- * Extensions+ Extension(..), KnownExtension(..),+ classifyExtension,+ parseExtension, prettyExtension,++ -- * Extension groups+ ghcDefault, glasgowExts,+ knownExtensions, deprecatedExtensions,++ -- * Semantics of extensions applied to languages+ impliesExts, toExtensionList++ ) where++#if __GLASGOW_HASKELL__ < 710+import Control.Applicative ((<$>), (<|>))+#else+import Control.Applicative ((<|>))+#endif+import Data.Array (Array, accumArray, bounds, Ix(inRange), (!))+import Data.List (nub)+import Data.Maybe (fromMaybe)+import Data.Data++-- Copyright notice from Cabal's Language.Haskell.Extension,+-- from which we borrow plenty of features:++{- All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are+met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Isaac Jones nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -}++data Language =++ -- | The Haskell 98 language as defined by the Haskell 98 report.+ -- <http://haskell.org/onlinereport/>+ Haskell98++ -- | The Haskell 2010 language as defined by the Haskell 2010 report.+ -- <http://www.haskell.org/onlinereport/haskell2010>+ | Haskell2010++ -- | The minimal language resulting from disabling all recognized+ -- extensions - including ones that are part of all known language+ -- definitions e.g. MonomorphismRestriction.+ | HaskellAllDisabled++ -- | An unknown language, identified by its name.+ | UnknownLanguage String+ deriving (Show, Read, Eq, Ord, Data, Typeable)++knownLanguages :: [Language]+knownLanguages = [Haskell98, Haskell2010]++classifyLanguage :: String -> Language+classifyLanguage str = fromMaybe (UnknownLanguage str) $ lookup str langTable+ where+ langTable = [ (show lang, lang)+ | lang <- knownLanguages ]++prettyLanguage :: Language -> String+prettyLanguage (UnknownLanguage name) = name+prettyLanguage lang = show lang++-- | This represents language extensions beyond a base 'Language' definition+-- (such as 'Haskell98') that are supported by some implementations, usually+-- in some special mode.++data Extension =+ -- | Enable a known extension+ EnableExtension KnownExtension++ -- | Disable a known extension+ | DisableExtension KnownExtension++ -- | An unknown extension, identified by the name of its @LANGUAGE@+ -- pragma.+ | UnknownExtension String+ deriving (Show, Read, Eq, Ord)+++data KnownExtension =++ -- | [GHC § 7.6.3.4] Allow overlapping class instances,+ -- provided there is a unique most specific instance for each use.+ OverlappingInstances++ -- | [GHC § 7.6.3.3] Ignore structural rules guaranteeing the+ -- termination of class instance resolution. Termination is+ -- guaranteed by a fixed-depth recursion stack, and compilation+ -- may fail if this depth is exceeded.+ | UndecidableInstances++ -- | [GHC § 7.6.3.4] Implies 'OverlappingInstances'. Allow the+ -- implementation to choose an instance even when it is possible+ -- that further instantiation of types will lead to a more specific+ -- instance being applicable.+ | IncoherentInstances++ -- | [GHC § 7.6.3.5] Allow type signatures in instances.+ | InstanceSigs++ -- | [GHC § 7.3.8] Deprecated in GHC. Allows recursive+ -- bindings in @do@ blocks, using the @rec@ keyword.+ | DoRec++ -- | [GHC § 7.3.8.2] Allows recursive bindings using @mdo@, a+ -- variant of @do@, and @rec@.+ | RecursiveDo++ -- | [GHC § 7.3.9] Provide syntax for writing list+ -- comprehensions which iterate over several lists together, like+ -- the 'zipWith' family of functions.+ | ParallelListComp++ -- | [GHC § 7.6.1.1] Allow multiple parameters in a type class.+ | MultiParamTypeClasses++ -- | [GHC § 7.17] Enable the dreaded monomorphism restriction.+ | MonomorphismRestriction++ -- | [GHC § 7.6.2] Allow a specification attached to a+ -- multi-parameter type class which indicates that some parameters+ -- are entirely determined by others. The implementation will check+ -- that this property holds for the declared instances, and will use+ -- this property to reduce ambiguity in instance resolution.+ | FunctionalDependencies++ -- | [GHC § 7.8.5] Like 'RankNTypes' but does not allow a+ -- higher-rank type to itself appear on the left of a function+ -- arrow.+ | Rank2Types++ -- | [GHC § 7.8.5] Allow a universally-quantified type to occur on+ -- the left of a function arrow.+ | RankNTypes++ -- | [GHC § 7.8.5] Allow data constructors to have polymorphic+ -- arguments. Unlike 'RankNTypes', does not allow this for ordinary+ -- functions.+ | PolymorphicComponents++ -- | [GHC § 7.4.4] Allow existentially-quantified data constructors.+ | ExistentialQuantification++ -- | [GHC § 7.8.7] Cause a type variable in a signature, which has an+ -- explicit @forall@ quantifier, to scope over the definition of the+ -- accompanying value declaration.+ | ScopedTypeVariables++ -- | Deprecated, use 'ScopedTypeVariables' instead.+ | PatternSignatures++ -- | [GHC § 7.8.3] Enable implicit function parameters with dynamic+ -- scope.+ | ImplicitParams++ -- | [GHC § 7.8.2] Relax some restrictions on the form of the context+ -- of a type signature.+ | FlexibleContexts++ -- | [GHC § 7.6.3.2] Relax some restrictions on the form of the+ -- context of an instance declaration.+ | FlexibleInstances++ -- | [GHC § 7.4.1] Allow data type declarations with no constructors.+ | EmptyDataDecls++ -- | [GHC § 4.10.3] Run the C preprocessor on Haskell source code.+ | CPP++ -- | [GHC § 7.8.4] Allow an explicit kind signature giving the kind of+ -- types over which a type variable ranges.+ | KindSignatures++ -- | [GHC § 7.11] Enable a form of pattern which forces evaluation+ -- before an attempted match, and a form of strict @let@/@where@+ -- binding.+ | BangPatterns++ -- | [GHC § 7.6.3.1] Allow type synonyms in instance heads.+ | TypeSynonymInstances++ -- | [GHC § 7.9] Enable Template Haskell, a system for compile-time+ -- metaprogramming.+ | TemplateHaskell++ -- | [GHC § 8] Enable the Foreign Function Interface. In GHC,+ -- implements the standard Haskell 98 Foreign Function Interface+ -- Addendum, plus some GHC-specific extensions.+ | ForeignFunctionInterface++ -- | [GHC § 7.10] Enable arrow notation.+ | Arrows++ -- | [GHC § 7.16] Enable generic type classes, with default instances+ -- defined in terms of the algebraic structure of a type.+ | Generics++ -- | [GHC § 7.3.11] Enable the implicit importing of the module+ -- @Prelude@. When disabled, when desugaring certain built-in syntax+ -- into ordinary identifiers, use whatever is in scope rather than the+ -- @Prelude@ -- version.+ | ImplicitPrelude++ -- | [GHC § 7.3.15] Enable syntax for implicitly binding local names+ -- corresponding to the field names of a record. Puns bind specific+ -- names, unlike 'RecordWildCards'.+ | NamedFieldPuns++ -- | [GHC § 7.3.5] Enable a form of guard which matches a pattern and+ -- binds variables.+ | PatternGuards++ -- | [GHC § 7.5.4] Allow a type declared with @newtype@ to use+ -- @deriving@ for any class with an instance for the underlying type.+ | GeneralizedNewtypeDeriving++ -- | [GHC § 9.6.10] Allow use of any typeclass in deriving clauses.+ | DeriveAnyClass++ -- | [Hugs § 7.1] Enable the \"Trex\" extensible records system.+ | ExtensibleRecords++ -- | [Hugs § 7.2] Enable type synonyms which are transparent in+ -- some definitions and opaque elsewhere, as a way of implementing+ -- abstract datatypes.+ | RestrictedTypeSynonyms++ -- | [Hugs § 7.3] Enable an alternate syntax for string literals,+ -- with string templating.+ | HereDocuments++ -- | [GHC § 7.3.2] Allow the character @#@ as a postfix modifier on+ -- identifiers. Also enables literal syntax for unboxed values.+ | MagicHash++ -- | Binary integer literals+ | BinaryLiterals++ -- | [GHC § 7.7] Allow data types and type synonyms which are+ -- indexed by types, i.e. ad-hoc polymorphism for types.+ | TypeFamilies++ -- | [GHC § 7.5.2] Allow a standalone declaration which invokes the+ -- type class @deriving@ mechanism.+ | StandaloneDeriving++ -- | [GHC § 7.3.1] Allow certain Unicode characters to stand for+ -- certain ASCII character sequences, e.g. keywords and punctuation.+ | UnicodeSyntax++ -- | [GHC § 8.1.1] Allow the use of unboxed types as foreign types,+ -- e.g. in @foreign import@ and @foreign export@.+ | UnliftedFFITypes++ -- | [GHC § 7.4.3] Defer validity checking of types until after+ -- expanding type synonyms, relaxing the constraints on how synonyms+ -- may be used.+ | LiberalTypeSynonyms++ -- | [GHC § 7.4.2] Allow the name of a type constructor, type class,+ -- or type variable to be an infix operator.+ | TypeOperators++ -- | [GHC § 7.26.5] Parallel arrays for Data Parallel Haskell.+ | ParallelArrays++ -- | [GHC § 7.3.16] Enable syntax for implicitly binding local names+ -- corresponding to the field names of a record. A wildcard binds+ -- all unmentioned names, unlike 'NamedFieldPuns'.+ | RecordWildCards++ -- | Deprecated, use 'NamedFieldPuns' instead.+ | RecordPuns++ -- | [GHC § 7.3.14] Allow a record field name to be disambiguated+ -- by the type of the record it's in.+ | DisambiguateRecordFields++ -- | [GHC § 7.6.4] Enable overloading of string literals using a+ -- type class, much like integer literals.+ | OverloadedStrings++ -- | [GHC § 7.4.6] Enable generalized algebraic data types, in+ -- which type variables may be instantiated on a per-constructor+ -- basis. Implies GADTSyntax.+ | GADTs++{- GADTSyntax (the extension name) not yet supported by HSE++ -- | Enable GADT syntax for declaring ordinary algebraic datatypes.+ | GADTSyntax++-}++ -- | [GHC § 7.17.2] Make pattern bindings monomorphic.+ | MonoPatBinds++ -- | [GHC § 7.8.8] Relax the requirements on mutually-recursive+ -- polymorphic functions.+ | RelaxedPolyRec++ -- | [GHC § 2.4.5] Allow default instantiation of polymorphic+ -- types in more situations.+ | ExtendedDefaultRules++ -- | [GHC § 7.2.2] Enable unboxed tuples.+ | UnboxedTuples++ -- | [GHC § 7.5.3] Enable @deriving@ for classes+ -- @Data.Typeable.Typeable@ and @Data.Generics.Data@.+ | DeriveDataTypeable++ -- | [GHC § 7.6.1.3] Allow a class method's type to place+ -- additional constraints on a class type variable.+ | ConstrainedClassMethods++ -- | [GHC § 7.3.18] Allow imports to be qualified by the package+ -- name the module is intended to be imported from, e.g.+ --+ -- > import "network" Network.Socket+ | PackageImports++ | ImportQualifiedPost++ | LambdaCase++ -- | [GHC § 7.3.20] Allow case expressions with no alternatives.+ | EmptyCase++ -- | [GHC § 7.8.6] Deprecated in GHC 6.12 and will be removed in+ -- GHC 7. Allow a type variable to be instantiated at a+ -- polymorphic type.+ | ImpredicativeTypes++ -- | [GHC § 7.3.3] Change the syntax for qualified infix+ -- operators.+ | NewQualifiedOperators++ -- | [GHC § 7.3.12] Relax the interpretation of left operator+ -- sections to allow unary postfix operators.+ | PostfixOperators++ -- | [GHC § 7.9.5] Enable quasi-quotation, a mechanism for defining+ -- new concrete syntax for expressions and patterns.+ | QuasiQuotes++ -- | [GHC § 7.3.10] Enable generalized list comprehensions,+ -- supporting operations such as sorting and grouping.+ | TransformListComp++ -- | [GHC § 7.3.6] Enable view patterns, which match a value by+ -- applying a function and matching on the result.+ | ViewPatterns++ -- | Allow concrete XML syntax to be used in expressions and patterns,+ -- as per the Haskell Server Pages extension language:+ -- <http://www.haskell.org/haskellwiki/HSP>. The ideas behind it are+ -- discussed in the paper \"Haskell Server Pages through Dynamic Loading\"+ -- by Niklas Broberg, from Haskell Workshop '05.+ | XmlSyntax++ -- | Allow regular pattern matching over lists, as discussed in the+ -- paper \"Regular Expression Patterns\" by Niklas Broberg, Andreas Farre+ -- and Josef Svenningsson, from ICFP '04.+ | RegularPatterns++ -- | Enables the use of tuple sections, e.g. @(, True)@ desugars into+ -- @\x -> (x, True)@.+ | TupleSections++ -- | Allows GHC primops, written in C--, to be imported into a Haskell+ -- file.+ | GHCForeignImportPrim++ -- | Support for patterns of the form @n + k@, where @k@ is an+ -- integer literal.+ | NPlusKPatterns++ -- | Improve the layout rule when @if@ expressions are used in a @do@+ -- block.+ | DoAndIfThenElse++ -- | Makes much of the Haskell sugar be desugared into calls to the+ -- function with a particular name that is in scope.+ | RebindableSyntax++ -- | Make @forall@ a keyword in types, which can be used to give the+ -- generalisation explicitly.+ | ExplicitForAll++ -- | Allow contexts to be put on datatypes, e.g. the @Eq a@ in+ -- @data Eq a => Set a = NilSet | ConsSet a (Set a)@.+ | DatatypeContexts++ -- | Local (@let@ and @where@) bindings are monomorphic.+ | MonoLocalBinds++ -- | Enable @deriving@ for the @Data.Functor.Functor@ class.+ | DeriveFunctor++ -- | [GHC § 7.5.3] Enable @deriving@ for the @Generic@ and @Generic1@ classes.+ | DeriveGeneric++ -- | Enable @deriving@ for the @Data.Traversable.Traversable@ class.+ | DeriveTraversable++ -- | Enable @deriving@ for the @Data.Foldable.Foldable@ class.+ | DeriveFoldable++ -- | Enable non-decreasing indentation for 'do' blocks.+ | NondecreasingIndentation++ -- | [GHC § 8.1.4] Enable interruptible FFI.+ | InterruptibleFFI++ -- | [GHC § 8.1.5] Enable the 'capi' calling convention in the+ -- foreign function interface.+ | CApiFFI++ -- | GHCJS FFI extension with convenient import patterns,+ -- asynchronous FFI and a JSVal FFI type+ | JavaScriptFFI++ -- | [GHC § 7.3.27] Enable explicit namespaces in import/export.+ | ExplicitNamespaces++ | DataKinds++ | PolyKinds++ -- | [GHC § 7.3.16] Enable the multi-way if-expressions+ -- extension to accept conditional expressions with multiple branches.+ | MultiWayIf++ -- | [GHC § 7.20.3] Allow imports to be qualified with a safe+ -- keyword that requires the imported module be trusted as according+ -- to the Safe Haskell definition of trust.+ --+ -- > import safe Network.Socket+ | SafeImports++ -- | [GHC § 7.20] Compile a module in the Safe, Safe Haskell+ -- mode -- a restricted form of the Haskell language to ensure+ -- type safety.+ | Safe++ -- | [GHC § 7.20] Compile a module in the Trustworthy, Safe+ -- Haskell mode -- no restrictions apply but the module is marked+ -- as trusted as long as the package the module resides in is+ -- trusted.+ | Trustworthy++ -- | [GHC § 7.6.1.4] Allow default signatures in class+ -- definitions. They apply to default methods implemented in this+ -- class.+ | DefaultSignatures+++-- ConstraintKinds not generally supported by HSE. This flag makes RCategory2.hs+-- pass testing though.++ -- | [GHC § 7.40] Allow type class/implicit parameter/equality+ -- constraints to be used as types with the special kind Constraint.+ -- Also generalise the (ctxt => ty) syntax so that any type of kind+ -- Constraint can occur before the arrow.+ | ConstraintKinds++ -- | [GHC § 7.25.3] Allow role annotations.+ | RoleAnnotations+ -- | [GHC § 7.3.8] Enable giving names to parametrized pattern+ -- schemes+ | PatternSynonyms++ -- | [GHC § 7.15] Allow partial specified type signatures.+ -- Note that this extension does not affect parsing. It only affects whether the+ -- program is able to be run with partial signatures.+ | PartialTypeSignatures++ -- | [GHC § 7.15.1.2] This extension treats type variables which+ -- start with an underscore as wildcards. For example, `foo :: _x` is+ -- equivalent to `foo :: _`.+ | NamedWildCards++ | TypeApplications++ | TypeFamilyDependencies++ | OverloadedLabels++ -- | Allow multiple @deriving@ clauses, each optionally qualified with a+ -- /strategy/.+ | DerivingStrategies++ | UnboxedSums++ | TypeInType++ | Strict++ | StrictData++ -- | Enable deriving instances via types of the same runtime representation.+ -- Implies 'DerivingStrategies'.+ | DerivingVia++ | QuantifiedConstraints++ | BlockArguments++ deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable)++-- | Certain extensions imply other extensions, and this function+-- makes the implication explicit. This also handles deprecated+-- extensions, which imply their replacements.+-- The returned value is the transitive closure of implied+-- extensions.+{-impliesExts :: [Extension] -> [Extension]+impliesExts exts =+ let posExts = [ ke | EnableExtension ke <- exts ]+ negExts = [ ke | DisableExtension ke <- exts ]++ implExts = impliesKnownExts posExts+ in+-}+impliesExts :: [KnownExtension] -> [KnownExtension]+impliesExts = go+ where go [] = []+ go es = let xs = concatMap implE es+ ys = filter (not . flip elem es) xs+ in es ++ go ys++ implE e = case e of+ TypeFamilies -> [KindSignatures]+ ScopedTypeVariables -> [TypeOperators, ExplicitForAll]+ XmlSyntax -> [RegularPatterns]+ RegularPatterns -> [PatternGuards]+ RankNTypes -> [Rank2Types, ExplicitForAll]+ Rank2Types -> [PolymorphicComponents, ExplicitForAll]+ PolymorphicComponents -> [ExplicitForAll]+ LiberalTypeSynonyms -> [ExplicitForAll]+ ExistentialQuantification -> [ExplicitForAll]+ ImpredicativeTypes -> [ExplicitForAll]+ PolyKinds -> [KindSignatures]+ TypeFamilyDependencies -> [TypeFamilies]+ TypeInType -> [PolyKinds, DataKinds, KindSignatures]+ TypeOperators -> [ExplicitNamespaces]+ -- Deprecations+ RecordPuns -> [NamedFieldPuns]+ PatternSignatures -> [ScopedTypeVariables]+ DerivingVia -> [DerivingStrategies]+ _ -> []++-- | The list of extensions enabled by+-- GHC's portmanteau -fglasgow-exts flag.+glasgowExts :: [Extension]+glasgowExts = map EnableExtension [+ ForeignFunctionInterface+ , UnliftedFFITypes+ , GADTs+ , ImplicitParams+ , ScopedTypeVariables+ , UnboxedTuples+ , TypeSynonymInstances+ , StandaloneDeriving+ , DeriveDataTypeable+ , FlexibleContexts+ , FlexibleInstances+ , ConstrainedClassMethods+ , MultiParamTypeClasses+ , FunctionalDependencies+ , MagicHash+ , PolymorphicComponents+ , ExistentialQuantification+ , UnicodeSyntax+ , PostfixOperators+ , PatternGuards+ , LiberalTypeSynonyms+ , RankNTypes+ , ImpredicativeTypes+ , TypeOperators+ , RecursiveDo+ , ParallelListComp+ , EmptyDataDecls+ , KindSignatures+ , GeneralizedNewtypeDeriving+ , TypeFamilies+ ]++-- Not exported, just used locally in several places.+allLangDefault :: [KnownExtension]+allLangDefault = [MonomorphismRestriction, MonoPatBinds, ImplicitPrelude]++ghcDefault :: [Extension]+ghcDefault = map EnableExtension (NondecreasingIndentation:allLangDefault)++-- | List of all known extensions, both \"yes\" and \"no\" versions.+knownExtensions :: [Extension]+knownExtensions =+ concat [ [EnableExtension x, DisableExtension x] | x <- [minBound..maxBound] ]++-- | Extensions that have been deprecated, possibly paired with another+-- extension that replaces it.+--+deprecatedExtensions :: [(Extension, Maybe Extension)]+deprecatedExtensions =+ [ (EnableExtension RecordPuns, Just (EnableExtension NamedFieldPuns))+ , (EnableExtension PatternSignatures, Just (EnableExtension ScopedTypeVariables))+ ]++++-- | A clever version of read that returns an 'UnknownExtension'+-- if the string is not recognised.+classifyExtension :: String -> Extension+classifyExtension string+ = case classifyKnownExtension string of+ Just ext -> EnableExtension ext+ Nothing ->+ case string of+ 'N':'o':string' ->+ case classifyKnownExtension string' of+ Just ext -> DisableExtension ext+ Nothing -> UnknownExtension string+ _ -> UnknownExtension string+++classifyKnownExtension :: String -> Maybe KnownExtension+classifyKnownExtension "" = Nothing+classifyKnownExtension string@(c : _)+ | inRange (bounds knownExtensionTable) c+ = lookup string (knownExtensionTable ! c)+ | otherwise = Nothing++knownExtensionTable :: Array Char [(String, KnownExtension)]+knownExtensionTable =+ accumArray (flip (:)) [] ('A', 'Z')+ [ (head str, (str, extension))+ | extension <- [toEnum 0 ..]+ , let str = show extension ]++-- | Parse an enabled or disabled extension; returns+-- 'UnknownExtension' if the parse fails.+parseExtension :: String -> Extension+parseExtension str = fromMaybe (UnknownExtension str) $+ EnableExtension <$> readMay str+ <|> DisableExtension <$> (readMay =<< dropNo str)+ where+ dropNo ('N':'o':rest) = Just rest+ dropNo _ = Nothing++-- | Pretty print an extension. Disabled extensions are prefixed with+-- \'No\'.+prettyExtension :: Extension -> String+prettyExtension (EnableExtension ext) = show ext+prettyExtension (DisableExtension ext) = "No" ++ show ext+prettyExtension (UnknownExtension str) = str++readMay :: Read a => String -> Maybe a+readMay s = case [x | (x,t) <- reads s, ("","") <- lex t] of+ [x] -> Just x+ _ -> Nothing++{-------------------------------------------+ -- Transform a 'Language', and possibly a modifying set of'Extension's, into a list+ -- of 'KnownExtension's, to be interpreted as modifying the language you get+ -- when all known extensions are disabled.+ -- Extensions are interpreted in a right-biased fashion, so the last instance+ -- of an occurence of 'EnableExtension' or 'DisableExtension' for a given+ -- 'KnownExtension' takes precedence.+ -------------------------------------------}++toExtensionList :: Language -> [Extension] -> [KnownExtension]+toExtensionList lang exts' =+ let langKes = case lang of+ Haskell98 -> NPlusKPatterns:allLangDefault+ Haskell2010 -> [DoAndIfThenElse+ , PatternGuards+ , ForeignFunctionInterface+ , EmptyDataDecls+ ] ++ allLangDefault+ HaskellAllDisabled -> []+ UnknownLanguage s ->+ error $ "toExtensionList: Unknown language " ++ s+{-+ addExts = [ ke | EnableExtension ke <- exts ]+ remExts = [ ke | DisableExtension ke <- exts ]+ in impliesExts $ nub $ (langKes ++ addExts) \\ remExts+-}+ in impliesExts $ nub $ go langKes exts'+ where go :: [KnownExtension] -> [Extension] -> [KnownExtension]+ go acc [] = acc+ go acc (DisableExtension x : exts) = go (filter (/= x) acc) exts+ go acc (EnableExtension x : exts) = go (x : acc) exts+ -- We just throw away UnknownExtensions+ go acc (_ : exts) = go acc exts
src/Language/Haskell/Exts/Fixity.hs view
@@ -1,398 +1,450 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-} ------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Fixity --- Copyright : (c) Niklas Broberg 2009 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- Fixity information to give the parser so that infix operators can --- be parsed properly. --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.Fixity - ( - -- * Fixity representation - Fixity(..) - -- | The following three functions all create lists of - -- fixities from textual representations of operators. - -- The intended usage is e.g. - -- - -- > fixs = infixr_ 0 ["$","$!","`seq`"] - -- - -- Note that the operators are expected as you would - -- write them infix, i.e. with ` characters surrounding - -- /varid/ operators, and /varsym/ operators written as is. - , infix_, infixl_, infixr_ - -- ** Collections of fixities - , preludeFixities, baseFixities - - -- * Applying fixities to an AST - , AppFixity(..) - ) where - -import Language.Haskell.Exts.Syntax - -import Data.Char (isUpper) -import Control.Monad (when, (<=<), liftM, liftM2, liftM3, liftM4) -import Data.Traversable (mapM) -import Prelude hiding (mapM) - -#ifdef __GLASGOW_HASKELL__ -#ifdef BASE4 -import Data.Data hiding (Fixity) -#else -import Data.Generics (Data(..),Typeable(..)) -#endif -#endif - --- | Operator fixities are represented by their associativity --- (left, right or none) and their precedence (0-9). -data Fixity = Fixity Assoc Int QName -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Ord,Show,Typeable,Data) -#else - deriving (Eq,Ord,Show) -#endif - --- | All AST elements that may include expressions which in turn may --- need fixity tweaking will be instances of this class. -class AppFixity ast where - -- | Tweak any expressions in the element to account for the - -- fixities given. Assumes that all operator expressions are - -- fully left associative chains to begin with. - applyFixities :: Monad m => [Fixity] -- ^ The fixities to account for. - -> ast -- ^ The element to tweak. - -> m ast -- ^ The same element, but with operator expressions updated, or a failure. - - -instance AppFixity Exp where - applyFixities fixs = infFix fixs <=< leafFix fixs - where -- This is the real meat case. We can assume a left-associative list to begin with. - infFix fixs (InfixApp a op2 z) = do - e <- infFix fixs a - case e of - InfixApp x op1 y -> do - let (a1,p1) = askFixity fixs op1 - (a2,p2) = askFixity fixs op2 - when (p1 == p2 && (a1 /= a2 || a1 == AssocNone)) -- Ambiguous infix expression! - $ fail "Ambiguous infix expression" - if (p1 > p2 || p1 == p2 && (a1 == AssocLeft || a2 == AssocNone)) -- Already right order - then return $ InfixApp e op2 z - else liftM (InfixApp x op1) (infFix fixs $ InfixApp y op2 z) - _ -> return $ InfixApp e op2 z - - infFix _ e = return e - -instance AppFixity Pat where - applyFixities fixs = infFix fixs <=< leafFixP fixs - where -- Same for patterns - infFix fixs (PInfixApp a op2 z) = do - p <- infFix fixs a - case p of - PInfixApp x op1 y -> do - let (a1,p1) = askFixityP fixs op1 - (a2,p2) = askFixityP fixs op2 - when (p1 == p2 && (a1 /= a2 || a1 == AssocNone)) -- Ambiguous infix expression! - $ fail "Ambiguous infix expression" - if (p1 > p2 || p1 == p2 && (a1 == AssocLeft || a2 == AssocNone)) -- Already right order - then return $ PInfixApp p op2 z - else liftM (PInfixApp x op1) (infFix fixs $ PInfixApp y op2 z) - _ -> return $ PInfixApp p op2 z - - infFix _ p = return p - - --- Internal: lookup associativity and precedence of an operator -askFixity :: [Fixity] -> QOp -> (Assoc, Int) -askFixity xs k = askFix xs (f k) -- undefined -- \k -> askFixityP xs (f k) -- lookupWithDefault (AssocLeft, 9) (f k) mp - where - f (QVarOp x) = g x - f (QConOp x) = g x - - g (Special Cons) = UnQual (Symbol ":") - g x = x - --- Same using patterns -askFixityP :: [Fixity] -> QName -> (Assoc, Int) -askFixityP xs qn = askFix xs (g qn) - where - g (Special Cons) = UnQual (Symbol ":") - g x = x - -askFix :: [Fixity] -> QName -> (Assoc, Int) -askFix xs = \k -> lookupWithDefault (AssocLeft, 9) k mp - where - lookupWithDefault def k mp = case lookup k mp of - Nothing -> def - Just x -> x - - mp = [(x,(a,p)) | Fixity a p x <- xs] - - --- | All fixities defined in the Prelude. -preludeFixities :: [Fixity] -preludeFixities = concat - [infixr_ 9 ["."] - ,infixl_ 9 ["!!"] - ,infixr_ 8 ["^","^^","**"] - ,infixl_ 7 ["*","/","`quot`","`rem`","`div`","`mod`",":%","%"] - ,infixl_ 6 ["+","-"] - ,infixr_ 5 [":","++"] - ,infix_ 4 ["==","/=","<","<=",">=",">","`elem`","`notElem`"] - ,infixr_ 3 ["&&"] - ,infixr_ 2 ["||"] - ,infixl_ 1 [">>",">>="] - ,infixr_ 1 ["=<<"] - ,infixr_ 0 ["$","$!","`seq`"] - ] - --- | All fixities defined in the base package. --- --- Note that the @+++@ operator appears in both Control.Arrows and --- Text.ParserCombinators.ReadP. The listed precedence for @+++@ in --- this list is that of Control.Arrows. -baseFixities :: [Fixity] -baseFixities = preludeFixities ++ concat - [infixl_ 9 ["!","//","!:"] - ,infixl_ 8 ["`shift`","`rotate`","`shiftL`","`shiftR`","`rotateL`","`rotateR`"] - ,infixl_ 7 [".&."] - ,infixl_ 6 ["`xor`"] - ,infix_ 6 [":+"] - ,infixl_ 5 [".|."] - ,infixr_ 5 ["+:+","<++","<+>"] -- fixity conflict for +++ between ReadP and Arrow - ,infix_ 5 ["\\\\"] - ,infixl_ 4 ["<$>","<$","<*>","<*","*>","<**>"] - ,infix_ 4 ["`elemP`","`notElemP`"] - ,infixl_ 3 ["<|>"] - ,infixr_ 3 ["&&&","***"] - ,infixr_ 2 ["+++","|||"] - ,infixr_ 1 ["<=<",">=>",">>>","<<<","^<<","<<^","^>>",">>^"] - ,infixl_ 0 ["`on`"] - ,infixr_ 0 ["`par`","`pseq`"] - ] - -infixr_, infixl_, infix_ :: Int -> [String] -> [Fixity] -infixr_ = fixity AssocRight -infixl_ = fixity AssocLeft -infix_ = fixity AssocNone - --- Internal: help function for the above definitions. -fixity :: Assoc -> Int -> [String] -> [Fixity] -fixity a p = map (Fixity a p . op) - where - op ('`':xs) = UnQual $ Ident $ init xs - op xs = UnQual $ Symbol xs - - - - - - -------------------------------------------------------------------- --- Boilerplate - yuck!! Everything below here is internal stuff - -instance AppFixity Module where - applyFixities fixs (Module loc n prs mwt ext imp decls) = - liftM (Module loc n prs mwt ext imp) $ appFixDecls fixs decls - -instance AppFixity Decl where - applyFixities fixs decl = case decl of - ClassDecl loc ctxt n vars deps cdecls -> liftM (ClassDecl loc ctxt n vars deps) $ mapM fix cdecls - InstDecl loc ctxt n ts idecls -> liftM (InstDecl loc ctxt n ts) $ mapM fix idecls - SpliceDecl loc spl -> liftM (SpliceDecl loc) $ fix spl - FunBind matches -> liftM FunBind $ mapM fix matches - PatBind loc p mt rhs bs -> liftM3 (flip (PatBind loc) mt) (fix p) (fix rhs) (fix bs) - AnnPragma loc ann -> liftM (AnnPragma loc) $ fix ann - _ -> return decl - where fix x = applyFixities fixs x - -appFixDecls :: Monad m => [Fixity] -> [Decl] -> m [Decl] -appFixDecls fixs decls = - let extraFixs = getFixities decls - in mapM (applyFixities (fixs++extraFixs)) decls - where getFixities = concatMap getFixity - getFixity (InfixDecl _ a p ops) = map (Fixity a p . g) ops - getFixity _ = [] - g (VarOp x) = UnQual x - g (ConOp x) = UnQual x - -instance AppFixity Annotation where - applyFixities fixs ann = case ann of - Ann n e -> liftM (Ann n) $ fix e - TypeAnn n e -> liftM (TypeAnn n) $ fix e - ModuleAnn e -> liftM ModuleAnn $ fix e - where fix x = applyFixities fixs x - -instance AppFixity ClassDecl where - applyFixities fixs (ClsDecl decl) = liftM ClsDecl $ applyFixities fixs decl - applyFixities _ cdecl = return cdecl - -instance AppFixity InstDecl where - applyFixities fixs (InsDecl decl) = liftM InsDecl $ applyFixities fixs decl - applyFixities _ idecl = return idecl - -instance AppFixity Match where - applyFixities fixs (Match loc n ps mt rhs bs) = liftM3 (flip (Match loc n) mt) (mapM fix ps) (fix rhs) (fix bs) - where fix x = applyFixities fixs x - -instance AppFixity Rhs where - applyFixities fixs rhs = case rhs of - UnGuardedRhs e -> liftM UnGuardedRhs $ fix e - GuardedRhss grhss -> liftM GuardedRhss $ mapM fix grhss - where fix x = applyFixities fixs x - -instance AppFixity GuardedRhs where - applyFixities fixs (GuardedRhs loc stmts e) = liftM2 (GuardedRhs loc) (mapM fix stmts) $ fix e - where fix x = applyFixities fixs x - -instance AppFixity PatField where - applyFixities fixs (PFieldPat n p) = liftM (PFieldPat n) $ applyFixities fixs p - applyFixities _ pf = return pf - -instance AppFixity RPat where - applyFixities fixs rp = case rp of - RPOp rp op -> liftM (flip RPOp op) (fix rp) - RPEither a b -> liftM2 RPEither (fix a) (fix b) - RPSeq rps -> liftM RPSeq $ mapM fix rps - RPGuard p stmts -> liftM2 RPGuard (fix p) $ mapM fix stmts - RPCAs n rp -> liftM (RPCAs n) $ fix rp - RPAs n rp -> liftM (RPAs n) $ fix rp - RPParen rp -> liftM RPParen $ fix rp - RPPat p -> liftM RPPat $ fix p - where fix x = applyFixities fixs x - -instance AppFixity PXAttr where - applyFixities fixs (PXAttr n p) = liftM (PXAttr n) $ applyFixities fixs p - -instance AppFixity Stmt where - applyFixities fixs stmt = case stmt of - Generator loc p e -> liftM2 (Generator loc) (fix p) (fix e) - Qualifier e -> liftM Qualifier $ fix e - LetStmt bs -> liftM LetStmt $ fix bs -- special behavior - RecStmt stmts -> liftM RecStmt $ mapM fix stmts - where fix x = applyFixities fixs x - -instance AppFixity Binds where - applyFixities fixs bs = case bs of - BDecls decls -> liftM BDecls $ appFixDecls fixs decls -- special behavior - IPBinds ips -> liftM IPBinds $ mapM fix ips - where fix x = applyFixities fixs x - - -instance AppFixity IPBind where - applyFixities fixs (IPBind loc n e) = liftM (IPBind loc n) $ applyFixities fixs e - -instance AppFixity FieldUpdate where - applyFixities fixs (FieldUpdate n e) = liftM (FieldUpdate n) $ applyFixities fixs e - applyFixities _ fup = return fup - -instance AppFixity Alt where - applyFixities fixs (Alt loc p galts bs) = liftM3 (Alt loc) (fix p) (fix galts) (fix bs) - where fix x = applyFixities fixs x - -instance AppFixity GuardedAlts where - applyFixities fixs galts = case galts of - UnGuardedAlt e -> liftM UnGuardedAlt $ fix e - GuardedAlts galts -> liftM GuardedAlts $ mapM fix galts - where fix x = applyFixities fixs x - -instance AppFixity GuardedAlt where - applyFixities fixs (GuardedAlt loc stmts e) = liftM2 (GuardedAlt loc) (mapM fix stmts) (fix e) - where fix x = applyFixities fixs x - -instance AppFixity QualStmt where - applyFixities fixs qstmt = case qstmt of - QualStmt s -> liftM QualStmt $ fix s - ThenTrans e -> liftM ThenTrans $ fix e - ThenBy e1 e2 -> liftM2 ThenBy (fix e1) (fix e2) - GroupBy e -> liftM GroupBy (fix e) - GroupUsing e -> liftM GroupUsing (fix e) - GroupByUsing e1 e2 -> liftM2 GroupByUsing (fix e1) (fix e2) - where fix x = applyFixities fixs x - -instance AppFixity Bracket where - applyFixities fixs br = case br of - ExpBracket e -> liftM ExpBracket $ fix e - PatBracket p -> liftM PatBracket $ fix p - DeclBracket ds -> liftM DeclBracket $ mapM fix ds - _ -> return br - where fix x = applyFixities fixs x - -instance AppFixity Splice where - applyFixities fixs (ParenSplice e) = liftM ParenSplice $ applyFixities fixs e - applyFixities _ s = return s - -instance AppFixity XAttr where - applyFixities fixs (XAttr n e) = liftM (XAttr n) $ applyFixities fixs e - - --- the boring boilerplate stuff for expressions too --- Recursively fixes the "leaves" of the infix chains, --- without yet touching the chain itself. We assume all chains are --- left-associate to begin with. -leafFix fixs e = case e of - InfixApp e1 op e2 -> liftM2 (flip InfixApp op) (leafFix fixs e1) (fix e2) - App e1 e2 -> liftM2 App (fix e1) (fix e2) - NegApp e -> liftM NegApp $ fix e - Lambda loc pats e -> liftM2 (Lambda loc) (mapM fix pats) $ fix e - Let bs e -> liftM2 Let (fix bs) $ fix e - If e a b -> liftM3 If (fix e) (fix a) (fix b) - Case e alts -> liftM2 Case (fix e) $ mapM fix alts - Do stmts -> liftM Do $ mapM fix stmts - MDo stmts -> liftM MDo $ mapM fix stmts - Tuple exps -> liftM Tuple $ mapM fix exps - List exps -> liftM List $ mapM fix exps - Paren e -> liftM Paren $ fix e - LeftSection e op -> liftM (flip LeftSection op) (fix e) - RightSection op e -> liftM (RightSection op) $ fix e - RecConstr n fups -> liftM (RecConstr n) $ mapM fix fups - RecUpdate e fups -> liftM2 RecUpdate (fix e) $ mapM fix fups - EnumFrom e -> liftM EnumFrom $ fix e - EnumFromTo e1 e2 -> liftM2 EnumFromTo (fix e1) (fix e2) - EnumFromThen e1 e2 -> liftM2 EnumFromThen (fix e1) (fix e2) - EnumFromThenTo e1 e2 e3 -> liftM3 EnumFromThenTo (fix e1) (fix e2) (fix e3) - ListComp e quals -> liftM2 ListComp (fix e) $ mapM fix quals - ParComp e qualss -> liftM2 ParComp (fix e) $ mapM (mapM fix) qualss - ExpTypeSig loc e t -> liftM (flip (ExpTypeSig loc) t) (fix e) - BracketExp b -> liftM BracketExp $ fix b - SpliceExp s -> liftM SpliceExp $ fix s - XTag loc n ats mexp cs -> liftM3 (XTag loc n) (mapM fix ats) (mapM fix mexp) (mapM fix cs) - XETag loc n ats mexp -> liftM2 (XETag loc n) (mapM fix ats) (mapM fix mexp) - XExpTag e -> liftM XExpTag $ fix e - XChildTag loc cs -> liftM (XChildTag loc) $ mapM fix cs - Proc loc p e -> liftM2 (Proc loc) (fix p) (fix e) - LeftArrApp e1 e2 -> liftM2 LeftArrApp (fix e1) (fix e2) - RightArrApp e1 e2 -> liftM2 RightArrApp (fix e1) (fix e2) - LeftArrHighApp e1 e2 -> liftM2 LeftArrHighApp (fix e1) (fix e2) - RightArrHighApp e1 e2 -> liftM2 RightArrHighApp (fix e1) (fix e2) - CorePragma s e -> liftM (CorePragma s) (fix e) - SCCPragma s e -> liftM (SCCPragma s) (fix e) - GenPragma s ab cd e -> liftM (GenPragma s ab cd) (fix e) - - _ -> return e - where - fix x = applyFixities fixs x - -leafFixP fixs p = case p of - PNeg p -> liftM PNeg $ fix p - PApp n ps -> liftM (PApp n) $ mapM fix ps - PTuple ps -> liftM PTuple $ mapM fix ps - PList ps -> liftM PList $ mapM fix ps - PParen p -> liftM PParen $ fix p - PRec n pfs -> liftM (PRec n) $ mapM fix pfs - PAsPat n p -> liftM (PAsPat n) $ fix p - PIrrPat p -> liftM PIrrPat $ fix p - PatTypeSig loc p t -> liftM (flip (PatTypeSig loc) t) (fix p) - PViewPat e p -> liftM2 PViewPat (fix e) (fix p) - PRPat rps -> liftM PRPat $ mapM fix rps - PXTag loc n ats mp ps -> liftM3 (PXTag loc n) (mapM fix ats) (mapM fix mp) (mapM fix ps) - PXETag loc n ats mp -> liftM2 (PXETag loc n) (mapM fix ats) (mapM fix mp) - PXPatTag p -> liftM PXPatTag $ fix p - PXRPats rps -> liftM PXRPats $ mapM fix rps - PBangPat p -> liftM PBangPat $ fix p - _ -> return p - where fix x = applyFixities fixs x +{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Fixity+-- Copyright : (c) Niklas Broberg 2009+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Fixity information to give the parser so that infix operators can+-- be parsed properly.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Fixity+ (+ -- * Fixity representation+ Fixity(..)+ -- | The following three functions all create lists of+ -- fixities from textual representations of operators.+ -- The intended usage is e.g.+ --+ -- > fixs = infixr_ 0 ["$","$!","`seq`"]+ --+ -- Note that the operators are expected as you would+ -- write them infix, i.e. with ` characters surrounding+ -- /varid/ operators, and /varsym/ operators written as is.+ , infix_, infixl_, infixr_+ -- ** Collections of fixities+ , preludeFixities, baseFixities++ -- * Applying fixities to an AST+ , AppFixity(..)+ ) where++import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.SrcLoc++import Control.Monad (when, (<=<), liftM, liftM2, liftM3, liftM4)+import qualified Control.Monad.Fail as Fail+import Data.Traversable (mapM)+import Data.Maybe (fromMaybe)+import Data.Typeable+import Data.Data hiding (Fixity)+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative ((<$))+#endif+import Prelude hiding (mapM)++-- | Operator fixities are represented by their associativity+-- (left, right or none) and their precedence (0-9).+data Fixity = Fixity (Assoc ()) Int (QName ())+ deriving (Eq,Ord,Show,Typeable,Data)++-- | All AST elements that may include expressions which in turn may+-- need fixity tweaking will be instances of this class.+class AppFixity ast where+ -- | Tweak any expressions in the element to account for the+ -- fixities given. Assumes that all operator expressions are+ -- fully left associative chains to begin with.+ applyFixities :: Fail.MonadFail m => [Fixity] -- ^ The fixities to account for.+ -> ast SrcSpanInfo -- ^ The element to tweak.+ -> m (ast SrcSpanInfo) -- ^ The same element, but with operator expressions updated, or a failure.++assocNone, assocLeft, assocRight :: Assoc ()+assocNone = AssocNone ()+assocLeft = AssocLeft ()+assocRight = AssocRight ()++instance AppFixity Exp where+ applyFixities fixs' = infFix fixs' <=< leafFix fixs'+ where -- This is the real meat case. We can assume a left-associative list to begin with.+ infFix fixs (InfixApp l2 a op2 z) = do+ e <- infFix fixs a+ let fixup (a1,p1) (a2,p2) y pre = do+ when (p1 == p2 && (a1 /= a2 || a1 == assocNone)) -- Ambiguous infix expression!+ $ fail "Ambiguous infix expression"+ if p1 > p2 || p1 == p2 && (a1 == assocLeft || a2 == assocNone) -- Already right order+ then return $ InfixApp l2 e op2 z+ else liftM pre (infFix fixs $ InfixApp (ann y <++> ann z) y op2 z)+ case e of+ InfixApp _ x op1 y -> fixup (askFixity fixs op1) (askFixity fixs op2) y (InfixApp l2 x op1)+ NegApp _ y -> fixup prefixMinusFixity (askFixity fixs op2) y (NegApp l2)+ _ -> return $ InfixApp l2 e op2 z++ infFix _ e = return e++--ambOps l = ParseFailed (getPointLoc l) $ "Ambiguous infix expression"++instance AppFixity Pat where+ applyFixities fixs' = infFix fixs' <=< leafFixP fixs'+ where -- This is the real meat case. We can assume a left-associative list to begin with.+ infFix fixs (PInfixApp l2 a op2 z) = do+ p <- infFix fixs a+ let fixup (a1,p1) (a2,p2) y pre = do+ when (p1 == p2 && (a1 /= a2 || a1 == assocNone )) -- Ambiguous infix expression!+ $ fail "Ambiguous infix expression"+ if p1 > p2 || p1 == p2 && (a1 == assocLeft || a2 == assocNone) -- Already right order+ then return $ PInfixApp l2 p op2 z+ else liftM pre (infFix fixs $ PInfixApp (ann y <++> ann z) y op2 z)+ case p of+ PInfixApp _ x op1 y -> fixup (askFixityP fixs op1) (askFixityP fixs op2) y (PInfixApp l2 x op1)+ _ -> return $ PInfixApp l2 p op2 z++ infFix _ p = return p++-- Internal: lookup associativity and precedence of an operator+askFixity :: [Fixity] -> QOp l -> (Assoc (), Int)+askFixity xs k = askFix xs (f (() <$ k))+ where+ f (QVarOp _ x) = g x+ f (QConOp _ x) = g x++ g (Special _ (Cons _)) = UnQual () (Symbol () ":")+ g x = x++-- Same using patterns+askFixityP :: [Fixity] -> QName l -> (Assoc (), Int)+askFixityP xs qn = askFix xs (g (() <$ qn))+ where+ g (Special _ (Cons _)) = UnQual () (Symbol () ":")+ g x = x++askFix :: [Fixity] -> QName l -> (Assoc (), Int)+askFix xs = \k -> lookupWithDefault (assocLeft, 9) (() <$ k) mp+ where+ lookupWithDefault def k mp' = fromMaybe def $ lookup k mp'++ mp = [(x,(a,p)) | Fixity a p x <- xs]++++-- | Built-in fixity for prefix minus+prefixMinusFixity :: (Assoc (), Int)+prefixMinusFixity = (AssocLeft (), 6)++-- | All fixities defined in the Prelude.+preludeFixities :: [Fixity]+preludeFixities = concat+ [infixr_ 9 ["."]+ ,infixl_ 9 ["!!"]+ ,infixr_ 8 ["^","^^","**"]+ ,infixl_ 7 ["*","/","`quot`","`rem`","`div`","`mod`"]+ ,infixl_ 6 ["+","-"]+ ,infixr_ 5 [":","++"]+ ,infix_ 4 ["==","/=","<","<=",">=",">","`elem`","`notElem`"]+ ,infixl_ 4 ["<$>","<$","<*>","<*","*>"]+ ,infixr_ 3 ["&&"]+ ,infixr_ 2 ["||"]+ ,infixl_ 1 [">>",">>="]+ ,infixr_ 1 ["=<<"]+ ,infixr_ 0 ["$","$!","`seq`"]+ ]++-- | All fixities defined in the base package.+--+-- Note that the @+++@ operator appears in both Control.Arrows and+-- Text.ParserCombinators.ReadP. The listed precedence for @+++@ in+-- this list is that of Control.Arrows.+baseFixities :: [Fixity]+baseFixities = preludeFixities ++ concat+ [infixl_ 9 ["!","//","!:"]+ ,infixr_ 9 ["`Compose`"]+ ,infixl_ 8 ["`shift`","`rotate`","`shiftL`","`shiftR`","`rotateL`","`rotateR`"]+ ,infixl_ 7 [".&.","%"]+ ,infixr_ 6 ["<>"]+ ,infixl_ 6 ["`xor`"]+ ,infix_ 6 [":+"]+ ,infixl_ 5 [".|."]+ ,infixr_ 5 ["+:+","<++","<+>","<|"] -- fixity conflict for +++ between ReadP and Arrow+ ,infix_ 5 ["\\\\"]+ ,infixl_ 4 ["<**>","$>","<$","<$!>"]+ ,infix_ 4 ["`elemP`","`notElemP`",":~:",":~~:"]+ ,infixl_ 3 ["<|>"]+ ,infixr_ 3 ["&&&","***"]+ ,infixr_ 2 ["+++","|||"]+ ,infixr_ 1 ["<=<",">=>",">>>","<<<","^<<","<<^","^>>",">>^"]+ ,infixl_ 1 ["&"]+ ,infixl_ 0 ["`on`"]+ ,infixr_ 0 ["`par`","`pseq`"]+ ]++infixr_, infixl_, infix_ :: Int -> [String] -> [Fixity]+infixr_ = fixity assocRight+infixl_ = fixity assocLeft+infix_ = fixity assocNone++-- Internal: help function for the above definitions.+fixity :: Assoc () -> Int -> [String] -> [Fixity]+fixity a p = map (Fixity a p . op)+ where+ op ('`':xs) = UnQual () $ Ident () $ init xs+ op xs = UnQual () $ Symbol () xs+++++++++-------------------------------------------------------------------+-- Boilerplate - yuck!! Everything below here is internal stuff++instance AppFixity Module where+ applyFixities fixs (Module l mmh prs imp decls) =+ liftM (Module l mmh prs imp) $ appFixDecls mmn fixs decls+ where mmn = getMmn mmh+ getMmn (Just (ModuleHead _ n _ _)) = Just n+ getMmn _ = Nothing+ applyFixities fixs (XmlPage l mn os xn xas mexp cs) =+ liftM3 (XmlPage l mn os xn) (fix xas) (fix mexp) (fix cs)+ where fix xs = mapM (applyFixities fixs) xs+ applyFixities fixs (XmlHybrid l mmh prs imp decls xn xas mexp cs) =+ liftM4 (flip (XmlHybrid l mmh prs imp) xn) (appFixDecls mmn fixs decls)+ (fixe xas) (fixe mexp) (fixe cs)+ where mmn = getMmn mmh+ getMmn (Just (ModuleHead _ n _ _)) = Just n+ getMmn _ = Nothing+ fixe xs = let extraFixs = getFixities mmn decls+ in mapM (applyFixities (fixs++extraFixs)) xs++instance AppFixity Decl where+ applyFixities fixs decl = case decl of+ ClassDecl l ctxt dh deps cdecls -> liftM (ClassDecl l ctxt dh deps) $ mapM (mapM fix) cdecls+ InstDecl l olp ih idecls -> liftM (InstDecl l olp ih) $ mapM (mapM fix) idecls+ SpliceDecl l spl -> liftM (SpliceDecl l) $ fix spl+ FunBind l matches -> liftM (FunBind l) $ mapM fix matches+ PatBind l p rhs bs ->+ let extraFix x = applyFixities (fixs ++ maybe [] getBindFixities bs) x+ in liftM3 (PatBind l) (extraFix p) (extraFix rhs) (mapM extraFix bs)+ AnnPragma l ann' -> liftM (AnnPragma l) $ fix ann'+ PatSyn l p1 p2 dir -> liftM (PatSyn l p1 p2) (fix dir)+ _ -> return decl+ where fix x = applyFixities fixs x++instance AppFixity PatternSynDirection where+ applyFixities fixs dir = case dir of+ ExplicitBidirectional l ds -> liftM (ExplicitBidirectional l) (mapM fix ds)+ _ -> return dir+ where fix x = applyFixities fixs x++appFixDecls :: Fail.MonadFail m => Maybe (ModuleName SrcSpanInfo) -> [Fixity] -> [Decl SrcSpanInfo] -> m [Decl SrcSpanInfo]+appFixDecls mmdl fixs decls =+ let extraFixs = getFixities mmdl decls+ in mapM (applyFixities (fixs++extraFixs)) decls++getFixities :: Maybe (ModuleName l) -> [Decl l] -> [Fixity]+getFixities mmdl = concatMap (getFixity mmdl)++getFixity :: Maybe (ModuleName l) -> Decl l -> [Fixity]+getFixity mmdl d =+ case d of+ InfixDecl _ a mp ops -> let p = fromMaybe 9 mp+ in map (Fixity (scrub a) p) (concatMap g (map scrub ops))+ ClassDecl _ _ _ _ cds -> maybe [] (concatMap getClassFixity) cds+ _ -> []+ where g (VarOp _ x) = f x+ g (ConOp _ x) = f x+ f x = case mmdl of+ Nothing -> [UnQual () x]+ Just m -> [Qual () (scrub m) x, UnQual () x]+ getClassFixity (ClsDecl _ cd) = getFixity mmdl cd+ getClassFixity _ = []++scrub :: Functor f => f a -> f ()+scrub f = () <$ f++getBindFixities :: Binds l -> [Fixity]+getBindFixities bs = case bs of+ BDecls _ ds -> getFixities Nothing ds+ _ -> []++instance AppFixity Annotation where+ applyFixities fixs ann' = case ann' of+ Ann l n e -> liftM (Ann l n) $ fix e+ TypeAnn l n e -> liftM (TypeAnn l n) $ fix e+ ModuleAnn l e -> liftM (ModuleAnn l) $ fix e+ where fix x = applyFixities fixs x++instance AppFixity ClassDecl where+ applyFixities fixs (ClsDecl l decl) = liftM (ClsDecl l) $ applyFixities fixs decl+ applyFixities _ cdecl = return cdecl++instance AppFixity InstDecl where+ applyFixities fixs (InsDecl l decl) = liftM (InsDecl l) $ applyFixities fixs decl+ applyFixities _ idecl = return idecl++instance AppFixity Match where+ applyFixities fixs match = case match of+ Match l n ps rhs bs -> liftM3 (Match l n) (mapM (fix bs) ps) (fix bs rhs) (mapM (fix bs) bs)+ InfixMatch l a n ps rhs bs -> liftM4 (flip (InfixMatch l) n) (fix bs a) (mapM (fix bs) ps) (fix bs rhs) (mapM (fix bs) bs)+ where fix bs x = applyFixities fixs' x+ where fixs' = fixs ++ maybe [] getBindFixities bs++instance AppFixity Rhs where+ applyFixities fixs rhs = case rhs of+ UnGuardedRhs l e -> liftM (UnGuardedRhs l) $ fix e+ GuardedRhss l grhss -> liftM (GuardedRhss l) $ mapM fix grhss+ where fix x = applyFixities fixs x++instance AppFixity GuardedRhs where+ applyFixities fixs (GuardedRhs l stmts e) = liftM2 (GuardedRhs l) (mapM fix stmts) $ fix e+ where fix x = applyFixities fixs x++instance AppFixity PatField where+ applyFixities fixs (PFieldPat l n p) = liftM (PFieldPat l n) $ applyFixities fixs p+ applyFixities _ pf = return pf++instance AppFixity RPat where+ applyFixities fixs rp' = case rp' of+ RPOp l rp op -> liftM (flip (RPOp l) op) $ fix rp+ RPEither l a b -> liftM2 (RPEither l) (fix a) (fix b)+ RPSeq l rps -> liftM (RPSeq l) $ mapM fix rps+ RPGuard l p stmts -> liftM2 (RPGuard l) (fix p) $ mapM fix stmts+ RPCAs l n rp -> liftM (RPCAs l n) $ fix rp+ RPAs l n rp -> liftM (RPAs l n) $ fix rp+ RPParen l rp -> liftM (RPParen l) $ fix rp+ RPPat l p -> liftM (RPPat l) $ fix p+ where fix x = applyFixities fixs x++instance AppFixity PXAttr where+ applyFixities fixs (PXAttr l n p) = liftM (PXAttr l n) $ applyFixities fixs p++instance AppFixity Stmt where+ applyFixities fixs stmt = case stmt of+ Generator l p e -> liftM2 (Generator l) (fix p) (fix e)+ Qualifier l e -> liftM (Qualifier l) $ fix e+ LetStmt l bs -> liftM (LetStmt l) $ fix bs -- special behavior+ RecStmt l stmts -> liftM (RecStmt l) $ mapM fix stmts+ where fix x = applyFixities fixs x++instance AppFixity Binds where+ applyFixities fixs bs = case bs of+ BDecls l decls -> liftM (BDecls l) $ appFixDecls Nothing fixs decls -- special behavior+ IPBinds l ips -> liftM (IPBinds l) $ mapM fix ips+ where fix x = applyFixities fixs x+++instance AppFixity IPBind where+ applyFixities fixs (IPBind l n e) = liftM (IPBind l n) $ applyFixities fixs e++instance AppFixity FieldUpdate where+ applyFixities fixs (FieldUpdate l n e) = liftM (FieldUpdate l n) $ applyFixities fixs e+ applyFixities _ fup = return fup++instance AppFixity Alt where+ applyFixities fixs (Alt l p galts bs) = liftM3 (Alt l) (fix p) (fix galts) (mapM fix bs)+ where fix x = applyFixities fixs x++instance AppFixity QualStmt where+ applyFixities fixs qstmt = case qstmt of+ QualStmt l s -> liftM (QualStmt l) $ fix s+ ThenTrans l e -> liftM (ThenTrans l) $ fix e+ ThenBy l e1 e2 -> liftM2 (ThenBy l) (fix e1) (fix e2)+ GroupBy l e -> liftM (GroupBy l) (fix e)+ GroupUsing l e -> liftM (GroupUsing l) (fix e)+ GroupByUsing l e1 e2 -> liftM2 (GroupByUsing l) (fix e1) (fix e2)+ where fix x = applyFixities fixs x++instance AppFixity Bracket where+ applyFixities fixs br = case br of+ ExpBracket l e -> liftM (ExpBracket l) $ fix e+ PatBracket l p -> liftM (PatBracket l) $ fix p+ DeclBracket l ds -> liftM (DeclBracket l) $ mapM fix ds+ _ -> return br+ where fix x = applyFixities fixs x++instance AppFixity Splice where+ applyFixities fixs (ParenSplice l e) = liftM (ParenSplice l) $ applyFixities fixs e+ applyFixities _ s = return s++instance AppFixity XAttr where+ applyFixities fixs (XAttr l n e) = liftM (XAttr l n) $ applyFixities fixs e+++-- the boring boilerplate stuff for expressions too+-- Recursively fixes the "leaves" of the infix chains,+-- without yet touching the chain itself. We assume all chains are+-- left-associate to begin with.+leafFix :: Fail.MonadFail m => [Fixity] -> Exp SrcSpanInfo -> m (Exp SrcSpanInfo)+leafFix fixs e' = case e' of+ InfixApp l e1 op e2 -> liftM2 (flip (InfixApp l) op) (leafFix fixs e1) (fix e2)+ App l e1 e2 -> liftM2 (App l) (fix e1) (fix e2)+ NegApp l e -> liftM (NegApp l) $ fix e+ Lambda l pats e -> liftM2 (Lambda l) (mapM fix pats) $ fix e+ Let l bs e ->+ let extraFix x = applyFixities (fixs ++ getBindFixities bs) x+ in liftM2 (Let l) (extraFix bs) $ extraFix e+ If l e a b -> liftM3 (If l) (fix e) (fix a) (fix b)+ MultiIf l alts -> liftM (MultiIf l) (mapM fix alts)+ Case l e alts -> liftM2 (Case l) (fix e) $ mapM fix alts+ Do l stmts -> liftM (Do l) $ mapM fix stmts+ MDo l stmts -> liftM (MDo l) $ mapM fix stmts+ Tuple l bx exps -> liftM (Tuple l bx) $ mapM fix exps+ List l exps -> liftM (List l) $ mapM fix exps+ Paren l e -> liftM (Paren l) $ fix e+ LeftSection l e op -> liftM (flip (LeftSection l) op) (fix e)+ RightSection l op e -> liftM (RightSection l op) $ fix e+ RecConstr l n fups -> liftM (RecConstr l n) $ mapM fix fups+ RecUpdate l e fups -> liftM2 (RecUpdate l) (fix e) $ mapM fix fups+ EnumFrom l e -> liftM (EnumFrom l) $ fix e+ EnumFromTo l e1 e2 -> liftM2 (EnumFromTo l) (fix e1) (fix e2)+ EnumFromThen l e1 e2 -> liftM2 (EnumFromThen l) (fix e1) (fix e2)+ EnumFromThenTo l e1 e2 e3 -> liftM3 (EnumFromThenTo l) (fix e1) (fix e2) (fix e3)+ ListComp l e quals -> liftM2 (ListComp l) (fix e) $ mapM fix quals+ ParComp l e qualss -> liftM2 (ParComp l) (fix e) $ mapM (mapM fix) qualss+ ExpTypeSig l e t -> liftM (flip (ExpTypeSig l) t) (fix e)+ BracketExp l b -> liftM (BracketExp l) $ fix b+ SpliceExp l s -> liftM (SpliceExp l) $ fix s+ XTag l n ats mexp cs -> liftM3 (XTag l n) (mapM fix ats) (mapM fix mexp) (mapM fix cs)+ XETag l n ats mexp -> liftM2 (XETag l n) (mapM fix ats) (mapM fix mexp)+ XExpTag l e -> liftM (XExpTag l) $ fix e+ XChildTag l cs -> liftM (XChildTag l) $ mapM fix cs+ Proc l p e -> liftM2 (Proc l) (fix p) (fix e)+ LeftArrApp l e1 e2 -> liftM2 (LeftArrApp l) (fix e1) (fix e2)+ RightArrApp l e1 e2 -> liftM2 (RightArrApp l) (fix e1) (fix e2)+ LeftArrHighApp l e1 e2 -> liftM2 (LeftArrHighApp l) (fix e1) (fix e2)+ RightArrHighApp l e1 e2 -> liftM2 (RightArrHighApp l) (fix e1) (fix e2)+ CorePragma l s e -> liftM (CorePragma l s) (fix e)+ SCCPragma l s e -> liftM (SCCPragma l s) (fix e)+ GenPragma l s ab cd e -> liftM (GenPragma l s ab cd) (fix e)+ LCase l alts -> liftM (LCase l) $ mapM fix alts++ _ -> return e'+ where+ fix x = applyFixities fixs x++leafFixP :: Fail.MonadFail m => [Fixity] -> Pat SrcSpanInfo -> m (Pat SrcSpanInfo)+leafFixP fixs p' = case p' of+ PInfixApp l p1 op p2 -> liftM2 (flip (PInfixApp l) op) (leafFixP fixs p1) (fix p2)+ PApp l n ps -> liftM (PApp l n) $ mapM fix ps+ PTuple l bx ps -> liftM (PTuple l bx) $ mapM fix ps+ PList l ps -> liftM (PList l) $ mapM fix ps+ PParen l p -> liftM (PParen l) $ fix p+ PRec l n pfs -> liftM (PRec l n) $ mapM fix pfs+ PAsPat l n p -> liftM (PAsPat l n) $ fix p+ PIrrPat l p -> liftM (PIrrPat l) $ fix p+ PatTypeSig l p t -> liftM (flip (PatTypeSig l) t) (fix p)+ PViewPat l e p -> liftM2 (PViewPat l) (fix e) (fix p)+ PRPat l rps -> liftM (PRPat l) $ mapM fix rps+ PXTag l n ats mp ps -> liftM3 (PXTag l n) (mapM fix ats) (mapM fix mp) (mapM fix ps)+ PXETag l n ats mp -> liftM2 (PXETag l n) (mapM fix ats) (mapM fix mp)+ PXPatTag l p -> liftM (PXPatTag l) $ fix p+ PXRPats l rps -> liftM (PXRPats l) $ mapM fix rps+ PBangPat l p -> liftM (PBangPat l) $ fix p+ _ -> return p'+ where fix x = applyFixities fixs x
+ src/Language/Haskell/Exts/InternalLexer.hs view
@@ -0,0 +1,1497 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE BangPatterns #-}+{-# OPTIONS_HADDOCK hide #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Annotated.InternalLexer+-- Copyright : (c) The GHC Team, 1997-2000+-- (c) Niklas Broberg, 2004-2009+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Lexer for Haskell, with some extensions.+--+-----------------------------------------------------------------------------++-- ToDo: Introduce different tokens for decimal, octal and hexadecimal (?)+-- ToDo: FloatTok should have three parts (integer part, fraction, exponent) (?)+-- ToDo: Use a lexical analyser generator (lx?)++module Language.Haskell.Exts.InternalLexer (Token(..), showToken, lexer, topLexer) where++import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.SrcLoc hiding (loc)+import Language.Haskell.Exts.Comments+import Language.Haskell.Exts.Extension+import Language.Haskell.Exts.ExtScheme++import Prelude hiding (id, exponent)+import Data.Char+import Data.Ratio+import Data.List (intercalate, isPrefixOf)+import Control.Monad (when)++-- import Debug.Trace (trace)++data Token+ = VarId String+ | LabelVarId String+ | QVarId (String,String)+ | IDupVarId (String) -- duplicable implicit parameter+ | ILinVarId (String) -- linear implicit parameter+ | ConId String+ | QConId (String,String)+ | DVarId [String] -- to enable varid's with '-' in them+ | VarSym String+ | ConSym String+ | QVarSym (String,String)+ | QConSym (String,String)+ | IntTok (Integer, String)+ | FloatTok (Rational, String)+ | Character (Char, String)+ | StringTok (String, String)+ | IntTokHash (Integer, String) -- 1#+ | WordTokHash (Integer, String) -- 1##+ | FloatTokHash (Rational, String) -- 1.0#+ | DoubleTokHash (Rational, String) -- 1.0##+ | CharacterHash (Char, String) -- c#+ | StringHash (String, String) -- "Hello world!"#++-- Symbols++ | LeftParen+ | RightParen+ | LeftHashParen+ | RightHashParen+ | SemiColon+ | LeftCurly+ | RightCurly+ | VRightCurly -- a virtual close brace+ | LeftSquare+ | RightSquare+ | ParArrayLeftSquare -- [:+ | ParArrayRightSquare -- :]+ | Comma+ | Underscore+ | BackQuote++-- Reserved operators++ | Dot -- reserved for use with 'forall x . x'+ | DotDot+ | Colon+ | QuoteColon+ | DoubleColon+ | Equals+ | Backslash+ | Bar+ | LeftArrow+ | RightArrow+ | At+ | TApp -- '@' but have to check for preceeding whitespace+ | Tilde+ | DoubleArrow+ | Minus+ | Exclamation+ | Star+ | LeftArrowTail -- -<+ | RightArrowTail -- >-+ | LeftDblArrowTail -- -<<+ | RightDblArrowTail -- >>-+ | OpenArrowBracket -- (|+ | CloseArrowBracket -- |)++-- Template Haskell+ | THExpQuote -- [| or [e|+ | THTExpQuote -- [|| or [e||+ | THPatQuote -- [p|+ | THDecQuote -- [d|+ | THTypQuote -- [t|+ | THCloseQuote -- |]+ | THTCloseQuote -- ||]+ | THIdEscape (String) -- dollar x+ | THParenEscape -- dollar (+ | THTIdEscape String -- dollar dollar x+ | THTParenEscape -- double dollar (+ | THVarQuote -- 'x (but without the x)+ | THTyQuote -- ''T (but without the T)+ | THQuasiQuote (String,String) -- [$...|...]++-- HaRP+ | RPGuardOpen -- (|+ | RPGuardClose -- |)+ | RPCAt -- @:++-- Hsx+ | XCodeTagOpen -- <%+ | XCodeTagClose -- %>+ | XStdTagOpen -- <+ | XStdTagClose -- >+ | XCloseTagOpen -- </+ | XEmptyTagClose -- />+ | XChildTagOpen -- <%> (note that close doesn't exist, it's XCloseTagOpen followed by XCodeTagClose)+ | XPCDATA String+ | XRPatOpen -- <[+ | XRPatClose -- ]>++-- Pragmas++ | PragmaEnd -- #-}+ | RULES+ | INLINE Bool+ | INLINE_CONLIKE+ | SPECIALISE+ | SPECIALISE_INLINE Bool+ | SOURCE+ | DEPRECATED+ | WARNING+ | SCC+ | GENERATED+ | CORE+ | UNPACK+ | NOUNPACK+ | OPTIONS (Maybe String,String)+-- | CFILES String+-- | INCLUDE String+ | LANGUAGE+ | ANN+ | MINIMAL+ | NO_OVERLAP+ | OVERLAP+ | OVERLAPPING+ | OVERLAPPABLE+ | OVERLAPS+ | INCOHERENT+ | COMPLETE++-- Reserved Ids++ | KW_As+ | KW_By -- transform list comprehensions+ | KW_Case+ | KW_Class+ | KW_Data+ | KW_Default+ | KW_Deriving+ | KW_Do+ | KW_MDo+ | KW_Else+ | KW_Family -- indexed type families+ | KW_Forall -- universal/existential types+ | KW_Group -- transform list comprehensions+ | KW_Hiding+ | KW_If+ | KW_Import+ | KW_In+ | KW_Infix+ | KW_InfixL+ | KW_InfixR+ | KW_Instance+ | KW_Let+ | KW_Module+ | KW_NewType+ | KW_Of+ | KW_Proc -- arrows+ | KW_Rec -- arrows+ | KW_Role+ | KW_Then+ | KW_Type+ | KW_Using -- transform list comprehensions+ | KW_Where+ | KW_Qualified+ | KW_Pattern+ | KW_Stock+ | KW_Anyclass+ | KW_Via++ -- FFI+ | KW_Foreign+ | KW_Export+ | KW_Safe+ | KW_Unsafe+ | KW_Threadsafe+ | KW_Interruptible+ | KW_StdCall+ | KW_CCall+ | KW_CPlusPlus+ | KW_DotNet+ | KW_Jvm+ | KW_Js+ | KW_JavaScript+ | KW_CApi++ | EOF+ deriving (Eq,Show)++reserved_ops :: [(String,(Token, Maybe ExtScheme))]+reserved_ops = [+ ( "..", (DotDot, Nothing) ),+ ( ":", (Colon, Nothing) ),+ ( "::", (DoubleColon, Nothing) ),+ ( "=", (Equals, Nothing) ),+ ( "\\", (Backslash, Nothing) ),+ ( "|", (Bar, Nothing) ),+ ( "<-", (LeftArrow, Nothing) ),+ ( "->", (RightArrow, Nothing) ),+ ( "@", (At, Nothing) ),+ ( "@:", (RPCAt, Just (Any [RegularPatterns])) ),+ ( "~", (Tilde, Nothing) ),+ ( "=>", (DoubleArrow, Nothing) ),+ ( "*", (Star, Just (Any [KindSignatures])) ),+ -- Parallel arrays+ ( "[:", (ParArrayLeftSquare, Just (Any [ParallelArrays])) ),+ ( ":]", (ParArrayRightSquare, Just (Any [ParallelArrays])) ),+ -- Arrows notation+ ( "-<", (LeftArrowTail, Just (Any [Arrows])) ),+ ( ">-", (RightArrowTail, Just (Any [Arrows])) ),+ ( "-<<", (LeftDblArrowTail, Just (Any [Arrows])) ),+ ( ">>-", (RightDblArrowTail, Just (Any [Arrows])) ),+ -- Unicode notation+ ( "\x2190", (LeftArrow, Just (Any [UnicodeSyntax])) ),+ ( "\x2192", (RightArrow, Just (Any [UnicodeSyntax])) ),+ ( "\x21d2", (DoubleArrow, Just (Any [UnicodeSyntax])) ),+ ( "\x2237", (DoubleColon, Just (Any [UnicodeSyntax])) ),+ ( "\x2919", (LeftArrowTail, Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x291a", (RightArrowTail, Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x291b", (LeftDblArrowTail, Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x291c", (RightDblArrowTail, Just (All [UnicodeSyntax, Arrows])) ),+ ( "\x2605", (Star, Just (All [UnicodeSyntax, KindSignatures])) ),+ ( "\x2200", (KW_Forall, Just (All [UnicodeSyntax, ExplicitForAll])) )+ ]++special_varops :: [(String,(Token, Maybe ExtScheme))]+special_varops = [+ -- the dot is only a special symbol together with forall, but can still be used as function composition+ ( ".", (Dot, Just (Any [ExplicitForAll, ExistentialQuantification])) ),+ ( "-", (Minus, Nothing) ),+ ( "!", (Exclamation, Nothing) )+ ]++reserved_ids :: [(String,(Token, Maybe ExtScheme))]+reserved_ids = [+ ( "_", (Underscore, Nothing) ),+ ( "by", (KW_By, Just (Any [TransformListComp])) ),+ ( "case", (KW_Case, Nothing) ),+ ( "class", (KW_Class, Nothing) ),+ ( "data", (KW_Data, Nothing) ),+ ( "default", (KW_Default, Nothing) ),+ ( "deriving", (KW_Deriving, Nothing) ),+ ( "do", (KW_Do, Nothing) ),+ ( "else", (KW_Else, Nothing) ),+ ( "family", (KW_Family, Just (Any [TypeFamilies])) ), -- indexed type families+ ( "forall", (KW_Forall, Just (Any [ExplicitForAll, ExistentialQuantification])) ), -- universal/existential quantification+ ( "group", (KW_Group, Just (Any [TransformListComp])) ),+ ( "if", (KW_If, Nothing) ),+ ( "import", (KW_Import, Nothing) ),+ ( "in", (KW_In, Nothing) ),+ ( "infix", (KW_Infix, Nothing) ),+ ( "infixl", (KW_InfixL, Nothing) ),+ ( "infixr", (KW_InfixR, Nothing) ),+ ( "instance", (KW_Instance, Nothing) ),+ ( "let", (KW_Let, Nothing) ),+ ( "mdo", (KW_MDo, Just (Any [RecursiveDo])) ),+ ( "module", (KW_Module, Nothing) ),+ ( "newtype", (KW_NewType, Nothing) ),+ ( "of", (KW_Of, Nothing) ),+ ( "proc", (KW_Proc, Just (Any [Arrows])) ),+ ( "rec", (KW_Rec, Just (Any [Arrows, RecursiveDo, DoRec])) ),+ ( "then", (KW_Then, Nothing) ),+ ( "type", (KW_Type, Nothing) ),+ ( "using", (KW_Using, Just (Any [TransformListComp])) ),+ ( "where", (KW_Where, Nothing) ),+ ( "role", (KW_Role, Just (Any [RoleAnnotations]))),+ ( "pattern", (KW_Pattern, Just (Any [PatternSynonyms]))),+ ( "stock", (KW_Stock, Just (Any [DerivingStrategies]))),+ ( "anyclass", (KW_Anyclass, Just (Any [DerivingStrategies]))),+ ( "via", (KW_Via, Just (Any [DerivingVia]))),++-- FFI+ ( "foreign", (KW_Foreign, Just (Any [ForeignFunctionInterface])) )+ ]+++special_varids :: [(String,(Token, Maybe ExtScheme))]+special_varids = [+ ( "as", (KW_As, Nothing) ),+ ( "qualified", (KW_Qualified, Nothing) ),+ ( "hiding", (KW_Hiding, Nothing) ),++-- FFI+ ( "export", (KW_Export, Just (Any [ForeignFunctionInterface])) ),+ ( "safe", (KW_Safe, Just (Any [ForeignFunctionInterface, SafeImports, Safe, Trustworthy])) ),+ ( "unsafe", (KW_Unsafe, Just (Any [ForeignFunctionInterface])) ),+ ( "threadsafe", (KW_Threadsafe, Just (Any [ForeignFunctionInterface])) ),+ ( "interruptible", (KW_Interruptible, Just (Any [InterruptibleFFI])) ),+ ( "stdcall", (KW_StdCall, Just (Any [ForeignFunctionInterface])) ),+ ( "ccall", (KW_CCall, Just (Any [ForeignFunctionInterface])) ),+ ( "cplusplus", (KW_CPlusPlus, Just (Any [ForeignFunctionInterface])) ),+ ( "dotnet", (KW_DotNet, Just (Any [ForeignFunctionInterface])) ),+ ( "jvm", (KW_Jvm, Just (Any [ForeignFunctionInterface])) ),+ ( "js", (KW_Js, Just (Any [ForeignFunctionInterface])) ),+ ( "javascript", (KW_JavaScript, Just (Any [ForeignFunctionInterface])) ),+ ( "capi", (KW_CApi, Just (Any [CApiFFI])) )+ ]++pragmas :: [(String,Token)]+pragmas = [+ ( "rules", RULES ),+ ( "inline", INLINE True ),+ ( "noinline", INLINE False ),+ ( "notinline", INLINE False ),+ ( "specialise", SPECIALISE ),+ ( "specialize", SPECIALISE ),+ ( "source", SOURCE ),+ ( "deprecated", DEPRECATED ),+ ( "warning", WARNING ),+ ( "ann", ANN ),+ ( "scc", SCC ),+ ( "generated", GENERATED ),+ ( "core", CORE ),+ ( "unpack", UNPACK ),+ ( "nounpack", NOUNPACK ),+ ( "language", LANGUAGE ),+ ( "minimal", MINIMAL ),+ ( "no_overlap", NO_OVERLAP ),+ ( "overlap", OVERLAP ),+ ( "overlaps", OVERLAPS ),+ ( "overlapping", OVERLAPPING ),+ ( "overlappable", OVERLAPPABLE ),+ ( "incoherent", INCOHERENT ),+ ( "complete", COMPLETE ),+ ( "options", OPTIONS undefined ) -- we'll tweak it before use - promise!+-- ( "cfiles", CFILES undefined ), -- same here...+-- ( "include", INCLUDE undefined ) -- ...and here!+ ]++isIdent, isHSymbol, isPragmaChar :: Char -> Bool+isIdent c = isAlphaNum c || c == '\'' || c == '_'++isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'"))++isPragmaChar c = isAlphaNum c || c == '_'++isIdentStart :: Char -> Bool+isIdentStart c = isAlpha c && not (isUpper c) || c == '_'+++-- Used in the lexing of type applications+-- Why is it like this? I don't know exactly but this is how it is in+-- GHC's parser.+-- Symbol `:` is added so that `@:` is lexed as `VarSym "@:"`. See Issue #326+isOpSymbol :: Char -> Bool+isOpSymbol c = c `elem` ":!#$%&*+./<=>?@\\^|-~"++-- | Checks whether the character would be legal in some position of a qvar.+-- Means that '..' and "AAA" will pass the test.+isPossiblyQvar :: Char -> Bool+isPossiblyQvar c = isIdent (toLower c) || c == '.'++matchChar :: Char -> String -> Lex a ()+matchChar c msg = do+ s <- getInput+ if null s || head s /= c then fail msg else discard 1++-- The top-level lexer.+-- We need to know whether we are at the beginning of the line to decide+-- whether to insert layout tokens.++lexer :: (Loc Token -> P a) -> P a+lexer = runL topLexer++topLexer :: Lex a (Loc Token)+topLexer = do+ b <- pullCtxtFlag+ if b then -- trace (show cf ++ ": " ++ show VRightCurly) $+ -- the lex context state flags that we must do an empty {} - UGLY+ setBOL >> getSrcLocL >>= \l -> return (Loc (mkSrcSpan l l) VRightCurly)+ else do+ bol <- checkBOL+ (bol', ws) <- lexWhiteSpace bol+ -- take care of whitespace in PCDATA+ ec <- getExtContext+ case ec of+ -- if there was no linebreak, and we are lexing PCDATA,+ -- then we want to care about the whitespace.+ -- We don't bother to test for XmlSyntax, since we+ -- couldn't end up in ChildCtxt otherwise.+ Just ChildCtxt | not bol' && ws -> getSrcLocL >>= \l -> return $ Loc (mkSrcSpan l l) $ XPCDATA " "+ _ -> do startToken+ sl <- getSrcLocL+ t <- if bol' then lexBOL -- >>= \t -> trace ("BOL: " ++ show t) (return t)+ else lexToken -- >>= \t -> trace (show t) (return t)+ el <- getSrcLocL+ return $ Loc (mkSrcSpan sl el) t++lexWhiteSpace :: Bool -> Lex a (Bool, Bool)+lexWhiteSpace bol = do+ s <- getInput+ ignL <- ignoreLinePragmasL+ case s of+ -- If we find a recognised pragma, we don't want to treat it as a comment.+ '{':'-':'#':rest | isRecognisedPragma rest -> return (bol, False)+ | isLinePragma rest && not ignL -> do+ (l, fn) <- lexLinePragma+ setSrcLineL l+ setLineFilenameL fn+ lexWhiteSpace True+ '{':'-':_ -> do+ loc <- getSrcLocL+ discard 2+ (bol1, c) <- lexNestedComment bol ""+ loc2 <- getSrcLocL+ pushComment $ Comment True (mkSrcSpan loc loc2) (reverse c)+ (bol2, _) <- lexWhiteSpace bol1+ return (bol2, True)+ '-':'-':s1 | all (== '-') (takeWhile isHSymbol s1) -> do+ loc <- getSrcLocL+ discard 2+ dashes <- lexWhile (== '-')+ rest <- lexWhile (/= '\n')+ s' <- getInput+ loc2 <- getSrcLocL+ let com = Comment False (mkSrcSpan loc loc2) $ dashes ++ rest+ case s' of+ [] -> pushComment com >> return (False, True)+ _ -> do+ pushComment com+ lexNewline+ lexWhiteSpace_ True+ return (True, True)+ '\n':_ -> do+ lexNewline+ lexWhiteSpace_ True+ return (True, True)+ '\t':_ -> do+ lexTab+ (bol', _) <- lexWhiteSpace bol+ return (bol', True)+ c:_ | isSpace c -> do+ discard 1+ (bol', _) <- lexWhiteSpace bol+ return (bol', True)+ _ -> return (bol, False)++-- | lexWhiteSpace without the return value.+lexWhiteSpace_ :: Bool -> Lex a ()+lexWhiteSpace_ bol = do _ <- lexWhiteSpace bol+ return ()++isRecognisedPragma, isLinePragma :: String -> Bool+isRecognisedPragma str = let pragma = takeWhile isPragmaChar . dropWhile isSpace $ str+ in case lookupKnownPragma pragma of+ Nothing -> False+ _ -> True++isLinePragma str = let pragma = map toLower . takeWhile isAlphaNum . dropWhile isSpace $ str+ in case pragma of+ "line" -> True+ _ -> False++lexLinePragma :: Lex a (Int, String)+lexLinePragma = do+ discard 3 -- {-#+ lexWhile_ isSpace+ discard 4 -- LINE+ lexWhile_ isSpace+ i <- lexWhile isDigit+ when (null i) $ fail "Improperly formatted LINE pragma"+ lexWhile_ isSpace+ matchChar '"' "Improperly formatted LINE pragma"+ fn <- lexWhile (/= '"')+ matchChar '"' "Impossible - lexLinePragma"+ lexWhile_ isSpace+ mapM_ (flip matchChar "Improperly formatted LINE pragma") "#-}"+ lexNewline+ return (read i, fn)++lexNestedComment :: Bool -> String -> Lex a (Bool, String)+lexNestedComment bol str = do+ s <- getInput+ case s of+ '-':'}':_ -> discard 2 >> return (bol, str)+ '{':'-':_ -> do+ discard 2+ (bol', c) <- lexNestedComment bol ("-{" ++ str) -- rest of the subcomment+ lexNestedComment bol' ("}-" ++ c ) -- rest of this comment+ '\t':_ -> lexTab >> lexNestedComment bol ('\t':str)+ '\n':_ -> lexNewline >> lexNestedComment True ('\n':str)+ c:_ -> discard 1 >> lexNestedComment bol (c:str)+ [] -> fail "Unterminated nested comment"++-- When we are lexing the first token of a line, check whether we need to+-- insert virtual semicolons or close braces due to layout.++lexBOL :: Lex a Token+lexBOL = do+ pos <- getOffside+ -- trace ("Off: " ++ (show pos)) $ do+ case pos of+ LT -> do+ -- trace "layout: inserting '}'\n" $+ -- Set col to 0, indicating that we're still at the+ -- beginning of the line, in case we need a semi-colon too.+ -- Also pop the context here, so that we don't insert+ -- another close brace before the parser can pop it.+ setBOL+ popContextL "lexBOL"+ return VRightCurly+ EQ ->+ -- trace "layout: inserting ';'\n" $+ return SemiColon+ GT -> lexToken++lexToken :: Lex a Token+lexToken = do+ ec <- getExtContext+ -- we don't bother to check XmlSyntax since we couldn't+ -- have ended up in a non-Nothing context if it wasn't+ -- enabled.+ case ec of+ Just HarpCtxt -> lexHarpToken+ Just TagCtxt -> lexTagCtxt+ Just CloseTagCtxt -> lexCloseTagCtxt+ Just ChildCtxt -> lexChildCtxt+ Just CodeTagCtxt -> lexCodeTagCtxt+ _ -> lexStdToken+++lexChildCtxt :: Lex a Token+lexChildCtxt = do+ -- if we ever end up here, then XmlSyntax must be on.+ s <- getInput+ case s of+ '<':'%':'>':_ -> do discard 3+ pushExtContextL ChildCtxt+ return XChildTagOpen+ '<':'%':_ -> do discard 2+ pushExtContextL CodeTagCtxt+ return XCodeTagOpen+ '<':'/':_ -> do discard 2+ popExtContextL "lexChildCtxt"+ pushExtContextL CloseTagCtxt+ return XCloseTagOpen+ '<':'[':_ -> do discard 2+ pushExtContextL HarpCtxt+ return XRPatOpen+ '<':_ -> do discard 1+ pushExtContextL TagCtxt+ return XStdTagOpen+ _ -> lexPCDATA+++lexPCDATA :: Lex a Token+lexPCDATA = do+ -- if we ever end up here, then XmlSyntax must be on.+ s <- getInput+ case s of+ [] -> return EOF+ _ -> case s of+ '\n':_ -> do+ x <- lexNewline >> lexPCDATA+ case x of+ XPCDATA p -> return $ XPCDATA $ '\n':p+ EOF -> return EOF+ _ -> fail $ "lexPCDATA: unexpected token: " ++ show x+ '<':_ -> return $ XPCDATA ""+ _ -> do let pcd = takeWhile (\c -> c `notElem` "<\n") s+ l = length pcd+ discard l+ x <- lexPCDATA+ case x of+ XPCDATA pcd' -> return $ XPCDATA $ pcd ++ pcd'+ EOF -> return EOF+ _ -> fail $ "lexPCDATA: unexpected token: " ++ show x+++lexCodeTagCtxt :: Lex a Token+lexCodeTagCtxt = do+ -- if we ever end up here, then XmlSyntax must be on.+ s <- getInput+ case s of+ '%':'>':_ -> do discard 2+ popExtContextL "lexCodeTagContext"+ return XCodeTagClose+ _ -> lexStdToken++lexCloseTagCtxt :: Lex a Token+lexCloseTagCtxt = do+ -- if we ever end up here, then XmlSyntax must be on.+ s <- getInput+ case s of+ '%':'>':_ -> do discard 2+ popExtContextL "lexCloseTagCtxt"+ return XCodeTagClose+ '>':_ -> do discard 1+ popExtContextL "lexCloseTagCtxt"+ return XStdTagClose+ _ -> lexStdToken++lexTagCtxt :: Lex a Token+lexTagCtxt = do+ -- if we ever end up here, then XmlSyntax must be on.+ s <- getInput+ case s of+ '/':'>':_ -> do discard 2+ popExtContextL "lexTagCtxt: Empty tag"+ return XEmptyTagClose+ '>':_ -> do discard 1+ popExtContextL "lexTagCtxt: Standard tag"+ pushExtContextL ChildCtxt+ return XStdTagClose+ _ -> lexStdToken++lexHarpToken :: Lex a Token+lexHarpToken = do+ -- if we ever end up here, then RegularPatterns must be on.+ s <- getInput+ case s of+ ']':'>':_ -> do discard 2+ popExtContextL "lexHarpToken"+ return XRPatClose+ _ -> lexStdToken++lexStdToken :: Lex a Token+lexStdToken = do+ s <- getInput+ exts <- getExtensionsL+ let intHash = lexHash IntTok IntTokHash (Right WordTokHash)+ case s of+ [] -> return EOF++ '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do+ discard 2+ (n, str) <- lexOctal+ con <- intHash+ return (con (n, '0':c:str))+ | toLower c == 'b' && isBinDigit d && BinaryLiterals `elem` exts -> do+ discard 2+ (n, str) <- lexBinary+ con <- intHash+ return (con (n, '0':c:str))+ | toLower c == 'x' && isHexDigit d -> do+ discard 2+ (n, str) <- lexHexadecimal+ con <- intHash+ return (con (n, '0':c:str))++ -- implicit parameters+ '?':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do+ discard 1+ id <- lexWhile isIdent+ return $ IDupVarId id++ '%':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do+ discard 1+ id <- lexWhile isIdent+ return $ ILinVarId id+ -- end implicit parameters++ -- harp+ '(':'|':c:_ | RegularPatterns `elem` exts && not (isHSymbol c) ->+ 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+ return RPCAt -}+++ -- template haskell+ '[':'|':'|':_ | TemplateHaskell `elem` exts -> do+ discard 3+ return THTExpQuote++ '[':'e':'|':'|':_ | TemplateHaskell `elem` exts -> do+ discard 4+ return THTExpQuote++ '[':'|':_ | TemplateHaskell `elem` exts -> do+ discard 2+ return THExpQuote++ '[':c:'|':_ | c == 'e' && TemplateHaskell `elem` exts -> do+ discard 3+ return THExpQuote+ | c == 'p' && TemplateHaskell `elem` exts -> do+ discard 3+ return THPatQuote+ | c == 'd' && TemplateHaskell `elem` exts -> do+ discard 3+ return THDecQuote+ | c == 't' && TemplateHaskell `elem` exts -> do+ discard 3+ return THTypQuote+ '[':'$':c:_ | isIdentStart c && QuasiQuotes `elem` exts ->+ discard 2 >> lexQuasiQuote c++ '[':c:s' | isIdentStart c && QuasiQuotes `elem` exts && case dropWhile isIdent s' of { '|':_ -> True;_->False} ->+ discard 1 >> lexQuasiQuote c+ | isUpper c && QuasiQuotes `elem` exts && case dropWhile isPossiblyQvar s' of { '|':_ -> True;_->False} ->+ discard 1 >> lexQuasiQuote c++ '|':'|':']':_ | TemplateHaskell `elem` exts -> do+ discard 3+ return THTCloseQuote+ '|':']':_ | TemplateHaskell `elem` exts -> do+ discard 2+ return THCloseQuote++ '$':c1:c2:_ | isIdentStart c1 && TemplateHaskell `elem` exts -> do+ discard 1+ id <- lexWhile isIdent+ return $ THIdEscape id+ | c1 == '(' && TemplateHaskell `elem` exts -> do+ discard 2+ return THParenEscape+ | c1 == '$' && isIdentStart c2 && TemplateHaskell `elem` exts -> do+ discard 2+ id <- lexWhile isIdent+ return $ THTIdEscape id+ | c1 == '$' && c2 == '(' && TemplateHaskell `elem` exts -> do+ discard 3+ return THTParenEscape+ -- end template haskell++ -- hsx+ '<':'%':c:_ | XmlSyntax `elem` exts ->+ case c of+ '>' -> do discard 3+ pushExtContextL ChildCtxt+ return XChildTagOpen+ _ -> do discard 2+ pushExtContextL CodeTagCtxt+ return XCodeTagOpen+ '<':c:_ | isAlpha c && XmlSyntax `elem` exts -> do+ discard 1+ pushExtContextL TagCtxt+ return XStdTagOpen+ -- end hsx++ '(':'#':c:_ | unboxed exts && not (isHSymbol c) -> discard 2 >> return LeftHashParen++ '#':')':_ | unboxed exts -> discard 2 >> return RightHashParen++ -- pragmas++ '{':'-':'#':_ -> saveExtensionsL >> discard 3 >> lexPragmaStart++ '#':'-':'}':_ -> restoreExtensionsL >> discard 3 >> return PragmaEnd++ -- Parallel arrays++ '[':':':_ | ParallelArrays `elem` exts -> discard 2 >> return ParArrayLeftSquare++ ':':']':_ | ParallelArrays `elem` exts -> discard 2 >> return ParArrayRightSquare++ -- Lexed seperately to deal with visible type applciation++ '@':c:_ | TypeApplications `elem` exts+ -- Operator starting with an '@'+ && not (isOpSymbol c) -> do+ lc <- getLastChar+ if isIdent lc+ then discard 1 >> return At+ else discard 1 >> return TApp++ '#':c:_ | OverloadedLabels `elem` exts+ && isIdentStart c -> do+ discard 1+ [ident] <- lexIdents+ return $ LabelVarId ident+++ c:_ | isDigit c -> lexDecimalOrFloat++ | isUpper c -> lexConIdOrQual ""++ | isIdentStart c -> do+ idents <- lexIdents+ case idents of+ [ident] -> case lookup ident (reserved_ids ++ special_varids) of+ Just (keyword, scheme) ->+ -- check if an extension keyword is enabled+ if isEnabled scheme exts+ then flagKW keyword >> return keyword+ else return $ VarId ident+ Nothing -> return $ VarId ident+ _ -> return $ DVarId idents++ | isHSymbol c -> do+ sym <- lexWhile isHSymbol+ return $ case lookup sym (reserved_ops ++ special_varops) of+ Just (t , scheme) ->+ -- check if an extension op is enabled+ if isEnabled scheme exts+ then t+ else case c of+ ':' -> ConSym sym+ _ -> VarSym sym+ Nothing -> case c of+ ':' -> ConSym sym+ _ -> VarSym sym++ | otherwise -> do+ discard 1+ case c of++ -- First the special symbols+ '(' -> return LeftParen+ ')' -> return RightParen+ ',' -> return Comma+ ';' -> return SemiColon+ '[' -> return LeftSquare+ ']' -> return RightSquare+ '`' -> return BackQuote+ '{' -> do+ pushContextL NoLayout+ return LeftCurly+ '}' -> do+ popContextL "lexStdToken"+ return RightCurly++ '\'' -> lexCharacter+ '"' -> lexString++ _ -> fail ("Illegal character \'" ++ show c ++ "\'\n")++ where lexIdents :: Lex a [String]+ lexIdents = do+ ident <- lexWhile isIdent+ s <- getInput+ exts <- getExtensionsL+ case s of+ -- This is the only way we can get more than one ident in the list+ -- and it requires XmlSyntax to be on.+ '-':c:_ | XmlSyntax `elem` exts && isAlpha c -> do+ discard 1+ idents <- lexIdents+ return $ ident : idents+ '#':_ | MagicHash `elem` exts -> do+ hashes <- lexWhile (== '#')+ return [ident ++ hashes]+ _ -> return [ident]++ lexQuasiQuote :: Char -> Lex a Token+ lexQuasiQuote c = do+ -- We've seen and dropped [$ already+ ident <- lexQuoter+ matchChar '|' "Malformed quasi-quote quoter"+ body <- lexQQBody+ return $ THQuasiQuote (ident, body)+ where lexQuoter+ | isIdentStart c = lexWhile isIdent+ | otherwise = do+ qualThing <- lexConIdOrQual ""+ case qualThing of+ QVarId (s1,s2) -> return $ s1 ++ '.':s2+ QVarSym (s1, s2) -> return $ s1 ++ '.':s2+ _ -> fail "Malformed quasi-quote quoter"++ lexQQBody :: Lex a String+ lexQQBody = do+ s <- getInput+ case s of+ '\\':']':_ -> do discard 2+ str <- lexQQBody+ return (']':str)+ '\\':'|':_ -> do discard 2+ str <- lexQQBody+ return ('|':str)+ '|':']':_ -> discard 2 >> return ""+ '|':_ -> do discard 1+ str <- lexQQBody+ return ('|':str)+ ']':_ -> do discard 1+ str <- lexQQBody+ return (']':str)+ '\\':_ -> do discard 1+ str <- lexQQBody+ return ('\\':str)+ '\n':_ -> do lexNewline+ str <- lexQQBody+ return ('\n':str)+ [] -> fail "Unexpected end of input while lexing quasi-quoter"+ _ -> do str <- lexWhile (not . (`elem` "\\|\n"))+ rest <- lexQQBody+ return (str++rest)++unboxed :: [KnownExtension] -> Bool+unboxed exts = UnboxedSums `elem` exts || UnboxedTuples `elem` exts++-- Underscores are used in some pragmas. Options pragmas are a special case+-- with our representation: the thing after the underscore is a parameter.+-- Strip off the parameters to option pragmas by hand here, everything else+-- sits in the pragmas map.+lookupKnownPragma :: String -> Maybe Token+lookupKnownPragma s =+ case map toLower s of+ x | "options_" `isPrefixOf` x -> Just $ OPTIONS (Just $ drop 8 s, undefined)+ | "options" == x -> Just $ OPTIONS (Nothing, undefined)+ | otherwise -> lookup x pragmas++lexPragmaStart :: Lex a Token+lexPragmaStart = do+ lexWhile_ isSpace+ pr <- lexWhile isPragmaChar+ case lookupKnownPragma pr of+ Just (INLINE True) -> do+ s <- getInput+ case map toLower s of+ ' ':'c':'o':'n':'l':'i':'k':'e':_ -> do+ discard 8+ return INLINE_CONLIKE+ _ -> return $ INLINE True+ Just SPECIALISE -> do+ s <- getInput+ case dropWhile isSpace $ map toLower s of+ 'i':'n':'l':'i':'n':'e':_ -> do+ lexWhile_ isSpace+ discard 6+ return $ SPECIALISE_INLINE True+ 'n':'o':'i':'n':'l':'i':'n':'e':_ -> do+ lexWhile_ isSpace+ discard 8+ return $ SPECIALISE_INLINE False+ 'n':'o':'t':'i':'n':'l':'i':'n':'e':_ -> do+ lexWhile_ isSpace+ discard 9+ return $ SPECIALISE_INLINE False+ _ -> return SPECIALISE++ Just (OPTIONS opt) -> -- see, I promised we'd mask out the 'undefined'+ -- We do not want to store necessary whitespace in the datatype+ -- but if the pragma starts with a newline then we must keep+ -- it to differentiate the two cases.+ let dropIfSpace (' ':xs) = xs+ dropIfSpace xs = xs+ in+ case fst opt of+ Just opt' -> do+ rest <- lexRawPragma+ return $ OPTIONS (Just opt', dropIfSpace rest)+ Nothing -> do+ s <- getInput+ case s of+ x:_ | isSpace x -> do+ rest <- lexRawPragma+ return $ OPTIONS (Nothing, dropIfSpace rest)+ _ -> fail "Malformed Options pragma"+ Just RULES -> do -- Rules enable ScopedTypeVariables locally.+ addExtensionL ScopedTypeVariables+ return RULES+{- Just (CFILES _) -> do+ rest <- lexRawPragma+ return $ CFILES rest+ Just (INCLUDE _) -> do+ rest <- lexRawPragma+ return $ INCLUDE rest -}+ Just p -> return p++ _ -> fail "Internal error: Unrecognised recognised pragma"+ -- do rawStr <- lexRawPragma+ -- return $ PragmaUnknown (pr, rawStr) -- no support for unrecognized pragmas, treat as comment+ -- discard 3 -- #-}+ -- topLexer -- we just discard it as a comment for now and restart -}++lexRawPragma :: Lex a String+lexRawPragma = lexRawPragmaAux+ where lexRawPragmaAux = do+ rpr <- lexWhile (/='#')+ s <- getInput+ case s of+ '#':'-':'}':_ -> return rpr+ "" -> fail "End-of-file inside pragma"+ _ -> do+ discard 1+ rpr' <- lexRawPragma+ return $ rpr ++ '#':rpr'++lexDecimalOrFloat :: Lex a Token+lexDecimalOrFloat = do+ ds <- lexWhile isDigit+ rest <- getInput+ exts <- getExtensionsL+ case rest of+ ('.':d:_) | isDigit d -> do+ discard 1+ frac <- lexWhile isDigit+ let num = parseInteger 10 (ds ++ frac)+ decimals = toInteger (length frac)+ (exponent, estr) <- do+ rest2 <- getInput+ case rest2 of+ 'e':_ -> lexExponent+ 'E':_ -> lexExponent+ _ -> return (0,"")+ con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)+ return $ con ((num%1) * 10^^(exponent - decimals), ds ++ '.':frac ++ estr)+ e:_ | toLower e == 'e' -> do+ (exponent, estr) <- lexExponent+ con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)+ return $ con ((parseInteger 10 ds%1) * 10^^exponent, ds ++ estr)+ '#':'#':_ | MagicHash `elem` exts -> discard 2 >> return (WordTokHash (parseInteger 10 ds, ds))+ '#':_ | MagicHash `elem` exts -> discard 1 >> return (IntTokHash (parseInteger 10 ds, ds))+ _ -> return (IntTok (parseInteger 10 ds, ds))++ where+ lexExponent :: Lex a (Integer, String)+ lexExponent = do+ (e:r) <- getInput+ discard 1 -- 'e' or 'E'+ case r of+ '+':d:_ | isDigit d -> do+ discard 1+ (n, str) <- lexDecimal+ return (n, e:'+':str)+ '-':d:_ | isDigit d -> do+ discard 1+ (n, str) <- lexDecimal+ return (negate n, e:'-':str)+ d:_ | isDigit d -> lexDecimal >>= \(n,str) -> return (n, e:str)+ _ -> fail "Float with missing exponent"++lexHash :: (b -> Token) -> (b -> Token) -> Either String (b -> Token) -> Lex a (b -> Token)+lexHash a b c = do+ exts <- getExtensionsL+ if MagicHash `elem` exts+ then do+ r <- getInput+ case r of+ '#':'#':_ -> case c of+ Right c' -> discard 2 >> return c'+ Left s -> fail s+ '#':_ -> discard 1 >> return b+ _ -> return a+ else return a++lexConIdOrQual :: String -> Lex a Token+lexConIdOrQual qual = do+ con <- lexWhile isIdent+ let conid | null qual = ConId con+ | otherwise = QConId (qual,con)+ qual' | null qual = con+ | otherwise = qual ++ '.':con+ just_a_conid <- alternative (return conid)+ rest <- getInput+ exts <- getExtensionsL+ case rest of+ '.':c:_+ | isIdentStart c -> do -- qualified varid?+ discard 1+ ident <- lexWhile isIdent+ s <- getInput+ exts' <- getExtensionsL+ ident' <- case s of+ '#':_ | MagicHash `elem` exts' -> discard 1 >> return (ident ++ "#")+ _ -> return ident+ case lookup ident' reserved_ids of+ -- cannot qualify a reserved word+ Just (_,scheme) | isEnabled scheme exts' -> just_a_conid+ _ -> return (QVarId (qual', ident'))++ | isUpper c -> do -- qualified conid?+ discard 1+ lexConIdOrQual qual'++ | isHSymbol c -> do -- qualified symbol?+ discard 1+ sym <- lexWhile isHSymbol+ exts' <- getExtensionsL+ case lookup sym reserved_ops of+ -- cannot qualify a reserved operator+ Just (_,scheme) | isEnabled scheme exts' -> just_a_conid+ _ -> return $ case c of+ ':' -> QConSym (qual', sym)+ _ -> QVarSym (qual', sym)++ '#':cs+ | null cs ||+ not (isHSymbol $ head cs) &&+ not (isIdent $ head cs) && MagicHash `elem` exts -> do+ discard 1+ case conid of+ ConId con' -> return $ ConId $ con' ++ "#"+ QConId (q,con') -> return $ QConId (q,con' ++ "#")+ _ -> fail $ "lexConIdOrQual: unexpected token: " ++ show conid+ _ -> return conid -- not a qualified thing++lexCharacter :: Lex a Token+lexCharacter = do -- We need to keep track of not only character constants but also TH 'x and ''T+ -- We've seen ' so far+ s <- getInput+ exts <- getExtensionsL+ case s of+ '\'':_ | TemplateHaskell `elem` exts -> discard 1 >> return THTyQuote+ '\\':_ -> do+ (c,raw) <- lexEscape+ matchQuote+ con <- lexHash Character CharacterHash+ (Left "Double hash not available for character literals")+ return (con (c, '\\':raw))+ c:'\'':_ -> do+ discard 2+ con <- lexHash Character CharacterHash+ (Left "Double hash not available for character literals")+ return (con (c, [c]))+ _ | any (`elem` exts) [TemplateHaskell, DataKinds] -> return THVarQuote+ _ -> fail "Improper character constant or misplaced \'"++ where matchQuote = matchChar '\'' "Improperly terminated character constant"+++lexString :: Lex a Token+lexString = loop [] []+ where+ loop !s !raw = do+ r <- getInput+ exts <- getExtensionsL+ case r of+ '\\':'&':_ -> do+ discard 2+ loop s ('&':'\\':raw)+ '\\':c:_ | isSpace c -> do+ discard 1+ wcs <- lexWhiteChars+ matchChar '\\' "Illegal character in string gap"+ loop s ('\\':revAppend wcs ('\\':raw))+ | otherwise -> do+ (ce, str) <- lexEscape+ loop (ce `seq` ce : s) (revAppend str ('\\':raw))+ '"':'#':_ | MagicHash `elem` exts -> do+ discard 2+ return (StringHash (reverse s, reverse raw))+ '"':_ -> do+ discard 1+ return (StringTok (reverse s, reverse raw))+ c:_ | c /= '\n' -> do+ discard 1+ loop (c:s) (c:raw)+ _ -> fail "Improperly terminated string"++ revAppend :: [a] -> [a] -> [a]+ revAppend [] ys = ys+ revAppend (x:xs) ys = revAppend xs (x:ys)++ lexWhiteChars :: Lex a String+ lexWhiteChars = do+ s <- getInput+ case s of+ '\n':_ -> do+ lexNewline+ wcs <- lexWhiteChars+ return $ '\n':wcs+ '\t':_ -> do+ lexTab+ wcs <- lexWhiteChars+ return $ '\t':wcs+ c:_ | isSpace c -> do+ discard 1+ wcs <- lexWhiteChars+ return $ c:wcs+ _ -> return ""++lexEscape :: Lex a (Char, String)+lexEscape = do+ discard 1+ r <- getInput+ case r of++-- Production charesc from section B.2 (Note: \& is handled by caller)++ 'a':_ -> discard 1 >> return ('\a', "a")+ 'b':_ -> discard 1 >> return ('\b', "b")+ 'f':_ -> discard 1 >> return ('\f', "f")+ 'n':_ -> discard 1 >> return ('\n', "n")+ 'r':_ -> discard 1 >> return ('\r', "r")+ 't':_ -> discard 1 >> return ('\t', "t")+ 'v':_ -> discard 1 >> return ('\v', "v")+ '\\':_ -> discard 1 >> return ('\\', "\\")+ '"':_ -> discard 1 >> return ('\"', "\"")+ '\'':_ -> discard 1 >> return ('\'', "\'")++-- Production ascii from section B.2++ '^':c:_ -> discard 2 >> cntrl c+ 'N':'U':'L':_ -> discard 3 >> return ('\NUL', "NUL")+ 'S':'O':'H':_ -> discard 3 >> return ('\SOH', "SOH")+ 'S':'T':'X':_ -> discard 3 >> return ('\STX', "STX")+ 'E':'T':'X':_ -> discard 3 >> return ('\ETX', "ETX")+ 'E':'O':'T':_ -> discard 3 >> return ('\EOT', "EOT")+ 'E':'N':'Q':_ -> discard 3 >> return ('\ENQ', "ENQ")+ 'A':'C':'K':_ -> discard 3 >> return ('\ACK', "ACK")+ 'B':'E':'L':_ -> discard 3 >> return ('\BEL', "BEL")+ 'B':'S':_ -> discard 2 >> return ('\BS', "BS")+ 'H':'T':_ -> discard 2 >> return ('\HT', "HT")+ 'L':'F':_ -> discard 2 >> return ('\LF', "LF")+ 'V':'T':_ -> discard 2 >> return ('\VT', "VT")+ 'F':'F':_ -> discard 2 >> return ('\FF', "FF")+ 'C':'R':_ -> discard 2 >> return ('\CR', "CR")+ 'S':'O':_ -> discard 2 >> return ('\SO', "SO")+ 'S':'I':_ -> discard 2 >> return ('\SI', "SI")+ 'D':'L':'E':_ -> discard 3 >> return ('\DLE', "DLE")+ 'D':'C':'1':_ -> discard 3 >> return ('\DC1', "DC1")+ 'D':'C':'2':_ -> discard 3 >> return ('\DC2', "DC2")+ 'D':'C':'3':_ -> discard 3 >> return ('\DC3', "DC3")+ 'D':'C':'4':_ -> discard 3 >> return ('\DC4', "DC4")+ 'N':'A':'K':_ -> discard 3 >> return ('\NAK', "NAK")+ 'S':'Y':'N':_ -> discard 3 >> return ('\SYN', "SYN")+ 'E':'T':'B':_ -> discard 3 >> return ('\ETB', "ETB")+ 'C':'A':'N':_ -> discard 3 >> return ('\CAN', "CAN")+ 'E':'M':_ -> discard 2 >> return ('\EM', "EM")+ 'S':'U':'B':_ -> discard 3 >> return ('\SUB', "SUB")+ 'E':'S':'C':_ -> discard 3 >> return ('\ESC', "ESC")+ 'F':'S':_ -> discard 2 >> return ('\FS', "FS")+ 'G':'S':_ -> discard 2 >> return ('\GS', "GS")+ 'R':'S':_ -> discard 2 >> return ('\RS', "RS")+ 'U':'S':_ -> discard 2 >> return ('\US', "US")+ 'S':'P':_ -> discard 2 >> return ('\SP', "SP")+ 'D':'E':'L':_ -> discard 3 >> return ('\DEL', "DEL")++-- Escaped numbers++ 'o':c:_ | isOctDigit c -> do+ discard 1+ (n, raw) <- lexOctal+ n' <- checkChar n+ return (n', 'o':raw)+ 'x':c:_ | isHexDigit c -> do+ discard 1+ (n, raw) <- lexHexadecimal+ n' <- checkChar n+ return (n', 'x':raw)+ c:_ | isDigit c -> do+ (n, raw) <- lexDecimal+ n' <- checkChar n+ return (n', raw)++ _ -> fail "Illegal escape sequence"++ where+ checkChar n | n <= 0x10FFFF = return (chr (fromInteger n))+ checkChar _ = fail "Character constant out of range"++-- Production cntrl from section B.2++ cntrl :: Char -> Lex a (Char, String)+ cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'), '^':c:[])+ cntrl _ = fail "Illegal control character"++-- assumes at least one octal digit+lexOctal :: Lex a (Integer, String)+lexOctal = do+ ds <- lexWhile isOctDigit+ return (parseInteger 8 ds, ds)++-- assumes at least one binary digit+lexBinary :: Lex a (Integer, String)+lexBinary = do+ ds <- lexWhile isBinDigit+ return (parseInteger 2 ds, ds)++-- assumes at least one hexadecimal digit+lexHexadecimal :: Lex a (Integer, String)+lexHexadecimal = do+ ds <- lexWhile isHexDigit+ return (parseInteger 16 ds, ds)++-- assumes at least one decimal digit+lexDecimal :: Lex a (Integer, String)+lexDecimal = do+ ds <- lexWhile isDigit+ return (parseInteger 10 ds, ds)++-- Stolen from Hugs's Prelude+parseInteger :: Integer -> String -> Integer+parseInteger radix = go 0+ where+ go !acc [] = acc+ go !acc (d:ds) = go (acc * radix + toInteger (digitToInt d)) ds++flagKW :: Token -> Lex a ()+flagKW t =+ when (t `elem` [KW_Do, KW_MDo]) $ do+ exts <- getExtensionsL+ when (NondecreasingIndentation `elem` exts) flagDo++-- | Selects ASCII binary digits, i.e. @\'0\'@..@\'1\'@.+isBinDigit :: Char -> Bool+isBinDigit c = c >= '0' && c <= '1'+------------------------------------------------------------------+-- "Pretty" printing for tokens++showToken :: Token -> String+showToken t = case t of+ VarId s -> s+ LabelVarId s -> '#':s+ QVarId (q,s) -> q ++ '.':s+ IDupVarId s -> '?':s+ ILinVarId s -> '%':s+ ConId s -> s+ QConId (q,s) -> q ++ '.':s+ DVarId ss -> intercalate "-" ss+ VarSym s -> s+ ConSym s -> s+ QVarSym (q,s) -> q ++ '.':s+ QConSym (q,s) -> q ++ '.':s+ IntTok (_, s) -> s+ FloatTok (_, s) -> s+ Character (_, s) -> '\'':s ++ "'"+ StringTok (_, s) -> '"':s ++ "\""+ IntTokHash (_, s) -> s ++ "#"+ WordTokHash (_, s) -> s ++ "##"+ FloatTokHash (_, s) -> s ++ "#"+ DoubleTokHash (_, s) -> s ++ "##"+ CharacterHash (_, s) -> '\'':s ++ "'#"+ StringHash (_, s) -> '"':s ++ "\"#"+ LeftParen -> "("+ RightParen -> ")"+ LeftHashParen -> "(#"+ RightHashParen -> "#)"+ SemiColon -> ";"+ LeftCurly -> "{"+ RightCurly -> "}"+ VRightCurly -> "virtual }"+ LeftSquare -> "["+ RightSquare -> "]"+ ParArrayLeftSquare -> "[:"+ ParArrayRightSquare -> ":]"+ Comma -> ","+ Underscore -> "_"+ BackQuote -> "`"+ QuoteColon -> "':"+ Dot -> "."+ DotDot -> ".."+ Colon -> ":"+ DoubleColon -> "::"+ Equals -> "="+ Backslash -> "\\"+ Bar -> "|"+ LeftArrow -> "<-"+ RightArrow -> "->"+ At -> "@"+ TApp -> "@"+ Tilde -> "~"+ DoubleArrow -> "=>"+ Minus -> "-"+ Exclamation -> "!"+ Star -> "*"+ LeftArrowTail -> "-<"+ RightArrowTail -> ">-"+ LeftDblArrowTail -> "-<<"+ RightDblArrowTail -> ">>-"+ OpenArrowBracket -> "(|"+ CloseArrowBracket -> "|)"+ THExpQuote -> "[|"+ THTExpQuote -> "[||"+ THPatQuote -> "[p|"+ THDecQuote -> "[d|"+ THTypQuote -> "[t|"+ THCloseQuote -> "|]"+ THTCloseQuote -> "||]"+ THIdEscape s -> '$':s+ THParenEscape -> "$("+ THTIdEscape s -> "$$" ++ s+ THTParenEscape -> "$$("+ THVarQuote -> "'"+ THTyQuote -> "''"+ THQuasiQuote (n,q) -> "[$" ++ n ++ "|" ++ q ++ "]"+ RPGuardOpen -> "(|"+ RPGuardClose -> "|)"+ RPCAt -> "@:"+ XCodeTagOpen -> "<%"+ XCodeTagClose -> "%>"+ XStdTagOpen -> "<"+ XStdTagClose -> ">"+ XCloseTagOpen -> "</"+ XEmptyTagClose -> "/>"+ XPCDATA s -> "PCDATA " ++ s+ XRPatOpen -> "<["+ XRPatClose -> "]>"+ PragmaEnd -> "#-}"+ RULES -> "{-# RULES"+ INLINE b -> "{-# " ++ if b then "INLINE" else "NOINLINE"+ INLINE_CONLIKE -> "{-# " ++ "INLINE CONLIKE"+ SPECIALISE -> "{-# SPECIALISE"+ SPECIALISE_INLINE b -> "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE"+ SOURCE -> "{-# SOURCE"+ DEPRECATED -> "{-# DEPRECATED"+ WARNING -> "{-# WARNING"+ SCC -> "{-# SCC"+ GENERATED -> "{-# GENERATED"+ CORE -> "{-# CORE"+ UNPACK -> "{-# UNPACK"+ NOUNPACK -> "{-# NOUNPACK"+ OPTIONS (mt,_) -> "{-# OPTIONS" ++ maybe "" (':':) mt ++ " ..."+-- CFILES s -> "{-# CFILES ..."+-- INCLUDE s -> "{-# INCLUDE ..."+ LANGUAGE -> "{-# LANGUAGE"+ ANN -> "{-# ANN"+ MINIMAL -> "{-# MINIMAL"+ NO_OVERLAP -> "{-# NO_OVERLAP"+ OVERLAP -> "{-# OVERLAP"+ OVERLAPPING -> "{-# OVERLAPPING"+ OVERLAPPABLE -> "{-# OVERLAPPABLE"+ OVERLAPS -> "{-# OVERLAPS"+ INCOHERENT -> "{-# INCOHERENT"+ COMPLETE -> "{-# COMPLETE"+ KW_As -> "as"+ KW_By -> "by"+ KW_Case -> "case"+ KW_Class -> "class"+ KW_Data -> "data"+ KW_Default -> "default"+ KW_Deriving -> "deriving"+ KW_Do -> "do"+ KW_MDo -> "mdo"+ KW_Else -> "else"+ KW_Family -> "family"+ KW_Forall -> "forall"+ KW_Group -> "group"+ KW_Hiding -> "hiding"+ KW_If -> "if"+ KW_Import -> "import"+ KW_In -> "in"+ KW_Infix -> "infix"+ KW_InfixL -> "infixl"+ KW_InfixR -> "infixr"+ KW_Instance -> "instance"+ KW_Let -> "let"+ KW_Module -> "module"+ KW_NewType -> "newtype"+ KW_Of -> "of"+ KW_Proc -> "proc"+ KW_Rec -> "rec"+ KW_Then -> "then"+ KW_Type -> "type"+ KW_Using -> "using"+ KW_Where -> "where"+ KW_Qualified -> "qualified"+ KW_Foreign -> "foreign"+ KW_Export -> "export"+ KW_Safe -> "safe"+ KW_Unsafe -> "unsafe"+ KW_Threadsafe -> "threadsafe"+ KW_Interruptible -> "interruptible"+ KW_StdCall -> "stdcall"+ KW_CCall -> "ccall"+ XChildTagOpen -> "<%>"+ KW_CPlusPlus -> "cplusplus"+ KW_DotNet -> "dotnet"+ KW_Jvm -> "jvm"+ KW_Js -> "js"+ KW_JavaScript -> "javascript"+ KW_CApi -> "capi"+ KW_Role -> "role"+ KW_Pattern -> "pattern"+ KW_Stock -> "stock"+ KW_Anyclass -> "anyclass"+ KW_Via -> "via"++ EOF -> "EOF"
src/Language/Haskell/Exts/InternalParser.ly view
@@ -1,1829 +1,2275 @@ > {-> {-# OPTIONS_HADDOCK hide #-}-> ------------------------------------------------------------------------------> -- |-> -- Module : Language.Haskell.Exts.Annotated.Parser-> -- Copyright : (c) Niklas Broberg 2004-2009,-> -- Original (c) Simon Marlow, Sven Panne 1997-2000-> -- License : BSD-style (see the file LICENSE.txt)-> ---> -- Maintainer : Niklas Broberg, d00nibro@chalmers.se-> -- Stability : stable-> -- Portability : portable-> ---> ---> ------------------------------------------------------------------------------>-> module Language.Haskell.Exts.InternalParser (-> -- * General parsing-> ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,-> -- * Parsing of specific AST elements-> -- ** Modules-> parseModule, parseModuleWithMode, parseModuleWithComments,-> -- ** Expressions-> parseExp, parseExpWithMode, parseExpWithComments,-> -- ** Statements-> parseStmt, parseStmtWithMode, parseStmtWithComments,-> -- ** Patterns-> parsePat, parsePatWithMode, parsePatWithComments,-> -- ** Declarations-> parseDecl, parseDeclWithMode, parseDeclWithComments,-> -- ** Types-> parseType, parseTypeWithMode, parseTypeWithComments,-> -- ** Multiple modules in one file-> parseModules, parseModulesWithMode, parseModulesWithComments,-> -- ** Option pragmas-> getTopPragmas-> ) where->-> import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )-> import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst )-> import Language.Haskell.Exts.ParseMonad-> import Language.Haskell.Exts.Lexer-> import Language.Haskell.Exts.ParseUtils-> import Language.Haskell.Exts.Annotated.Fixity-> import Language.Haskell.Exts.SrcLoc-> import Language.Haskell.Exts.Comments ( Comment )-> import Language.Haskell.Exts.Extension--> import Control.Monad ( liftM, (<=<) )-import Debug.Trace (trace)--> }--------------------------------------------------------------------------------This module comprises a parser for Haskell 98 with the following extensions--* Multi-parameter type classes with functional dependencies-* Implicit parameters-* Pattern guards-* Mdo notation-* FFI-* HaRP-* HSP--Most of the code is blatantly stolen from the GHC module Language.Haskell.Parser.-Some of the code for extensions is greatly influenced by GHC's internal parser-library, ghc/compiler/parser/Parser.y.-------------------------------------------------------------------------------Conflicts: 6 shift/reduce--2 for ambiguity in 'case x of y | let z = y in z :: Bool -> b' [State 12, 244]- (don't know whether to reduce 'Bool' as a btype or shift the '->'.- Similarly lambda and if. The default resolution in favour of the- shift means that a guard can never end with a type signature.- In mitigation: it's a rare case and no Haskell implementation- allows these, because it would require unbounded lookahead.)- There are 2 conflicts rather than one because contexts are parsed- as btypes (cf ctype).--1 for ambiguity in 'let ?x ...' [State 712]- the parser can't tell whether the ?x is the lhs of a normal binding or- an implicit binding. Fortunately resolving as shift gives it the only- sensible meaning, namely the lhs of an implicit binding.--1 for ambiguity using hybrid modules [State 116]- For HSP pages that start with a <% %> block, the parser cannot tell whether- to reduce a srcloc or shift the starting <%. Since any other body could not- start with <%, shifting is the only sensible thing to do.--1 for ambiguity using toplevel xml modules [State 119]- For HSP xml pages starting with a <, the parser cannot tell whether to shift- that < or reduce an implicit 'open'. Since no other body could possibly start- with <, shifting is the only sensible thing to do.--1 for ambiguity in '{-# RULES "name" [ ... #-}' [State 318]- we don't know whether the '[' starts the activation or not: it- might be the start of the declaration with the activation being- empty. Resolving with shift means the declaration cannot start with '['.---------------------------------------------------------------------------------> %token-> VARID { Loc _ (VarId _) }-> QVARID { Loc _ (QVarId _) }-> IDUPID { Loc _ (IDupVarId _) } -- duplicable implicit parameter ?x-> ILINID { Loc _ (ILinVarId _) } -- linear implicit parameter %x-> CONID { Loc _ (ConId _) }-> QCONID { Loc _ (QConId _) }-> DVARID { Loc _ (DVarId _) } -- VARID containing dashes-> VARSYM { Loc _ (VarSym _) }-> CONSYM { Loc _ (ConSym _) }-> QVARSYM { Loc _ (QVarSym _) }-> QCONSYM { Loc _ (QConSym _) }-> INT { Loc _ (IntTok _) }-> RATIONAL { Loc _ (FloatTok _) }-> CHAR { Loc _ (Character _) }-> STRING { Loc _ (StringTok _) }--> PRIMINT { Loc _ (IntTokHash _) }-> PRIMWORD { Loc _ (WordTokHash _) }-> PRIMFLOAT { Loc _ (FloatTokHash _) }-> PRIMDOUBLE { Loc _ (DoubleTokHash _) }-> PRIMCHAR { Loc _ (CharacterHash _) }-> PRIMSTRING { Loc _ (StringHash _) }--Symbols--> '(' { Loc $$ LeftParen }-> ')' { Loc $$ RightParen }-> '(#' { Loc $$ LeftHashParen }-> '#)' { Loc $$ RightHashParen }-> '{|' { Loc $$ LeftCurlyBar }-> '|}' { Loc $$ RightCurlyBar }-> ';' { Loc $$ SemiColon }-> '{' { Loc $$ LeftCurly }-> '}' { Loc $$ RightCurly }-> vccurly { Loc $$ VRightCurly } -- a virtual close brace-> '[' { Loc $$ LeftSquare }-> ']' { Loc $$ RightSquare }-> ',' { Loc $$ Comma }-> '_' { Loc $$ Underscore }-> '`' { Loc $$ BackQuote }--Reserved operators--> '.' { Loc $$ Dot }-> '..' { Loc $$ DotDot }-> ':' { Loc $$ Colon }-> '::' { Loc $$ DoubleColon }-> '=' { Loc $$ Equals }-> '\\' { Loc $$ Backslash }-> '|' { Loc $$ Bar }-> '<-' { Loc $$ LeftArrow }-> '->' { Loc $$ RightArrow }-> '@' { Loc $$ At }-> '~' { Loc $$ Tilde }-> '=>' { Loc $$ DoubleArrow }-> '-' { Loc $$ Minus }-> '!' { Loc $$ Exclamation }-> '*' { Loc $$ Star }--Arrows--> '-<' { Loc $$ LeftArrowTail }-> '>-' { Loc $$ RightArrowTail }-> '-<<' { Loc $$ LeftDblArrowTail }-> '>>-' { Loc $$ RightDblArrowTail }--Harp--> '(|' { Loc $$ RPGuardOpen }-> '|)' { Loc $$ RPGuardClose }-> '@:' { Loc $$ RPCAt }--Template Haskell--> IDSPLICE { Loc _ (THIdEscape _) } -- $x-> '$(' { Loc $$ THParenEscape }-> '[|' { Loc $$ THExpQuote }-> '[p|' { Loc $$ THPatQuote }-> '[t|' { Loc $$ THTypQuote }-> '[d|' { Loc $$ THDecQuote }-> '|]' { Loc $$ THCloseQuote }-> VARQUOTE { Loc $$ THVarQuote } -- 'x-> TYPQUOTE { Loc $$ THTyQuote } -- ''T-> QUASIQUOTE { Loc _ (THQuasiQuote _) }--Hsx--> PCDATA { Loc _ (XPCDATA _) }-> '<' { Loc $$ XStdTagOpen }-> '</' { Loc $$ XCloseTagOpen }-> '<%' { Loc $$ XCodeTagOpen }-> '<%>' { Loc $$ XChildTagOpen }-> '>' { Loc $$ XStdTagClose }-> '/>' { Loc $$ XEmptyTagClose }-> '%>' { Loc $$ XCodeTagClose }-> '<[' { Loc $$ XRPatOpen }-> ']>' { Loc $$ XRPatClose }--FFI--> 'foreign' { Loc $$ KW_Foreign }-> 'export' { Loc $$ KW_Export }-> 'safe' { Loc $$ KW_Safe }-> 'unsafe' { Loc $$ KW_Unsafe }-> 'threadsafe' { Loc $$ KW_Threadsafe }-> 'stdcall' { Loc $$ KW_StdCall }-> 'ccall' { Loc $$ KW_CCall }--Reserved Ids--> 'as' { Loc $$ KW_As }-> 'by' { Loc $$ KW_By } -- transform list comprehensions-> 'case' { Loc $$ KW_Case }-> 'class' { Loc $$ KW_Class }-> 'data' { Loc $$ KW_Data }-> 'default' { Loc $$ KW_Default }-> 'deriving' { Loc $$ KW_Deriving }-> 'do' { Loc $$ KW_Do }-> 'else' { Loc $$ KW_Else }-> 'family' { Loc $$ KW_Family } -- indexed type families-> 'forall' { Loc $$ KW_Forall } -- universal/existential qualification-> 'group' { Loc $$ KW_Group } -- transform list comprehensions-> 'hiding' { Loc $$ KW_Hiding }-> 'if' { Loc $$ KW_If }-> 'import' { Loc $$ KW_Import }-> 'in' { Loc $$ KW_In }-> 'infix' { Loc $$ KW_Infix }-> 'infixl' { Loc $$ KW_InfixL }-> 'infixr' { Loc $$ KW_InfixR }-> 'instance' { Loc $$ KW_Instance }-> 'let' { Loc $$ KW_Let }-> 'mdo' { Loc $$ KW_MDo }-> 'module' { Loc $$ KW_Module }-> 'newtype' { Loc $$ KW_NewType }-> 'of' { Loc $$ KW_Of }-> 'proc' { Loc $$ KW_Proc } -- arrows-> 'rec' { Loc $$ KW_Rec } -- arrows-> 'then' { Loc $$ KW_Then }-> 'type' { Loc $$ KW_Type }-> 'using' { Loc $$ KW_Using } -- transform list comprehensions-> 'where' { Loc $$ KW_Where }-> 'qualified' { Loc $$ KW_Qualified }--Pragmas--> '{-# INLINE' { Loc _ (INLINE _) }-> '{-# INLINE_CONLIKE' { Loc $$ INLINE_CONLIKE }-> '{-# SPECIALISE' { Loc $$ SPECIALISE }-> '{-# SPECIALISE_INLINE' { Loc _ (SPECIALISE_INLINE _) }-> '{-# SOURCE' { Loc $$ SOURCE }-> '{-# RULES' { Loc $$ RULES }-> '{-# CORE' { Loc $$ CORE }-> '{-# SCC' { Loc $$ SCC }-> '{-# GENERATED' { Loc $$ GENERATED }-> '{-# DEPRECATED' { Loc $$ DEPRECATED }-> '{-# WARNING' { Loc $$ WARNING }-> '{-# UNPACK' { Loc $$ UNPACK }-> '{-# OPTIONS' { Loc _ (OPTIONS _) }- '{-# CFILES' { Loc _ (CFILES _) }- '{-# INCLUDE' { Loc _ (INCLUDE _) }-> '{-# LANGUAGE' { Loc $$ LANGUAGE }-> '{-# ANN' { Loc $$ ANN }-> '#-}' { Loc $$ PragmaEnd }---> %monad { P }-> %lexer { lexer } { Loc _ EOF }-> %error { parseError }-> %name mparseModule page-> %name mparseExp trueexp-> %name mparsePat pat-> %name mparseDecl topdecl-> %name mparseType truectype-> %name mparseStmt stmt-> %name mparseModules modules-> %partial mfindOptPragmas toppragmas-> %tokentype { Loc Token }-> %expect 6-> %%--------------------------------------------------------------------------------Testing multiple modules in one file--> modules :: { [Module L] }-> : toppragmas modules1 { let (os,ss,l) = $1 in map (\x -> x os ss l) $2 }--> modules1 :: { [[ModulePragma L] -> [S] -> L -> Module L] }-> : module modules1 { $1 : $2 }-> | module { [$1] }--------------------------------------------------------------------------------HSP Pages--Any HSP-specific parts requiring the XmlSyntax extension enabled will-be governed by the lexing, since all productions require at least one-special lexeme.--TODO: Yuck, this is messy, needs fixing in the AST!--> page :: { Module L }-> : toppragmas topxml {% checkPageModule $2 $1 }-> | toppragmas '<%' module '%>' topxml {% let (os,ss,l) = $1 in checkHybridModule $5 ($3 os ss l) $2 $4 }-> | toppragmas module { let (os,ss,l) = $1 in $2 os ss l }--> topxml :: { PExp L }-> : '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $2 $8;-> let { cn = reverse $6;-> as = reverse $3; };-> return $ XTag ($1 <^^> $9 <** [$1,$5,$7,$9]) n as $4 cn } }-> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }---> toppragmas :: { ([ModulePragma L],[S],L) }-> : open toppragmasaux close { let (os,ss,ml) = $2 in (os,$1:ss++[$3],$1 <^^> $3) }--> toppragmasaux :: { ([ModulePragma L],[S],Maybe L) }-> : toppragma ';' toppragmasaux { let (os,ss,ml) = $3 in ($1 : os, $2 : ss, Just $ ann $1 <++> nIS $2 <+?> ml) }-> | {- nothing -} { ([],[],Nothing) }--> toppragma :: { ModulePragma L }-> : '{-# LANGUAGE' conids optsemis '#-}' { LanguagePragma ($1 <^^> $4 <** ($1:snd $2 ++ reverse $3 ++ [$4])) (fst $2) }-> | '{-# OPTIONS' optsemis '#-}' { let Loc l (OPTIONS (mc, s)) = $1-> in OptionsPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) (readTool mc) s }-> | '{-# ANN' annotation '#-}' { AnnModulePragma ($1 <^^> $3 <** [$1,$3]) $2 }---> conids :: { ([Name L],[S]) }-> : conid ',' conids { ($1 : fst $3, $2 : snd $3) }-> | conid { ([$1],[]) }--------------------------------------------------------------------------------Module Header--> module :: { [ModulePragma L] -> [S] -> L -> Module L }-> : optmodulehead body-> { let (is,ds,ss1,inf) = $2-> in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) $1 os is ds }--> optmodulehead :: { Maybe (ModuleHead L) }-> : 'module' modid maybemodwarning maybeexports 'where' { Just $ ModuleHead ($1 <^^> $5 <** [$1,$5]) $2 $3 $4 }-> | {- empty -} { Nothing }--> maybemodwarning :: { Maybe (WarningText L) }-> : '{-# DEPRECATED' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ DeprText ($1 <^^> $3 <** [$1,l,$3]) s }-> | '{-# WARNING' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ WarnText ($1 <^^> $3 <** [$1,l,$3]) s }-> | {- empty -} { Nothing }--> body :: { ([ImportDecl L],[Decl L],[S],L) }-> : '{' bodyaux '}' { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }-> | open bodyaux close { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }--> bodyaux :: { ([ImportDecl L],[Decl L],[S]) }-> : optsemis impdecls semis topdecls { (reverse (fst $2), fst $4, reverse $1 ++ snd $2 ++ reverse $3 ++ snd $4) }-> | optsemis topdecls { ([], fst $2, reverse $1 ++ snd $2) }-> | optsemis impdecls optsemis { (reverse (fst $2), [], reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([], [], reverse $1) }--> semis :: { [S] }-> : optsemis ';' { $2 : $1 }--> optsemis :: { [S] }-> : semis { $1 }-> | {- empty -} { [] }--------------------------------------------------------------------------------The Export List--> maybeexports :: { Maybe (ExportSpecList L) }-> : exports { Just $1 }-> | {- empty -} { Nothing }--> exports :: { ExportSpecList L }-> : '(' exportlist optcomma ')' { ExportSpecList ($1 <^^> $4 <** ($1:reverse (snd $2) ++ $3 ++ [$4])) (reverse (fst $2)) }-> | '(' optcomma ')' { ExportSpecList ($1 <^^> $3 <** ($1:$2++[$3])) [] }--> optcomma :: { [S] }-> : ',' { [$1] }-> | {- empty -} { [ ] }--> exportlist :: { ([ExportSpec L],[S]) }-> : exportlist ',' export { ($3 : fst $1, $2 : snd $1) }-> | export { ([$1],[]) }--> export :: { ExportSpec L }-> : qvar { EVar (ann $1) $1 }-> | qtyconorcls { EAbs (ann $1) $1 }-> | qtyconorcls '(' '..' ')' { EThingAll (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }-> | qtyconorcls '(' ')' { EThingWith (ann $1 <++> nIS $3 <** [$2,$3]) $1 [] }-> | qtyconorcls '(' cnames ')' { EThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }-> | 'module' modid { EModuleContents (nIS $1 <++> ann $2 <** [$1]) $2 }--------------------------------------------------------------------------------Import Declarations--> impdecls :: { ([ImportDecl L],[S]) }-> : impdecls semis impdecl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | impdecl { ([$1],[]) }--> impdecl :: { ImportDecl L }-> : 'import' optsrc optqualified maybepkg modid maybeas maybeimpspec-> { let { (mmn,ss,ml) = $6 ;-> l = nIS $1 <++> ann $5 <+?> ml <+?> (fmap ann) $7 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ ss)}-> in ImportDecl l $5 (fst $3) (fst $2) (fst $4) mmn $7 }--> optsrc :: { (Bool,[S]) }-> : '{-# SOURCE' '#-}' { (True,[$1,$2]) }-> | {- empty -} { (False,[]) }--> optqualified :: { (Bool,[S]) }-> : 'qualified' { (True,[$1]) }-> | {- empty -} { (False, []) }--Requires the PackageImports extension enabled.-> maybepkg :: { (Maybe String,[S]) }-> : STRING {% do { checkEnabled PackageImports ;-> let { Loc l (StringTok (s,_)) = $1 } ;-> return $ (Just s,[l]) } }-> | {- empty -} { (Nothing,[]) }--> maybeas :: { (Maybe (ModuleName L),[S],Maybe L) }-> : 'as' modid { (Just $2,[$1],Just (nIS $1 <++> ann $2)) }-> | {- empty -} { (Nothing,[],Nothing) }---> maybeimpspec :: { Maybe (ImportSpecList L) }-> : impspec { Just $1 }-> | {- empty -} { Nothing }--> impspec :: { ImportSpecList L }-> : opthiding '(' importlist optcomma ')' { let {(b,ml,s) = $1 ;-> l = (ml <?+> ($2 <^^> $5)) <** (s ++ $2:reverse (snd $3) ++ $4 ++ [$5])}-> in ImportSpecList l b (reverse (fst $3)) }-> | opthiding '(' optcomma ')' { let {(b,ml,s) = $1 ; l = (ml <?+> ($2 <^^> $4)) <** (s ++ $2:$3 ++ [$4])}-> in ImportSpecList l b [] }--> opthiding :: { (Bool, Maybe L,[S]) }-> : 'hiding' { (True,Just (nIS $1),[$1]) }-> | {- empty -} { (False,Nothing,[]) }--> importlist :: { ([ImportSpec L],[S]) }-> : importlist ',' importspec { ($3 : fst $1, $2 : snd $1) }-> | importspec { ([$1],[]) }--> importspec :: { ImportSpec L }-> : var { IVar (ann $1) $1 }-> | tyconorcls { IAbs (ann $1) $1 }-> | tyconorcls '(' '..' ')' { IThingAll (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }-> | tyconorcls '(' ')' { IThingWith (ann $1 <++> nIS $3 <** [$2,$3]) $1 [] }-> | tyconorcls '(' cnames ')' { IThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }--> cnames :: { ([CName L],[S]) }-> : cnames ',' cname { ($3 : fst $1, $2 : snd $1) }-> | cname { ([$1],[]) }--> cname :: { CName L }-> : var { VarName (ann $1) $1 }-> | con { ConName (ann $1) $1 }--------------------------------------------------------------------------------Fixity Declarations--> fixdecl :: { Decl L }-> : infix prec ops { let (ops,ss,l) = $3-> in InfixDecl (ann $1 <++> l <** (snd $2 ++ reverse ss)) $1 (fst $2) (reverse ops) }--> prec :: { (Maybe Int, [S]) }-> : {- empty -} { (Nothing, []) }-> | INT {% let Loc l (IntTok (i,_)) = $1 in checkPrec i >>= \i -> return (Just i, [l]) }--> infix :: { Assoc L }-> : 'infix' { AssocNone $ nIS $1 }-> | 'infixl' { AssocLeft $ nIS $1 }-> | 'infixr' { AssocRight $ nIS $1 }--> ops :: { ([Op L],[S],L) }-> : ops ',' op { let (ops,ss,l) = $1 in ($3 : ops, $2 : ss, l <++> ann $3) }-> | op { ([$1],[],ann $1) }--------------------------------------------------------------------------------Top-Level Declarations--Note: The report allows topdecls to be empty. This would result in another-shift/reduce-conflict, so we don't handle this case here, but in bodyaux.--> topdecls :: { ([Decl L],[S]) }-> : topdecls1 optsemis {% checkRevDecls (fst $1) >>= \ds -> return (ds, snd $1 ++ reverse $2) }--> topdecls1 :: { ([Decl L],[S]) }-> : topdecls1 semis topdecl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | topdecl { ([$1],[]) }--> topdecl :: { Decl L }-> : 'type' dtype '=' truectype-> {% do { dh <- checkSimpleType $2;-> let {l = nIS $1 <++> ann $4 <** [$1,$3]};-> return (TypeDecl l dh $4) } }--Requires the TypeFamilies extension enabled, but the lexer will handle-that through the 'family' keyword.-> | 'type' 'family' type optkind-> {% do { dh <- checkSimpleType $3;-> let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};-> return (TypeFamDecl l dh (fst $4)) } }--Here there is no special keyword so we must do the check.-> | 'type' 'instance' truedtype '=' truectype-> {% do { -- no checkSimpleType $4 since dtype may contain type patterns-> checkEnabled TypeFamilies ;-> let {l = nIS $1 <++> ann $5 <** [$1,$2,$4]};-> return (TypeInsDecl l $3 $5) } }-> | data_or_newtype ctype constrs0 deriving-> {% do { (cs,dh) <- checkDataHeader $2;-> let { (qds,ss,minf) = $3;-> l = $1 <> $2 <+?> minf <+?> fmap ann $4 <** ss};-> checkDataOrNew $1 qds;-> return (DataDecl l $1 cs dh (reverse qds) $4) } }--Requires the GADTs extension enabled, handled in gadtlist.-> | data_or_newtype ctype optkind gadtlist deriving-> {% do { (cs,dh) <- checkDataHeader $2;-> let { (gs,ss,minf) = $4;-> l = ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)};-> checkDataOrNewG $1 gs;-> case (gs, fst $3) of-> ([], Nothing) -> return (DataDecl l $1 cs dh [] $5)-> _ -> checkEnabled GADTs >> return (GDataDecl l $1 cs dh (fst $3) (reverse gs) $5) } }--Same as above, lexer will handle it through the 'family' keyword.-> | 'data' 'family' ctype optkind-> {% do { (cs,dh) <- checkDataHeader $3;-> let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};-> return (DataFamDecl l cs dh (fst $4)) } }--Here we must check for TypeFamilies.-> | data_or_newtype 'instance' truectype constrs0 deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkEnabled TypeFamilies ;-> let { (qds,ss,minf) = $4 ;-> l = $1 <> $3 <+?> minf <+?> fmap ann $5 <** $2:ss };-> checkDataOrNew $1 qds;-> return (DataInsDecl l $1 $3 (reverse qds) $5) } }--This style requires both TypeFamilies and GADTs, the latter is handled in gadtlist.-> | data_or_newtype 'instance' truectype optkind gadtlist deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkEnabled TypeFamilies ;-> let {(gs,ss,minf) = $5;-> l = ann $1 <+?> minf <+?> fmap ann $6 <** ($2:snd $4 ++ ss)};-> checkDataOrNewG $1 gs;-> return (GDataInsDecl l $1 $3 (fst $4) (reverse gs) $6) } }-> | 'class' ctype fds optcbody-> {% do { (cs,dh) <- checkClassHeader $2;-> let {(fds,ss1,minf1) = $3;(mcs,ss2,minf2) = $4} ;-> let { l = nIS $1 <++> ann $2 <+?> minf1 <+?> minf2 <** ($1:ss1 ++ ss2)} ;-> return (ClassDecl l cs dh fds mcs) } }-> | 'instance' ctype optvaldefs-> {% do { (cs,ih) <- checkInstHeader $2;-> let {(mis,ss,minf) = $3};-> return (InstDecl (nIS $1 <++> ann $2 <+?> minf <** ($1:ss)) cs ih mis) } }--Requires the StandaloneDeriving extension enabled.-> | 'deriving' 'instance' ctype-> {% do { checkEnabled StandaloneDeriving ;-> (cs, ih) <- checkInstHeader $3;-> let {l = nIS $1 <++> ann $3 <** [$1,$2]};-> return (DerivDecl l cs ih) } }-> | 'default' '(' typelist ')'-> { DefaultDecl ($1 <^^> $4 <** ($1:$2 : snd $3 ++ [$4])) (fst $3) }--Requires the TemplateHaskell extension, but the lexer will handle that-through the '$(' lexeme.-CHANGE: Arbitrary top-level expressions are considered implicit splices-> | exp0 {% checkEnabled TemplateHaskell >> checkExpr $1 >>= \e -> return (SpliceDecl (ann e) e) }-- | '$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }--These require the ForeignFunctionInterface extension, handled by the-lexer through the 'foreign' (and 'export') keyword.-> | 'foreign' 'import' callconv safety fspec-> { let (s,n,t,ss) = $5 in ForImp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 $4 s n t }-> | 'foreign' 'export' callconv fspec-> { let (s,n,t,ss) = $4 in ForExp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 s n t }--> | '{-# RULES' rules '#-}' { RulePragmaDecl ($1 <^^> $3 <** [$1,$3]) $ reverse $2 }-> | '{-# DEPRECATED' warndeprs '#-}' { DeprPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }-> | '{-# WARNING' warndeprs '#-}' { WarnPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }-> | '{-# ANN' annotation '#-}' { AnnPragma ($1 <^^> $3 <** [$1,$3]) $2 }-> | decl { $1 }--> data_or_newtype :: { DataOrNew L }-> : 'data' { DataType $ nIS $1 }-> | 'newtype' { NewType $ nIS $1 }--> typelist :: { ([Type L],[S]) }-> : types {% do { ts <- mapM checkType (fst $1);-> return $ (reverse ts, reverse (snd $1)) } }-> | truetype { ([$1],[]) }-> | {- empty -} { ([],[]) }--> decls :: { ([Decl L],[S]) }-> : optsemis decls1 optsemis {% checkRevDecls (fst $2) >>= \ds -> return (ds, reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([],reverse $1) }--> decls1 :: { ([Decl L],[S]) }-> : decls1 semis decl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | decl { ([$1],[]) }--> decl :: { Decl L }-> : signdecl { $1 }-> | fixdecl { $1 }-> | valdef { $1 }--> decllist :: { Binds L }-> : '{' decls '}' { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }-> | open decls close { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }--> signdecl :: { Decl L }-> : exp0b '::' truectype {% do { v <- checkSigVar $1;-> return $ TypeSig ($1 <> $3 <** [$2]) [v] $3 } }-> | exp0b ',' vars '::' truectype {% do { v <- checkSigVar $1;-> let {(vs,ss,_) = $3 ; l = $1 <> $5 <** ($2 : reverse ss ++ [$4]) } ;-> return $ TypeSig l (v : reverse vs) $5 } }-> | specinldecl { $1 }--> specinldecl :: { Decl L }-> : '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InlineSig (l <^^> $4 <** [l,$4]) s $2 $3 }-> | '{-# INLINE_CONLIKE' activation qvar '#-}' { InlineConlikeSig ($1 <^^> $4 <** [$1,$4]) $2 $3 }-> | '{-# SPECIALISE' qvar '::' sigtypes '#-}' { SpecSig ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 (fst $4) }-> | '{-# SPECIALISE_INLINE' activation qvar '::' sigtypes '#-}'-> { let Loc l (SPECIALISE_INLINE s) = $1-> in SpecInlineSig (l <^^> $6 <** (l:$4:snd $5++[$6])) s $2 $3 (fst $5) }-> | '{-# SPECIALISE' 'instance' ctype '#-}' {% do { (cs,ih) <- checkInstHeader $3;-> let {l = $1 <^^> $4 <** [$1,$2,$4]};-> return $ InstSig l cs ih } }--> sigtypes :: { ([Type L],[S]) }-> : sigtype { ([$1],[]) }-> | sigtype ',' sigtypes { ($1 : fst $3, $2 : snd $3) }--> sigtype :: { Type L }-> : ctype {% checkType $ mkTyForall (ann $1) Nothing Nothing $1 }--Binding can be either of implicit parameters, or it can be a normal sequence-of declarations. The two kinds cannot be mixed within the same block of-binding.--> binds :: { Binds L }-> : decllist { $1 }-> | '{' ipbinds '}' { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }-> | open ipbinds close { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }--ATTENTION: Dirty Hackery Ahead! If the second alternative of vars is var-instead of qvar, we get another shift/reduce-conflict. Consider the-following programs:-- { (+) :: ... } only var- { (+) x y = ... } could (incorrectly) be qvar--We re-use expressions for patterns, so a qvar would be allowed in patterns-instead of a var only (which would be correct). But deciding what the + is,-would require more lookahead. So let's check for ourselves...--> vars :: { ([Name L],[S],L) }-> : vars ',' var { let (ns,ss,l) = $1 in ($3 : ns, $2 : ss, l <++> ann $3) }-> | qvar {% do { n <- checkUnQual $1;-> return ([n],[],ann n) } }--------------------------------------------------------------------------------FFI--These will only be called on in the presence of a 'foreign' keyword,-so no need to check for extensions.--> callconv :: { CallConv L }-> : 'stdcall' { StdCall (nIS $1) }-> | 'ccall' { CCall (nIS $1) }--> safety :: { Maybe (Safety L) }-> : 'safe' { Just $ PlaySafe (nIS $1) False }-> | 'unsafe' { Just $ PlayRisky (nIS $1) }-> | 'threadsafe' { Just $ PlaySafe (nIS $1) True }-> | {- empty -} { Nothing }--> fspec :: { (Maybe String, Name L, Type L, [S]) }-> : STRING var_no_safety '::' truedtype { let Loc l (StringTok (s,_)) = $1 in (Just s, $2, $4, [l,$3]) }-> | var_no_safety '::' truedtype { (Nothing, $1, $3, [$2]) }--------------------------------------------------------------------------------Pragmas--> rules :: { [Rule L] }-> : rules ';'rule { $3 : $1 }-> | rules ';' { $1 }-> | rule { [$1] }-> | {- empty -} { [] }--> rule :: { Rule L }-> : STRING activation ruleforall exp0 '=' trueexp {% do { let {Loc l (StringTok (s,_)) = $1};-> e <- checkRuleExpr $4;-> return $ Rule (nIS l <++> ann $6 <** l:snd $3 ++ [$5]) s $2 (fst $3) e $6 } }--> activation :: { Maybe (Activation L) }-> : {- empty -} { Nothing }-> | '[' INT ']' { let Loc l (IntTok (i,_)) = $2 in Just $ ActiveFrom ($1 <^^> $3 <** [$1,l,$3]) (fromInteger i) }-> | '[' '~' INT ']' { let Loc l (IntTok (i,_)) = $3 in Just $ ActiveUntil ($1 <^^> $4 <** [$1,$2,l,$4]) (fromInteger i) }--> ruleforall :: { (Maybe [RuleVar L],[S]) }-> : {- empty -} { (Nothing,[]) }-> | 'forall' rulevars '.' { (Just $2,[$1,$3]) }--> rulevars :: { [RuleVar L] }-> : rulevar { [$1] }-> | rulevar rulevars { $1 : $2 }--> rulevar :: { RuleVar L }-> : varid { RuleVar (ann $1) $1 }-> | '(' varid '::' truectype ')' { TypedRuleVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> warndeprs :: { ([([Name L],String)],[S]) }-> : warndeprs ';' warndepr { (fst $3 : fst $1, snd $1 ++ ($2:snd $3)) }-> | warndeprs ';' { (fst $1, snd $1 ++ [$2]) }-> | warndepr { ([fst $1],snd $1) }-> | {- empty -} { ([],[]) }--> warndepr :: { (([Name L], String),[S]) }-> : namevars STRING { let Loc l (StringTok (s,_)) = $2 in ((fst $1,s),snd $1 ++ [l]) }--> namevars :: { ([Name L],[S]) }-> : namevar { ([$1],[]) }-> | namevar ',' namevars { ($1 : fst $3, $2 : snd $3) }--> namevar :: { Name L }-> : con { $1 }-> | var { $1 }--> annotation :: { Annotation L }-> : 'type' conid aexp {% checkExpr $3 >>= \e -> return (TypeAnn (nIS $1 <++> ann e <** [$1]) $2 e) }-> | 'module' aexp {% checkExpr $2 >>= \e -> return (ModuleAnn (nIS $1 <++> ann e <** [$1]) e) }-> | namevar aexp {% checkExpr $2 >>= \e -> return (Ann ($1 <> e) $1 e) }--------------------------------------------------------------------------------Types--Type equality contraints need the TypeFamilies extension.--> truedtype :: { Type L }-> : dtype {% checkType $1 }--> dtype :: { PType L }-> : btype { $1 }-> | btype qtyconop dtype { TyInfix ($1 <> $3) $1 $2 $3 }-> | btype qtyvarop dtype { TyInfix ($1 <> $3) $1 $2 $3 } -- FIXME-> | btype '->' ctype { TyFun ($1 <> $3 <** [$2]) $1 $3 }-> | btype '~' btype {% do { checkEnabled TypeFamilies ;-> let {l = $1 <> $3 <** [$2]};-> return $ TyPred l $ EqualP l $1 $3 } }--Implicit parameters can occur in normal types, as well as in contexts.--> truetype :: { Type L }-> : type {% checkType $1 }--> type :: { PType L }-> : ivar '::' dtype { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }-> | dtype { $1 }--> truebtype :: { Type L }-> : btype {% checkType $1 }--> btype :: { PType L }-> : btype atype { TyApp ($1 <> $2) $1 $2 }-> | atype { $1 }--UnboxedTuples requires the extension, but that will be handled through-the (# and #) lexemes. Kinds will be handled at the kind rule.--> trueatype :: { Type L }-> : atype {% checkType $1 }--> atype :: { PType L }-> : gtycon { TyCon (ann $1) $1 }-> | tyvar { TyVar (ann $1) $1 }-> | '(' types ')' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed (reverse (fst $2)) }-> | '(#' types1 '#)' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }-> | '[' type ']' { TyList ($1 <^^> $3 <** [$1,$3]) $2 }-> | '(' ctype ')' { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }-> | '(' ctype '::' kind ')' { TyKind ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> gtycon :: { QName L }-> : otycon { $1 }-> | '(' ')' { unit_tycon_name ($1 <^^> $2 <** [$1,$2]) }-> | '(' '->' ')' { fun_tycon_name ($1 <^^> $3 <** [$1,$2,$3]) }-> | '[' ']' { list_tycon_name ($1 <^^> $2 <** [$1,$2]) }-> | '(' commas ')' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Boxed (length $2) }-> | '(#' '#)' { unboxed_singleton_tycon_name ($1 <^^> $2 <** [$1,$2]) }-> | '(#' commas '#)' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Unboxed (length $2) }--> otycon :: { QName L }-> : qconid { $1 }-> | '(' gconsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }-> | '(' qvarsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--These are for infix types--> qtyconop :: { QName L }-> : qconop { $1 }---(Slightly edited) Comment from GHC's hsparser.y:-"context => type" vs "type" is a problem, because you can't distinguish between-- foo :: (Baz a, Baz a)- bar :: (Baz a, Baz a) => [a] -> [a] -> [a]--with one token of lookahead. The HACK is to parse the context as a btype-(more specifically as a tuple type), then check that it has the right form-C a, or (C1 a, C2 b, ... Cn z) and convert it into a context. Blaach!--Forall-quantified types require some extension to enable them, which-is any of the keyword-enabling ones, except ExistentialQuantification.--> truectype :: { Type L }-> : ctype {% checkType $1 }--> ctype :: { PType L }-> : 'forall' ktyvars '.' ctype { TyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }-> | context ctype { TyForall ($1 <> $2) Nothing (Just $1) $2 }-> | type { $1 }--Equality constraints require the TypeFamilies extension.--> context :: { PContext L }-> : btype '=>' {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) $1 }-> | btype '~' btype '=>' {% do { checkEnabled TypeFamilies;-> let {l = $1 <> $3 <** [$2,$4]};-> checkPContext (TyPred l $ EqualP l $1 $3) } }--> types :: { ([PType L],[S]) }-> : types1 ',' ctype { ($3 : fst $1, $2 : snd $1) }--> types1 :: { ([PType L],[S]) }-> : ctype { ([$1],[]) }-> | types1 ',' ctype { ($3 : fst $1, $2 : snd $1) }--> ktyvars :: { ([TyVarBind L],Maybe L) }-> : ktyvars ktyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }-> | {- empty -} { ([],Nothing) }--> ktyvar :: { TyVarBind L }-> : tyvar { UnkindedVar (ann $1) $1 }-> | '(' tyvar '::' kind ')' { KindedVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> tyvars :: { ([Name L],Maybe L) }-> : tyvars tyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }-> | {- empty -} { ([], Nothing) }--> tyvars1 :: { ([Name L],L) }-> : tyvars tyvar { ($2 : fst $1, snd $1 <?+> ann $2) }---------------------------------------------------------------------------------Functional Dependencies--These require the FunctionalDependencies extension to be enabled.--> fds :: { ([FunDep L],[S],Maybe L) }-> : {- empty -} { ([],[], Nothing) }-> | '|' fds1 {% do { checkEnabled FunctionalDependencies ;-> let {(fds,ss,l) = $2} ;-> return (reverse fds, $1 : reverse ss, Just (nIS $1 <++> l)) } }--> fds1 :: { ([FunDep L],[S],L) }-> : fds1 ',' fd { let (fds,ss,l) = $1 in ($3 : fds, $2 : ss, l <++> ann $3) }-> | fd { ([$1],[],ann $1) }--> fd :: { FunDep L }-> : tyvars1 '->' tyvars1 { FunDep (snd $1 <++> snd $3 <** [$2]) (reverse (fst $1)) (reverse (fst $3)) }--------------------------------------------------------------------------------Datatype declarations--GADTs - require the GADTs extension enabled, but we handle that at the calling site.-- gadtlist :: { ([GadtDecl L],[S],L) }- : gadtlist1 {% >> return $1 }--> gadtlist :: { ([GadtDecl L],[S],Maybe L) }-> : 'where' '{' gadtconstrs1 '}' {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }-> | 'where' open gadtconstrs1 close {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }-> | {- empty -} {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }--> gadtconstrs1 :: { ([GadtDecl L],[S]) }-> : optsemis gadtconstrs optsemis { (fst $2, reverse $1 ++ snd $2 ++ reverse $3) }--> gadtconstrs :: { ([GadtDecl L],[S]) }-> : gadtconstrs semis gadtconstr { ($3 : fst $1, snd $1 ++ reverse $2) }-> | gadtconstr { ([$1],[]) }--> gadtconstr :: { GadtDecl L }-> : qcon '::' truectype {% do { c <- checkUnQual $1;-> return $ GadtDecl ($1 <> $3 <** [$2]) c $3 } }--To allow the empty case we need the EmptyDataDecls extension.-> constrs0 :: { ([QualConDecl L],[S],Maybe L) }- : {- empty -} {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }-> : '=' constrs { let (ds,ss,l) = $2 in (ds, $1 : reverse ss, Just $ nIS $1 <++> l) }--> constrs :: { ([QualConDecl L],[S],L) }-> : constrs '|' constr { let (ds,ss,l) = $1 in ($3 : ds, $2 : ss, l <++> ann $3) }-> | constr { ([$1],[],ann $1) }--> constr :: { QualConDecl L }-> : forall context constr1 {% do { checkEnabled ExistentialQuantification ;-> ctxt <- checkContext (Just $2) ;-> let {(mtvs,ss,ml) = $1} ;-> return $ QualConDecl (ml <?+> ann $3 <** ss) mtvs ctxt $3 } }-> | forall constr1 { let (mtvs, ss, ml) = $1 in QualConDecl (ml <?+> ann $2 <** ss) mtvs Nothing $2 }--> forall :: { (Maybe [TyVarBind L], [S], Maybe L) }-> : 'forall' ktyvars '.' {% checkEnabled ExistentialQuantification >> return (Just (fst $2), [$1,$3], Just $ $1 <^^> $3) }-> | {- empty -} { (Nothing, [], Nothing) }--To avoid conflicts when introducing type operators, we need to parse record constructors-as qcon and then check separately that they are truly unqualified.--> constr1 :: { ConDecl L }-> : scontype { let (n,ts,l) = $1 in ConDecl l n ts }-> | sbtype conop sbtype { InfixConDecl ($1 <> $3) $1 $2 $3 }-> | qcon '{' '}' {% do { c <- checkUnQual $1; return $ RecDecl (ann $1 <++> nIS $3 <** [$2,$3]) c [] } }-> | qcon '{' fielddecls '}' {% do { c <- checkUnQual $1;-> return $ RecDecl (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) c (reverse (fst $3)) } }--> scontype :: { (Name L, [BangType L], L) }-> : btype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map (\t -> UnBangedTy (ann t) t) ts,ann $1) } }-> | scontype1 { $1 }--> scontype1 :: { (Name L, [BangType L],L) }-> : btype '!' trueatype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map (\t -> UnBangedTy (ann t) t) ts++-> [BangedTy (nIS $2 <++> ann $3 <** [$2]) $3], $1 <> $3) } }-> | btype '{-# UNPACK' '#-}' '!' trueatype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map (\t -> UnBangedTy (ann t) t) ts++-> [UnpackedTy (nIS $2 <++> ann $5 <** [$2,$3,$4]) $5], $1 <> $5) } }-> | scontype1 satype { let (n,ts,l) = $1 in (n, ts ++ [$2],l <++> ann $2) }--> satype :: { BangType L }-> : trueatype { UnBangedTy (ann $1) $1 }-> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> sbtype :: { BangType L }-> : truebtype { UnBangedTy (ann $1) $1 }-> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> fielddecls :: { ([FieldDecl L],[S]) }-> : fielddecls ',' fielddecl { ($3 : fst $1, $2 : snd $1) }-> | fielddecl { ([$1],[]) }--> fielddecl :: { FieldDecl L }-> : vars '::' stype { let (ns,ss,l) = $1 in FieldDecl (l <++> ann $3 <** (reverse ss ++ [$2])) (reverse ns) $3 }--> stype :: { BangType L }-> : truectype { UnBangedTy (ann $1) $1 }-> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> deriving :: { Maybe (Deriving L) }-> : {- empty -} { Nothing }-> | 'deriving' qtycls1 { let l = nIS $1 <++> ann $2 <** [$1] in Just $ Deriving l [IHead (ann $2) $2 []] }-> | 'deriving' '(' ')' { Just $ Deriving ($1 <^^> $3 <** [$1,$2,$3]) [] }-> | 'deriving' '(' dclasses ')' { Just $ Deriving ($1 <^^> $4 <** $1:$2: reverse (snd $3) ++ [$4]) (reverse (fst $3)) }--> dclasses :: { ([InstHead L],[S]) }-> : types1 {% checkDeriving (fst $1) >>= \ds -> return (ds, snd $1) }--> qtycls1 :: { QName L }-> : qconid { $1 }---------------------------------------------------------------------------------Kinds--> kind :: { Kind L }-> : kind1 {% checkEnabled KindSignatures >> return $1 }--> kind1 :: { Kind L }-> : akind { $1 }-> | akind '->' kind1 { KindFn ($1 <> $3 <** [$2]) $1 $3 }--> akind :: { Kind L }-> : '*' { KindStar (nIS $1) }-> | '!' { KindBang (nIS $1) }-> | '(' kind1 ')' { KindParen ($1 <^^> $3 <** [$1,$3]) $2 }--> optkind :: { (Maybe (Kind L), [S]) }-> : {-empty-} { (Nothing,[]) }-> | '::' kind { (Just $2,[$1]) }-------------------------------------------------------------------------------Class declarations--TODO: Lots of stuff to pass around here.--No implicit parameters in the where clause of a class declaration.-> optcbody :: { (Maybe [ClassDecl L],[S],Maybe L) }-> : 'where' '{' cldecls '}' {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | 'where' open cldecls close {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | {- empty -} { (Nothing,[],Nothing) }--> cldecls :: { ([ClassDecl L],[S]) }-> : optsemis cldecls1 optsemis {% checkRevClsDecls (fst $2) >>= \cs -> return (cs, reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([],reverse $1) }--> cldecls1 :: { ([ClassDecl L],[S]) }-> : cldecls1 semis cldecl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | cldecl { ([$1],[]) }--Associated types require the TypeFamilies extension.--> cldecl :: { ClassDecl L }-> : decl { ClsDecl (ann $1) $1 }-> | atdecl {% checkEnabled TypeFamilies >> return $1 }--> atdecl :: { ClassDecl L }-> : 'type' type optkind-> {% do { dh <- checkSimpleType $2;-> return (ClsTyFam (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) dh (fst $3)) } }-> | 'type' truedtype '=' truectype-> { ClsTyDef (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }-> | 'data' ctype optkind-> {% do { (cs,dh) <- checkDataHeader $2;-> return (ClsDataFam (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) cs dh (fst $3)) } }--------------------------------------------------------------------------------Instance declarations--> optvaldefs :: { (Maybe [InstDecl L],[S],Maybe L) }-> : 'where' '{' valdefs '}' {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | 'where' open valdefs close {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | {- empty -} { (Nothing, [], Nothing) }--> valdefs :: { ([InstDecl L],[S]) }-> : optsemis valdefs1 optsemis {% checkRevInstDecls (fst $2) >>= \is -> return (is, reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([],reverse $1) }--> valdefs1 :: { ([InstDecl L],[S]) }-> : valdefs1 semis insvaldef { ($3 : fst $1, snd $1 ++ reverse $2) }-> | insvaldef { ([$1],[]) }--Associated types require the TypeFamilies extension enabled.--> insvaldef :: { InstDecl L }-> : valdef { InsDecl (ann $1) $1 }-> | atinst {% checkEnabled TypeFamilies >> return $1 }-> | specinldecl { InsDecl (ann $1) $1 }-- inlinst :: { InstDecl L }- : '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InsInline (l <^^> $4 <** [l,$4]) s $2 $3 }--> atinst :: { InstDecl L }-> : 'type' truedtype '=' truectype-> {% do { -- no checkSimpleType $4 since dtype may contain type patterns-> return (InsType (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4) } }-> | data_or_newtype truectype constrs0 deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> let {(ds,ss,minf) = $3};-> checkDataOrNew $1 ds;-> return (InsData ($1 <> $2 <+?> minf <+?> fmap ann $4 <** ss ) $1 $2 (reverse ds) $4) } }-> | data_or_newtype truectype optkind gadtlist deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> let { (gs,ss,minf) = $4 } ;-> checkDataOrNewG $1 gs;-> return $ InsGData (ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)) $1 $2 (fst $3) (reverse gs) $5 } }--------------------------------------------------------------------------------Value definitions--> valdef :: { Decl L }-> : exp0b optsig rhs optwhere {% checkValDef (($1 <> $3 <+?> (fmap ann) (fst $4)) <** (snd $2 ++ snd $4)) $1 (fst $2) $3 (fst $4) }-> | '!' aexp rhs optwhere {% do { checkEnabled BangPatterns ;-> let { l = nIS $1 <++> ann $2 <** [$1] };-> p <- checkPattern (BangPat l $2);-> return $ PatBind (p <> $3 <+?> (fmap ann) (fst $4) <** snd $4)-> p Nothing $3 (fst $4) } }--May bind implicit parameters-> optwhere :: { (Maybe (Binds L),[S]) }-> : 'where' binds { (Just $2, [$1]) }-> | {- empty -} { (Nothing, []) }--Type signatures on value definitions require ScopedTypeVariables (or PatternSignatures, which is deprecated).--> optsig :: { (Maybe (Type L),[S]) }-> : '::' truectype {% checkEnabled ScopedTypeVariables >> return (Just $2, [$1]) }-> | {- empty -} { (Nothing,[]) }--> rhs :: { Rhs L }-> : '=' trueexp { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }-> | gdrhs { GuardedRhss (snd $1) (reverse $ fst $1) }--> gdrhs :: { ([GuardedRhs L],L) }-> : gdrhs gdrh { ($2 : fst $1, snd $1 <++> ann $2) }-> | gdrh { ([$1],ann $1) }--Guards may contain patterns if PatternGuards is enabled, hence quals instead of exp.-> gdrh :: { GuardedRhs L }-> : '|' quals '=' trueexp {% do { checkPatternGuards (fst $2);-> return $ GuardedRhs (nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])) (reverse (fst $2)) $4 } }--------------------------------------------------------------------------------Expressions--Note: The Report specifies a meta-rule for lambda, let and if expressions-(the exp's that end with a subordinate exp): they extend as far to-the right as possible. That means they cannot be followed by a type-signature or infix application. To implement this without shift/reduce-conflicts, we split exp10 into these expressions (exp10a) and the others-(exp10b). That also means that only an exp0 ending in an exp10b (an exp0b)-can followed by a type signature or infix application. So we duplicate-the exp0 productions to distinguish these from the others (exp0a).--Ugly: We need non-parenthesized post-operators for HaRP, and to parse both-these and normal left sections, we parse both as PostOp and let the post pass-mangle them into the correct form depending on context.--> trueexp :: { Exp L }-> : exp {% checkExpr $1 }--> exp :: { PExp L }-> : exp0b '::' truectype { ExpTypeSig ($1 <> $3 <** [$2]) $1 $3 }-> | exp0 { $1 }-> | exp0b qop { PostOp ($1 <> $2) $1 $2 }-> | exp0b '-<' exp { LeftArrApp ($1 <> $3 <** [$2]) $1 $3 }-> | exp0b '>-' exp { RightArrApp ($1 <> $3 <** [$2]) $1 $3 }-> | exp0b '-<<' exp { LeftArrHighApp ($1 <> $3 <** [$2]) $1 $3 }-> | exp0b '>>-' exp { RightArrHighApp ($1 <> $3 <** [$2]) $1 $3 }--> exp0 :: { PExp L }-> : exp0a { $1 }-> | exp0b { $1 }--> exp0a :: { PExp L }-> : exp0b qop exp10a { InfixApp ($1 <> $3) $1 $2 $3 }-> | exp10a { $1 }--> exp0b :: { PExp L }-> : exp0b qop exp10b { InfixApp ($1 <> $3) $1 $2 $3 }-> | exp10b { $1 }--> exp10a :: { 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 }-> | 'if' exp 'then' exp 'else' exp { If (nIS $1 <++> ann $6 <** [$1,$3,$5]) $2 $4 $6 }-> | 'proc' apat '->' exp { Proc (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }-> | exppragma { $1 }--mdo blocks require the RecursiveDo extension enabled, but the lexer handles that.--> exp10b :: { PExp L }-> : 'case' exp 'of' altslist { let (als, inf, ss) = $4 in Case (nIS $1 <++> inf <** ($1:$3:ss)) $2 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 }-> | '{-# SCC' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in SCCPragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }-> | '{-# GENERATED' STRING INT ':' INT '-' INT ':' INT '#-}' exp-> { let { Loc l0 (StringTok (s,_)) = $2;-> Loc l1 (IntTok (i1,_)) = $3;-> Loc l2 (IntTok (i2,_)) = $5;-> Loc l3 (IntTok (i3,_)) = $7;-> Loc l4 (IntTok (i4,_)) = $9}-> in GenPragma (nIS $1 <++> ann $11 <** [$1,l0,l1,$4,l2,$6,l3,$8,l4,$10])-> s (fromInteger i1, fromInteger i2)-> (fromInteger i3, fromInteger i4) $11 }--> fexp :: { PExp L }-> : fexp aexp { App ($1 <> $2) $1 $2 }-> | aexp { $1 }--> apats :: { [Pat L] }-> : apats apat { $2 : $1 }-> | apat { [$1] }--> apat :: { Pat L }-> : aexp {% checkPattern $1 }-> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }--UGLY: Because patterns and expressions are mixed, aexp has to be split into-two rules: One right-recursive and one left-recursive. Otherwise we get two-reduce/reduce-errors (for as-patterns and irrefutable patters).--Even though the variable in an as-pattern cannot be qualified, we use-qvar here to avoid a shift/reduce conflict, and then check it ourselves-(as for vars above).--Non-linear name binding, @:, requires RegularPatterns, but the lexer handles that.--> aexp :: { PExp L }-> : qvar '@' aexp {% do { n <- checkUnQual $1;-> return (AsPat ($1 <> $3 <** [$2]) n $3) } }-> | qvar '@:' aexp {% do { n <- checkUnQual $1;-> return (CAsRP ($1 <> $3 <** [$2]) n $3) } }-> | '~' aexp { IrrPat (nIS $1 <++> ann $2 <** [$1]) $2 }-> | aexp1 { $1 }--Note: The first two alternatives of aexp1 are not necessarily record-updates: they could be labeled constructions.-Generics-style explicit type arguments need the Generics extension, but-we check that in the lexer.--> aexp1 :: { PExp L }-> : aexp1 '{' '}' {% liftM (amap (const (ann $1 <++> nIS $3 <** [$2,$3]))) $ mkRecConstrOrUpdate $1 [] }-> | aexp1 '{' fbinds '}' {% liftM (amap (const (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4]))))-> $ mkRecConstrOrUpdate $1 (reverse (fst $3)) }-> | qvar '{|' truetype '|}' { ExplTypeArg (ann $1 <++> nIS $4 <** [$2,$4]) $1 $3 }-> | aexp2 { $1 }--According to the Report, the left section (e op) is legal iff (e op x)-parses equivalently to ((e) op x). Thus e must be an exp0b.-An implicit parameter can be used as an expression, enabled by the lexer.-Extensions using banana brackets are also enabled by the lexer. The only-thing we need to look at here is the erpats that use no non-standard lexemes.--> aexp2 :: { PExp L }-> : ivar { IPVar (ann $1) $1 }-> | qvar { Var (ann $1) $1 }-> | gcon { $1 }-> | literal { Lit (ann $1) $1 }-> | '(' texp ')' { Paren ($1 <^^> $3 <** [$1,$3]) $2 }-> | '(' texp tsectend { TupleSection ($1 <^^> head (snd $3) <** $1:reverse (snd $3)) (Just $2 : fst $3) }-> | '(' commas texp ')' { TupleSection ($1 <^^> $4 <** $1:reverse ($4:$2))-> (replicate (length $2) Nothing ++ [Just $3]) }-> | '(' commas texp tsectend { TupleSection ($1 <^^> head (snd $4) <** $1:reverse (snd $4 ++ $2))-> (replicate (length $2) Nothing ++ Just $3 : fst $4) }-> | '[' list ']' { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }-> | '_' { WildCard (nIS $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) }-> | xml { $1 }--Template Haskell - all this is enabled in the lexer.-> | IDSPLICE { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }-> | '$(' trueexp ')' { SpliceExp ($1 <^^> $3 <** [$1,$3]) $ ParenSplice (ann $2) $2 }-> | '[|' trueexp '|]' { BracketExp ($1 <^^> $3 <** [$1,$3]) $ ExpBracket (ann $2) $2 }-> | '[p|' exp0 '|]' {% do { p <- checkPattern $2;-> return $ BracketExp ($1 <^^> $3 <** [$1,$3]) $ PatBracket (ann p) p } }-> | '[t|' truectype '|]' { let l = $1 <^^> $3 <** [$1,$3] in BracketExp l $ TypeBracket l $2 }-> | '[d|' open topdecls close '|]' { let l = $1 <^^> $5 <** ($1:snd $3 ++ [$5]) in BracketExp l $ DeclBracket l (fst $3) }-> | VARQUOTE qvar { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }-> | VARQUOTE qcon { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }-> | TYPQUOTE tyvar { TypQuote (nIS $1 <++> ann $2 <** [$1]) (UnQual (ann $2) $2) }-> | TYPQUOTE gtycon { TypQuote (nIS $1 <++> ann $2 <** [$1]) $2 }-> | QUASIQUOTE { let Loc l (THQuasiQuote (n,q)) = $1 in QuasiQuote (nIS l) n q }-End Template Haskell--> commas :: { [S] }-> : commas ',' { $2 : $1 }-> | ',' { [$1] }--> texp :: { PExp L }-> : exp { $1 }-> | qopm exp0 { PreOp ($1 <> $2) $1 $2 }-> | exp '->' exp {% do {checkEnabled ViewPatterns;-> return $ ViewPat ($1 <> $3 <** [$2]) $1 $3} }--> tsectend :: { ([Maybe (PExp L)],[S]) }-> : commas texp tsectend { let (mes, ss) = $3 in (replicate (length $1 - 1) Nothing ++ Just $2 : mes, ss ++ $1) }-> | commas texp ')' { (replicate (length $1 - 1) Nothing ++ [Just $2], $3 : $1) }-> | commas ')' { (replicate (length $1) Nothing, $2 : $1) }--------------------------------------------------------------------------------Harp Extensions--> sexps :: { ([PExp L],[S]) }-> : sexps ',' exp { ($3 : fst $1, $2 : snd $1) }-> | exp { ([$1],[]) }--Either patterns are left associative-> erpats :: { PExp L }-> : exp '|' erpats { EitherRP ($1 <> $3 <** [$2]) $1 $3 }-> | exp '|' exp { EitherRP ($1 <> $3 <** [$2]) $1 $3 }--------------------------------------------------------------------------------Hsx Extensions - requires XmlSyntax, but the lexer handles all that.--> xml :: { PExp L }-> : '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $2 $8;-> let { cn = reverse $6;-> as = reverse $3;-> l = $1 <^^> $9 <** [$1,$5,$7,srcInfoSpan (ann $8),$9] };-> return $ XTag l n as $4 cn } }-> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }-> | '<%' exp '%>' { XExpTag ($1 <^^> $3 <** [$1,$3]) $2 }-> | '<%>' children '</' '%>' { XChildTag ($1 <^^> $4 <** [$1,$3,$4]) (reverse $2) }--> children :: { [PExp L] }-> : children child { $2 : $1 }-> | {- empty -} { [] }--> child :: { PExp L }-> : PCDATA { let Loc l (XPCDATA pcd) = $1 in XPcdata (nIS l) pcd }-> | '<[' sexps ']>' { XRPats ($1 <^^> $3 <** (snd $2 ++ [$1,$3])) $ reverse (fst $2) }-> | xml { $1 }--> name :: { XName L }-> : xmlname ':' xmlname { let {Loc l1 s1 = $1; Loc l2 s2 = $3}-> in XDomName (nIS l1 <++> nIS l2 <** [l1,$2,l2]) s1 s2 }-> | xmlname { let Loc l str = $1 in XName (nIS l) str }--> xmlname :: { Loc String }-> : VARID { let Loc l (VarId s) = $1 in Loc l s }-> | CONID { let Loc l (ConId s) = $1 in Loc l s }-> | DVARID { let Loc l (DVarId s) = $1 in Loc l $ mkDVar s }-> | xmlkeyword { $1 }--> xmlkeyword :: { Loc String }-> : 'type' { Loc $1 "type" }-> | 'class' { Loc $1 "class" }-> | 'data' { Loc $1 "data" }-> | 'foreign' { Loc $1 "foreign" }-> | 'export' { Loc $1 "export" }-> | 'safe' { Loc $1 "safe" }-> | 'unsafe' { Loc $1 "unsafe" }-> | 'threadsafe' { Loc $1 "threadsafe" }-> | 'stdcall' { Loc $1 "stdcall" }-> | 'ccall' { Loc $1 "ccall" }-> | 'as' { Loc $1 "as" }-> | 'by' { Loc $1 "by" }-> | 'case' { Loc $1 "case" }-> | 'default' { Loc $1 "default" }-> | 'deriving' { Loc $1 "deriving" }-> | 'do' { Loc $1 "do" }-> | 'else' { Loc $1 "else" }-> | 'family' { Loc $1 "family" }-> | 'forall' { Loc $1 "forall" }-> | 'group' { Loc $1 "group" }-> | 'hiding' { Loc $1 "hiding" }-> | 'if' { Loc $1 "if" }-> | 'import' { Loc $1 "import" }-> | 'in' { Loc $1 "in" }-> | 'infix' { Loc $1 "infix" }-> | 'infixl' { Loc $1 "infixl" }-> | 'infixr' { Loc $1 "infixr" }-> | 'instance' { Loc $1 "instance" }-> | 'let' { Loc $1 "let" }-> | 'mdo' { Loc $1 "mdo" }-> | 'module' { Loc $1 "module" }-> | 'newtype' { Loc $1 "newtype" }-> | 'of' { Loc $1 "of" }-> | 'proc' { Loc $1 "proc" }-> | 'rec' { Loc $1 "rec" }-> | 'then' { Loc $1 "then" }-> | 'using' { Loc $1 "using" }-> | 'where' { Loc $1 "where" }-> | 'qualified' { Loc $1 "qualified" }---> attrs :: { [ParseXAttr L] }-> : attrs attr { $2 : $1 }-> | {- empty -} { [] }--> attr :: { ParseXAttr L }-> : name '=' aexp { XAttr ($1 <> $3 <** [$2]) $1 $3 }--> mattr :: { Maybe (PExp L) }--> : aexp { Just $1 }-> | {-empty-} { Nothing }--------------------------------------------------------------------------------List expressions--The rules below are little bit contorted to keep lexps left-recursive while-avoiding another shift/reduce-conflict.--> list :: { L -> PExp L }-> : texp { \l -> List l [$1] }-> | lexps { \l -> let (ps,ss) = $1 in List (l <** reverse ss) (reverse ps) }-> | texp '..' { \l -> EnumFrom (l <** [$2]) $1 }-> | texp ',' exp '..' { \l -> EnumFromThen (l <** [$2,$4]) $1 $3 }-> | texp '..' exp { \l -> EnumFromTo (l <** [$2]) $1 $3 }-> | texp ',' exp '..' exp { \l -> EnumFromThenTo (l <** [$2,$4]) $1 $3 $5 }-> | texp '|' pqualstmts { \l -> let (stss, ss) = $3 in ParComp (l <** ($2:ss)) $1 (reverse stss) }--> lexps :: { ([PExp L],[S]) }-> : lexps ',' texp { let (es, ss) = $1 in ($3 : es, $2 : ss) }-> | texp ',' texp { ([$3,$1], [$2]) }--------------------------------------------------------------------------------List comprehensions--> pqualstmts :: { ([[QualStmt L]],[S]) }-> : pqualstmts '|' qualstmts { let { (stss, ss1) = $1;-> (sts, ss2) = $3 }-> in (reverse sts : stss, ss1 ++ [$2] ++ reverse ss2) }-> | qualstmts { let (sts, ss) = $1 in ([reverse sts], reverse ss) }--> qualstmts :: { ([QualStmt L],[S]) }-> : qualstmts ',' qualstmt { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }-> | qualstmt { ([$1],[]) }--> qualstmt :: { QualStmt L }-> : transformqual { $1 }-> | qual { QualStmt (ann $1) $1 }--> transformqual :: { QualStmt L }-> : 'then' trueexp { ThenTrans (nIS $1 <++> ann $2 <** [$1]) $2 }-> | 'then' trueexp 'by' trueexp { ThenBy (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }-> | 'then' 'group' 'by' trueexp { GroupBy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }-> | 'then' 'group' 'using' trueexp { GroupUsing (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }-> | 'then' 'group' 'by' trueexp 'using' trueexp { GroupByUsing (nIS $1 <++> ann $6 <** [$1,$2,$3,$5]) $4 $6 }--> quals :: { ([Stmt L],[S]) }-> : quals ',' qual { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }-> | qual { ([$1],[]) }--> qual :: { Stmt L }-> : pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }-> | trueexp { Qualifier (ann $1) $1 }-> | 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }---------------------------------------------------------------------------------Case alternatives--> altslist :: { ([Alt L],L,[S]) }-> : '{' alts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }-> | open alts close { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }--> alts :: { ([Alt L],[S]) }-> : optsemis alts1 optsemis { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }--> alts1 :: { ([Alt L],[S]) }-> : alts1 semis alt { ($3 : fst $1, snd $1 ++ $2) }-> | alt { ([$1],[]) }--> alt :: { Alt L }-> : pat ralt optwhere { Alt ($1 <> $2 <+?> (fmap ann) (fst $3) <** snd $3) $1 $2 (fst $3) }--> ralt :: { GuardedAlts L }-> : '->' trueexp { UnGuardedAlt (nIS $1 <++> ann $2 <** [$1]) $2 }-> | gdpats { GuardedAlts (snd $1) (reverse $ fst $1) }--> gdpats :: { ([GuardedAlt L],L) }-> : gdpats gdpat { ($2 : fst $1, snd $1 <++> ann $2) }-> | gdpat { ([$1], ann $1) }--A guard can be a pattern guard if PatternGuards is enabled, hence quals instead of exp0.-> gdpat :: { GuardedAlt L }-> : '|' quals '->' trueexp {% do { checkPatternGuards (fst $2);-> let {l = nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])};-> return (GuardedAlt l (reverse (fst $2)) $4) } }--> pat :: { Pat L }-> : exp {% checkPattern $1 }-> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }-------------------------------------------------------------------------------Statement sequences--As per the Report, but with stmt expanded to simplify building the list-without introducing conflicts. This also ensures that the last stmt is-an expression.--TODO: The points can't be added here, must be propagated!--> stmtlist :: { ([Stmt L],L,[S]) }-> : '{' stmts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }-> | open stmts close { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }--> stmts :: { ([Stmt L],[S]) }-> : stmt stmts1 { ($1 : fst $2, snd $2) }-> | ';' stmts { (fst $2, $1 : snd $2) }-> | {- empty -} { ([],[]) }--> stmts1 :: { ([Stmt L],[S]) }-> : ';' stmts { (fst $2, $1 : snd $2) }-> | {- empty -} { ([],[]) }--A let statement may bind implicit parameters.-> stmt :: { Stmt L }-> : 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }-> | pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }-> | trueexp { Qualifier (ann $1) $1 }-> | 'rec' stmtlist { let (stms,inf,ss) = $2 in RecStmt (nIS $1 <++> inf <** $1:ss) stms }--------------------------------------------------------------------------------Record Field Update/Construction--> fbinds :: { ([PFieldUpdate L],[S]) }-> : fbinds ',' fbind { let (fbs, ss) = $1 in ($3 : fbs, $2 : ss) }-> | fbind { ([$1],[]) }--Puns and wild cards need the respective extensions enabled.--> fbind :: { PFieldUpdate L }-> : qvar '=' exp { FieldUpdate ($1 <>$3 <** [$2]) $1 $3 }-> | qvar {% checkEnabled NamedFieldPuns >> checkUnQual $1 >>= return . FieldPun (ann $1) }-> | '..' {% checkEnabled RecordWildCards >> return (FieldWildcard (nIS $1)) }--------------------------------------------------------------------------------Implicit parameter bindings - need the ImplicitParameter extension enabled, but the lexer handles that.--> ipbinds :: { ([IPBind L],[S]) }-> : optsemis ipbinds1 optsemis { (reverse (fst $2), reverse $1 ++ snd $2 ++ reverse $3) }--> ipbinds1 :: { ([IPBind L],[S]) }-> : ipbinds1 semis ipbind { ($3 : fst $1, snd $1 ++ reverse $2) }-> | ipbind { ([$1],[]) }--> ipbind :: { IPBind L }-> : ivar '=' trueexp { IPBind ($1 <> $3 <** [$2]) $1 $3 }--------------------------------------------------------------------------------Variables, Constructors and Operators.--> gcon :: { PExp L }-> : '(' ')' { p_unit_con ($1 <^^> $2 <** [$1,$2]) }-> | '[' ']' { List ($1 <^^> $2 <** [$1,$2]) [] }-> | '(' commas ')' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Boxed (length $2) }-> | '(#' '#)' { p_unboxed_singleton_con ($1 <^^> $2 <** [$1,$2]) }-> | '(#' commas '#)' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Unboxed (length $2) }-> | qcon { Con (ann $1) $1 }--> var :: { Name L }-> : varid { $1 }-> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> var_no_safety :: { Name L }-> : varid_no_safety { $1 }-> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvar :: { QName L }-> : qvarid { $1 }-> | '(' qvarsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--Implicit parameter-> ivar :: { IPName L }-> : ivarid { $1 }--> con :: { Name L }-> : conid { $1 }-> | '(' consym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qcon :: { QName L }-> : qconid { $1 }-> | '(' gconsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> varop :: { Name L }-> : varsym { $1 }-> | '`' varid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvarop :: { QName L }-> : qvarsym { $1 }-> | '`' qvarid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvaropm :: { QName L }-> : qvarsymm { $1 }-> | '`' qvarid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> conop :: { Name L }-> : consym { $1 }-> | '`' conid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qconop :: { QName L }-> : gconsym { $1 }-> | '`' qconid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> op :: { Op L }-> : varop { VarOp (ann $1) $1 }-> | conop { ConOp (ann $1) $1 }--> qop :: { QOp L }-> : qvarop { QVarOp (ann $1) $1 }-> | qconop { QConOp (ann $1) $1 }--> qopm :: { QOp L }-> : qvaropm { QVarOp (ann $1) $1 }-> | qconop { QConOp (ann $1) $1 }--> gconsym :: { QName L }-> : ':' { list_cons_name (nIS $1) }-> | qconsym { $1 }--------------------------------------------------------------------------------Identifiers and Symbols--> qvarid :: { QName L }-> : varid { UnQual (ann $1) $1 }-> | QVARID { let {Loc l (QVarId q) = $1; nis = nIS l}-> in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }--> varid_no_safety :: { Name L }-> : VARID { let Loc l (VarId v) = $1 in Ident (nIS l) v }-> | 'as' { as_name (nIS $1) }-> | 'qualified' { qualified_name (nIS $1) }-> | 'hiding' { hiding_name (nIS $1) }-> | 'export' { export_name (nIS $1) }-> | 'stdcall' { stdcall_name (nIS $1) }-> | 'ccall' { ccall_name (nIS $1) }--> varid :: { Name L }-> : varid_no_safety { $1 }-> | 'safe' { safe_name (nIS $1) }-> | 'unsafe' { unsafe_name (nIS $1) }-> | 'threadsafe' { threadsafe_name (nIS $1) }---Implicit parameter-> ivarid :: { IPName L }-> : IDUPID { let Loc l (IDupVarId i) = $1 in IPDup (nIS l) i }-> | ILINID { let Loc l (ILinVarId i) = $1 in IPLin (nIS l) i }--> qconid :: { QName L }-> : conid { UnQual (ann $1) $1 }-> | QCONID { let {Loc l (QConId q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }--> conid :: { Name L }-> : CONID { let Loc l (ConId c) = $1 in Ident (nIS l) c }--> qconsym :: { QName L }-> : consym { UnQual (ann $1) $1 }-> | QCONSYM { let {Loc l (QConSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }--> consym :: { Name L }-> : CONSYM { let Loc l (ConSym c) = $1 in Symbol (nIS l) c }--> qvarsym :: { QName L }-> : varsym { UnQual (ann $1) $1 }-> | qvarsym1 { $1 }--> qvarsymm :: { QName L }-> : varsymm { UnQual (ann $1) $1 }-> | qvarsym1 { $1 }--> varsym :: { Name L }-> : VARSYM { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }-> | '-' { minus_name (nIS $1) }-> | '!' { bang_name (nIS $1) }-> | '.' { dot_name (nIS $1) }-> | '*' { star_name (nIS $1) }--> varsymm :: { Name L } -- varsym not including '-'-> : VARSYM { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }-> | '!' { bang_name (nIS $1) }-> | '.' { dot_name (nIS $1) }-> | '*' { star_name (nIS $1) }--> qvarsym1 :: { QName L }-> : QVARSYM { let {Loc l (QVarSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }--> literal :: { Literal L }-> : INT { let Loc l (IntTok (i,raw)) = $1 in Int (nIS l) i raw }-> | CHAR { let Loc l (Character (c,raw)) = $1 in Char (nIS l) c raw }-> | RATIONAL { let Loc l (FloatTok (r,raw)) = $1 in Frac (nIS l) r raw }-> | STRING { let Loc l (StringTok (s,raw)) = $1 in String (nIS l) s raw }-> | PRIMINT { let Loc l (IntTokHash (i,raw)) = $1 in PrimInt (nIS l) i raw }-> | PRIMWORD { let Loc l (WordTokHash (w,raw)) = $1 in PrimWord (nIS l) w raw }-> | PRIMFLOAT { let Loc l (FloatTokHash (f,raw)) = $1 in PrimFloat (nIS l) f raw }-> | PRIMDOUBLE { let Loc l (DoubleTokHash (d,raw)) = $1 in PrimDouble (nIS l) d raw }-> | PRIMCHAR { let Loc l (CharacterHash (c,raw)) = $1 in PrimChar (nIS l) c raw }-> | PRIMSTRING { let Loc l (StringHash (s,raw)) = $1 in PrimString (nIS l) s raw }--------------------------------------------------------------------------------Layout--> open :: { S } : {% pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -} }--> close :: { S }-> : vccurly { $1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} } -- context popped in lexer.-> | error {% popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -} }--------------------------------------------------------------------------------Miscellaneous (mostly renamings)--> modid :: { ModuleName L }-> : CONID { let Loc l (ConId n) = $1 in ModuleName (nIS l) n }-> | QCONID { let Loc l (QConId n) = $1 in ModuleName (nIS l) (fst n ++ '.':snd n) }--> tyconorcls :: { Name L }-> : con { $1 }--> qtyconorcls :: { QName L }-> : qcon { $1 }--> tyvar :: { Name L }-> : varid { $1 }--> qtyvarop :: { QName L }-> qtyvarop : '`' tyvar '`' { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }-> | tyvarsym { UnQual (ann $1) $1 }--> tyvarsym :: { Name L }-> tyvarsym : VARSYM { let Loc l (VarSym x) = $1 in Symbol (nIS l) x }---------------------------------------------------------------------------------> {--> type L = SrcSpanInfo -- just for convenience-> type S = SrcSpan--> parseError :: Loc Token -> P a-> parseError t = fail $ "Parse error: " ++ showToken (unLoc t)--> (<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo-> a <> b = ann a <++> ann b->-> infixl 6 <>--> nIS = noInfoSpan-> iS = infoSpan---> -- | Parse of a string, which should contain a complete Haskell module.-> parseModule :: String -> ParseResult (Module SrcSpanInfo)-> parseModule = simpleParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode.-> parseModuleWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)-> parseModuleWithMode = modeParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseModuleWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])-> parseModuleWithComments = commentParse mparseModule--> -- | Parse of a string containing a Haskell expression.-> parseExp :: String -> ParseResult (Exp SrcSpanInfo)-> parseExp = simpleParse mparseExp--> -- | Parse of a string containing a Haskell expression, using an explicit mode.-> parseExpWithMode :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo)-> parseExpWithMode = modeParse mparseExp--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseExpWithComments :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment])-> parseExpWithComments = commentParse mparseExp--> -- | Parse of a string containing a Haskell pattern.-> parsePat :: String -> ParseResult (Pat SrcSpanInfo)-> parsePat = simpleParse mparsePat--> -- | Parse of a string containing a Haskell pattern, using an explicit mode.-> parsePatWithMode :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo)-> parsePatWithMode = modeParse mparsePat--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parsePatWithComments :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment])-> parsePatWithComments = commentParse mparsePat--> -- | Parse of a string containing a Haskell top-level declaration.-> parseDecl :: String -> ParseResult (Decl SrcSpanInfo)-> parseDecl = simpleParse mparseDecl--> -- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.-> parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo)-> parseDeclWithMode = modeParse mparseDecl--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment])-> parseDeclWithComments = commentParse mparseDecl--> -- | Parse of a string containing a Haskell type.-> parseType :: String -> ParseResult (Type SrcSpanInfo)-> parseType = runParser mparseType--> -- | Parse of a string containing a Haskell type, using an explicit mode.-> parseTypeWithMode :: ParseMode -> String -> ParseResult (Type SrcSpanInfo)-> parseTypeWithMode mode = runParserWithMode mode mparseType--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseTypeWithComments :: ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment])-> parseTypeWithComments mode str = runParserWithModeComments mode mparseType str--> -- | Parse of a string containing a Haskell statement.-> parseStmt :: String -> ParseResult (Stmt SrcSpanInfo)-> parseStmt = runParser mparseStmt--> -- | Parse of a string containing a Haskell type, using an explicit mode.-> parseStmtWithMode :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo)-> parseStmtWithMode mode = runParserWithMode mode mparseStmt--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment])-> parseStmtWithComments mode str = runParserWithModeComments mode mparseStmt str---> simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L)-> simpleParse p = applyFixities preludeFixities <=< runParser p--> modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L)-> modeParse p mode = applyFixities' (fixities mode) <=< runParserWithMode mode p--> commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment])-> commentParse p mode str = do (ast, cs) <- runParserWithModeComments mode p str-> ast' <- applyFixities' (fixities mode) ast-> return (ast', cs)--> -- | Partial parse of a string starting with a series of top-level option pragmas.-> getTopPragmas :: String -> ParseResult [ModulePragma SrcSpanInfo]-> getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps)--> -- | Parse of a string, which should contain a complete Haskell module.-> parseModules :: String -> ParseResult [Module SrcSpanInfo]-> parseModules = mapM (applyFixities preludeFixities) <=< runParser mparseModules--> -- | Parse of a string containing a complete Haskell module, using an explicit mode.-> parseModulesWithMode :: ParseMode -> String -> ParseResult [Module SrcSpanInfo]-> parseModulesWithMode mode = mapM (applyFixities' (fixities mode)) <=< runParserWithMode mode mparseModules--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseModulesWithComments :: ParseMode -> String -> ParseResult ([Module SrcSpanInfo], [Comment])-> parseModulesWithComments mode str = do (ast,cs) <- runParserWithModeComments mode mparseModules str-> ast' <- mapM (applyFixities' (fixities mode)) ast-> return (ast', cs)->-> applyFixities' :: (AppFixity a) => Maybe [Fixity] -> a L -> ParseResult (a L)-> applyFixities' Nothing ast = return ast-> applyFixities' (Just fixs) ast = applyFixities fixs ast->+> {-# LANGUAGE CPP #-}+> {-# OPTIONS_HADDOCK hide #-}+> +> -----------------------------------------------------------------------------+> -- |+> -- Module : Language.Haskell.Exts.Annotated.Parser+> -- Copyright : (c) Niklas Broberg 2004-2009,+> -- Original (c) Simon Marlow, Sven Panne 1997-2000+> -- License : BSD-style (see the file LICENSE.txt)+> --+> -- Maintainer : Niklas Broberg, d00nibro@chalmers.se+> -- Stability : stable+> -- Portability : portable+> --+> --+> -----------------------------------------------------------------------------+>+> module Language.Haskell.Exts.InternalParser (+> mparseModule,+> mparseExp,+> mparsePat,+> mparseDecl,+> mparseType,+> mparseStmt,+> mparseImportDecl,+> ngparseModulePragmas,+> ngparseModuleHeadAndImports,+> ngparsePragmasAndModuleHead,+> ngparsePragmasAndModuleName+> ) where+>+> import Language.Haskell.Exts.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )+> import Language.Haskell.Exts.Syntax ( Type, Exp, Asst )+> import Language.Haskell.Exts.ParseMonad+> import Language.Haskell.Exts.InternalLexer+> import Language.Haskell.Exts.ParseUtils+> import Language.Haskell.Exts.Fixity+> import Language.Haskell.Exts.SrcLoc+> import Language.Haskell.Exts.Extension++> import Control.Monad ( liftM, (<=<), when )+> import Control.Applicative ( (<$>) )+> import Data.Maybe+> #if MIN_VERSION_base(4,11,0)+> import Prelude hiding ((<>))+> #endif+import Debug.Trace (trace)++> }++-----------------------------------------------------------------------------+This module comprises a parser for Haskell 98 with the following extensions++* Multi-parameter type classes with functional dependencies+* Implicit parameters+* Pattern guards+* Mdo notation+* FFI+* HaRP+* HSP++Most of the code is blatantly stolen from the GHC module Language.Haskell.Parser.+Some of the code for extensions is greatly influenced by GHC's internal parser+library, ghc/compiler/parser/Parser.y.+-----------------------------------------------------------------------------+Conflicts: 7 shift/reduce++2 for ambiguity in 'case x of y | let z = y in z :: Bool -> b' [State 99, 186]+ (don't know whether to reduce 'Bool' as a btype or shift the '->'.+ Similarly lambda and if. The default resolution in favour of the+ shift means that a guard can never end with a type signature.+ In mitigation: it's a rare case and no Haskell implementation+ allows these, because it would require unbounded lookahead.)+ There are 2 conflicts rather than one because contexts are parsed+ as btypes (cf ctype).++1 for ambiguity in 'let ?x ...' [State 604]+ the parser can't tell whether the ?x is the lhs of a normal binding or+ an implicit binding. Fortunately resolving as shift gives it the only+ sensible meaning, namely the lhs of an implicit binding.++1 for ambiguity using hybrid modules [State 159]+ For HSP pages that start with a <% %> block, the parser cannot tell whether+ to reduce a srcloc or shift the starting <%. Since any other body could not+ start with <%, shifting is the only sensible thing to do.++1 for ambiguity using toplevel xml modules [State 158]+ For HSP xml pages starting with a <, the parser cannot tell whether to shift+ that < or reduce an implicit 'open'. Since no other body could possibly start+ with <, shifting is the only sensible thing to do.++1 for ambiguity in '{-# RULES "name" [ ... #-}' [State 177]+ we don't know whether the '[' starts the activation or not: it+ might be the start of the declaration with the activation being+ empty. Resolving with shift means the declaration cannot start with '['.++1 for ambiguity in '{-# RULES "name" forall = ... #-}' [State 544]+ since 'forall' is a valid variable name, we don't know whether+ to treat a forall on the input as the beginning of a quantifier+ or the beginning of the rule itself. Resolving to shift means+ it's always treated as a quantifier, hence the above is disallowed.+ This saves explicitly defining a grammar for the rule lhs that+ doesn't include 'forall'.++-----------------------------------------------------------------------------++> %token+> VARID { Loc _ (VarId _) } -- 1+> LABELVARID { Loc _ (LabelVarId _) }+> QVARID { Loc _ (QVarId _) }+> IDUPID { Loc _ (IDupVarId _) } -- duplicable implicit parameter ?x+> ILINID { Loc _ (ILinVarId _) } -- linear implicit parameter %x+> CONID { Loc _ (ConId _) }+> QCONID { Loc _ (QConId _) }+> DVARID { Loc _ (DVarId _) } -- VARID containing dashes+> VARSYM { Loc _ (VarSym _) }+> CONSYM { Loc _ (ConSym _) }+> QVARSYM { Loc _ (QVarSym _) } -- 10+> QCONSYM { Loc _ (QConSym _) }+> INT { Loc _ (IntTok _) }+> RATIONAL { Loc _ (FloatTok _) }+> CHAR { Loc _ (Character _) }+> STRING { Loc _ (StringTok _) }++> PRIMINT { Loc _ (IntTokHash _) }+> PRIMWORD { Loc _ (WordTokHash _) }+> PRIMFLOAT { Loc _ (FloatTokHash _) }+> PRIMDOUBLE { Loc _ (DoubleTokHash _) }+> PRIMCHAR { Loc _ (CharacterHash _) } -- 20+> PRIMSTRING { Loc _ (StringHash _) }++Symbols++> '(' { Loc $$ LeftParen }+> ')' { Loc $$ RightParen }+> '(#' { Loc $$ LeftHashParen }+> '#)' { Loc $$ RightHashParen }+> ';' { Loc $$ SemiColon }+> '{' { Loc $$ LeftCurly }+> '}' { Loc $$ RightCurly } -- 30+> vccurly { Loc $$ VRightCurly } -- a virtual close brace+> '[' { Loc $$ LeftSquare }+> ']' { Loc $$ RightSquare }+> '[:' { Loc $$ ParArrayLeftSquare }+> ':]' { Loc $$ ParArrayRightSquare }+> ',' { Loc $$ Comma }+> '_' { Loc $$ Underscore }+> '`' { Loc $$ BackQuote }++Reserved operators++> '.' { Loc $$ Dot }+> '..' { Loc $$ DotDot }+> ':' { Loc $$ Colon }+> '::' { Loc $$ DoubleColon } -- 40+> '=' { Loc $$ Equals }+> '\\' { Loc $$ Backslash }+> '|' { Loc $$ Bar }+> '<-' { Loc $$ LeftArrow }+> '->' { Loc $$ RightArrow }+> '@' { Loc $$ At }+> TYPEAPP { Loc $$ TApp }+> '~' { Loc $$ Tilde }+> '=>' { Loc $$ DoubleArrow }+> '-' { Loc $$ Minus }+> '!' { Loc $$ Exclamation } -- 50+> '*' { Loc $$ Star }++Arrows++> '-<' { Loc $$ LeftArrowTail }+> '>-' { Loc $$ RightArrowTail }+> '-<<' { Loc $$ LeftDblArrowTail }+> '>>-' { Loc $$ RightDblArrowTail }+> '(|' { Loc $$ OpenArrowBracket }+> '|)' { Loc $$ CloseArrowBracket }++Harp++> '(/' { Loc $$ RPGuardOpen }+> '/)' { Loc $$ RPGuardClose }+> '@:' { Loc $$ RPCAt }++Template Haskell++> IDSPLICE { Loc _ (THIdEscape _) } -- $x+> TIDSPLICE { Loc _ (THTIdEscape _) } -- $$x+> '$(' { Loc $$ THParenEscape } -- 60+> '$$(' { Loc $$ THTParenEscape }+> '[|' { Loc $$ THExpQuote }+> '[||' { Loc $$ THTExpQuote }+> '[p|' { Loc $$ THPatQuote }+> '[t|' { Loc $$ THTypQuote }+> '[d|' { Loc $$ THDecQuote }+> '|]' { Loc $$ THCloseQuote }+> '||]' { Loc $$ THTCloseQuote }+> VARQUOTE { Loc $$ THVarQuote } -- 'x+> TYPQUOTE { Loc $$ THTyQuote } -- ''T+> QUASIQUOTE { Loc _ (THQuasiQuote _) }++Hsx++> PCDATA { Loc _ (XPCDATA _) }+> '<' { Loc $$ XStdTagOpen } -- 70+> '</' { Loc $$ XCloseTagOpen }+> '<%' { Loc $$ XCodeTagOpen }+> '<%>' { Loc $$ XChildTagOpen }+> '>' { Loc $$ XStdTagClose }+> '/>' { Loc $$ XEmptyTagClose }+> '%>' { Loc $$ XCodeTagClose }+> '<[' { Loc $$ XRPatOpen }+> ']>' { Loc $$ XRPatClose }++FFI++> 'foreign' { Loc $$ KW_Foreign }+> 'export' { Loc $$ KW_Export } -- 80+> 'safe' { Loc $$ KW_Safe }+> 'unsafe' { Loc $$ KW_Unsafe }+> 'threadsafe' { Loc $$ KW_Threadsafe }+> 'interruptible' { Loc $$ KW_Interruptible }+> 'stdcall' { Loc $$ KW_StdCall }+> 'ccall' { Loc $$ KW_CCall }+> 'cplusplus' { Loc $$ KW_CPlusPlus }+> 'dotnet' { Loc $$ KW_DotNet }+> 'jvm' { Loc $$ KW_Jvm }+> 'js' { Loc $$ KW_Js } -- 90+> 'javascript' { Loc $$ KW_JavaScript }+> 'capi' { Loc $$ KW_CApi }++Reserved Ids++> 'as' { Loc $$ KW_As }+> 'by' { Loc $$ KW_By } -- transform list comprehensions+> 'case' { Loc $$ KW_Case }+> 'class' { Loc $$ KW_Class }+> 'data' { Loc $$ KW_Data }+> 'default' { Loc $$ KW_Default }+> 'deriving' { Loc $$ KW_Deriving }+> 'do' { Loc $$ KW_Do }+> 'else' { Loc $$ KW_Else } -- 100+> 'family' { Loc $$ KW_Family } -- indexed type families+> 'forall' { Loc $$ KW_Forall } -- universal/existential qualification+> 'group' { Loc $$ KW_Group } -- transform list comprehensions+> 'hiding' { Loc $$ KW_Hiding }+> 'if' { Loc $$ KW_If }+> 'import' { Loc $$ KW_Import }+> 'in' { Loc $$ KW_In }+> 'infix' { Loc $$ KW_Infix }+> 'infixl' { Loc $$ KW_InfixL }+> 'infixr' { Loc $$ KW_InfixR } -- 110+> 'instance' { Loc $$ KW_Instance }+> 'let' { Loc $$ KW_Let }+> 'mdo' { Loc $$ KW_MDo }+> 'module' { Loc $$ KW_Module } -- 114+> 'newtype' { Loc $$ KW_NewType }+> 'of' { Loc $$ KW_Of }+> 'proc' { Loc $$ KW_Proc } -- arrows+> 'rec' { Loc $$ KW_Rec } -- arrows or RecursiveDo+> 'then' { Loc $$ KW_Then }+> 'type' { Loc $$ KW_Type } -- 120+> 'using' { Loc $$ KW_Using } -- transform list comprehensions+> 'where' { Loc $$ KW_Where }+> 'qualified' { Loc $$ KW_Qualified }+> 'role' { Loc $$ KW_Role }+> 'pattern' { Loc $$ KW_Pattern }+> 'stock' { Loc $$ KW_Stock } -- for DerivingStrategies extension+> 'anyclass' { Loc $$ KW_Anyclass } -- for DerivingStrategies extension+> 'via' { Loc $$ KW_Via } -- for DerivingStrategies extension++Pragmas++> '{-# INLINE' { Loc _ (INLINE _) }+> '{-# INLINE CONLIKE' { Loc $$ INLINE_CONLIKE }+> '{-# SPECIALISE' { Loc $$ SPECIALISE }+> '{-# SPECIALISE INLINE' { Loc _ (SPECIALISE_INLINE _) }+> '{-# SOURCE' { Loc $$ SOURCE }+> '{-# RULES' { Loc $$ RULES }+> '{-# CORE' { Loc $$ CORE } -- 130+> '{-# SCC' { Loc $$ SCC }+> '{-# GENERATED' { Loc $$ GENERATED }+> '{-# DEPRECATED' { Loc $$ DEPRECATED }+> '{-# WARNING' { Loc $$ WARNING }+> '{-# UNPACK' { Loc $$ UNPACK }+> '{-# NOUNPACK' { Loc $$ NOUNPACK }+> '{-# OPTIONS' { Loc _ (OPTIONS _) }+ '{-# CFILES' { Loc _ (CFILES _) }+ '{-# INCLUDE' { Loc _ (INCLUDE _) }+> '{-# LANGUAGE' { Loc $$ LANGUAGE } -- 137+> '{-# ANN' { Loc $$ ANN }+> '{-# MINIMAL' { Loc $$ MINIMAL }+> '{-# NO_OVERLAP' { Loc $$ NO_OVERLAP }+> '{-# OVERLAP' { Loc $$ OVERLAP }+> '{-# OVERLAPS' { Loc $$ OVERLAPS }+> '{-# OVERLAPPING' { Loc $$ OVERLAPPING }+> '{-# OVERLAPPABLE' { Loc $$ OVERLAPPABLE }+> '{-# INCOHERENT' { Loc $$ INCOHERENT }+> '{-# COMPLETE' { Loc $$ COMPLETE }+> '#-}' { Loc $$ PragmaEnd } -- 139++Utility++> NEVER { Loc $$@SrcSpan{srcSpanStartLine= -1} _ } -- never-matching terminal of type SrcSpan++> %monad { P }+> %lexer { lexer } { Loc _ EOF }+> %error { parseError }+> %name mparseModule page+> %name mparseExp trueexp+> %name mparsePat pat+> %name mparseDeclAux body+> %name mparseType truectype+> %name mparseStmt stmt+> %name mparseImportDecl impdecl+> %partial ngparseModulePragmas toppragmas+> %partial ngparseModuleHeadAndImports moduletopimps+> %partial ngparsePragmasAndModuleHead moduletophead+> %partial ngparsePragmasAndModuleName moduletopname+> %tokentype { Loc Token }+> %expect 13+> %%++-----------------------------------------------------------------------------+Testing multiple modules in one file++> modules :: { [Module L] }+> : toppragmas modules1 { let (os,ss,l) = $1 in map (\x -> x os ss l) $2 }++> modules1 :: { [[ModulePragma L] -> [S] -> L -> Module L] }+> : module modules1 { $1 : $2 }+> | module { [$1] }++-----------------------------------------------------------------------------+HSP Pages++Any HSP-specific parts requiring the XmlSyntax extension enabled will+be governed by the lexing, since all productions require at least one+special lexeme.++TODO: Yuck, this is messy, needs fixing in the AST!++> page :: { Module L }+> : toppragmas topxml {% checkPageModule $2 $1 }+> | toppragmas '<%' module '%>' topxml {% let (os,ss,l) = $1 in checkHybridModule $5 ($3 os ss l) $2 $4 }+> | toppragmas module { let (os,ss,l) = $1 in $2 os ss l }++> topxml :: { PExp L }+> : '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $2 $8;+> let { cn = reverse $6;+> as = reverse $3; };+> return $ XTag ($1 <^^> $9 <** [$1,$5,$7,$9]) n as $4 cn } }+> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }+++> toppragmas :: { ([ModulePragma L],[S],L) }+> : open toppragmasaux close { let (os,ss,ml) = $2 in (os,$1:ss++[$3],$1 <^^> $3) }++> toppragmasaux :: { ([ModulePragma L],[S],Maybe L) }+> : toppragma optsemis toppragmasaux { let (os,ss,ml) = $3;+> ss' = reverse $2 ++ ss;+> l' = case $2 of+> [] -> ann $1+> _ -> ann $1 <++> nIS (last $2);+> in ($1 : os, ss', Just $ l' <+?> ml) }+> | {- nothing -} { ([],[],Nothing) }++> toppragma :: { ModulePragma L }+> : '{-# LANGUAGE' conids optsemis '#-}' { LanguagePragma ($1 <^^> $4 <** ($1:snd $2 ++ reverse $3 ++ [$4])) (fst $2) }+> | '{-# OPTIONS' optsemis '#-}' { let Loc l (OPTIONS (mc, s)) = $1+> in OptionsPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) (readTool mc) s }+> | '{-# ANN' annotation '#-}' { AnnModulePragma ($1 <^^> $3 <** [$1,$3]) $2 }+++> conids :: { ([Name L],[S]) }+> : conids ',' conid { (fst $1 ++ [$3], snd $1 ++ [$2]) }+> | optsemis conid { ([$2],[]) }++-----------------------------------------------------------------------------+Module Header++> module :: { [ModulePragma L] -> [S] -> L -> Module L }+> : optmodulehead body+> { let (is,ds,ss1,inf) = $2+> in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) $1 os is ds }++> optmodulehead :: { Maybe (ModuleHead L) }+> : 'module' modid maybemodwarning maybeexports 'where' { Just $ ModuleHead ($1 <^^> $5 <** [$1,$5]) $2 $3 $4 }+> | {- empty -} { Nothing }++> maybemodwarning :: { Maybe (WarningText L) }+> : '{-# DEPRECATED' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ DeprText ($1 <^^> $3 <** [$1,l,$3]) s }+> | '{-# WARNING' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ WarnText ($1 <^^> $3 <** [$1,l,$3]) s }+> | {- empty -} { Nothing }++> body :: { ([ImportDecl L],[Decl L],[S],L) }+> : '{' bodyaux '}' { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }++Trailing optsemis in the next line is a workaround for #25. Having the optsemis+here causes one more shift/reduce conflict.++> | open bodyaux close optsemis { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }++> bodyaux :: { ([ImportDecl L],[Decl L],[S]) }+> : optsemis impdecls semis topdecls { (reverse (fst $2), fst $4, reverse $1 ++ snd $2 ++ reverse $3 ++ snd $4) }+> | optsemis topdecls { ([], fst $2, reverse $1 ++ snd $2) }+> | optsemis impdecls optsemis { (reverse (fst $2), [], reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([], [], reverse $1) }++> semis :: { [S] }+> : optsemis ';' { $2 : $1 }++> optsemis :: { [S] }+> : semis { $1 }+> | {- empty -} { [] }++-----------------------------------------------------------------------------+The Export List++> maybeexports :: { Maybe (ExportSpecList L) }+> : exports { Just $1 }+> | {- empty -} { Nothing }++> exports :: { ExportSpecList L }+> : '(' exportlist optcomma ')' { ExportSpecList ($1 <^^> $4 <** ($1:reverse (snd $2) ++ $3 ++ [$4])) (reverse (fst $2)) }+> | '(' optcomma ')' { ExportSpecList ($1 <^^> $3 <** ($1:$2++[$3])) [] }++> optcomma :: { [S] }+> : ',' { [$1] }+> | {- empty -} { [ ] }++> exportlist :: { ([ExportSpec L],[S]) }+> : exportlist ',' export { ($3 : fst $1, $2 : snd $1) }+> | export { ([$1],[]) }++> export :: { ExportSpec L }+> : qvar { EVar (ann $1) $1 }+> | 'type' qcname {% do { checkEnabled ExplicitNamespaces;+> return (EAbs (nIS $1 <++> ann $2 <** [$1, srcInfoSpan (ann $2)]) (TypeNamespace (nIS $1 <** [$1])) $2) } }+> | qtyconorcls { EAbs (ann $1) (NoNamespace (ann $1)) $1 }+> | qtyconorcls '(' ')' { EThingWith (ann $1 <++> nIS $3 <** [$2,$3]) (NoWildcard noSrcSpan) $1 [] }+> | qtyconorcls '(' export_names ')' {% mkEThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse $ fst $3) }+> | 'module' modid { EModuleContents (nIS $1 <++> ann $2 <** [$1]) $2 }+> | 'pattern' qcon {% do { checkEnabled PatternSynonyms;+> return $ EAbs (nIS $1 <++> (ann $2) <** [$1])+> (PatternNamespace (nIS $1)) $2 }}++> export_names :: { ([Either S (CName L)],[S]) }+> : export_names ',' cname_w_wildcard { ($3 : fst $1, $2 : snd $1) }+> | cname_w_wildcard { ([$1],[]) }++> cname_w_wildcard :: { Either S (CName L) }+> : '..' { Left $1 }+> | cname { Right $1 }++>+> qcname :: { QName L }+> : qvar { $1 }+> | qcon { $1 }++-----------------------------------------------------------------------------+Import Declarations++> impdecls :: { ([ImportDecl L],[S]) }+> : impdecls semis impdecl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | impdecl { ([$1],[]) }++> impdecl :: { ImportDecl L }+> : 'import' optsrc optsafe optqualified maybepkg modid optqualified_post maybeas maybeimpspec+> { let { (mmn,ss,ml) = $8 ;+> l = nIS $1 <++> ann $6 <+?> ml <+?> (fmap ann) $9 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ snd $5 ++ snd $7 ++ ss)}+> in ImportDecl l $6 (fst $4 || fst $7) (fst $2) (fst $3) (fst $5) mmn $9 }++> optsrc :: { (Bool,[S]) }+> : '{-# SOURCE' '#-}' { (True,[$1,$2]) }+> | {- empty -} { (False,[]) }++> optsafe :: { (Bool,[S]) }+> : 'safe' {% do { checkEnabledOneOf [Safe, SafeImports, Trustworthy] ;+> return (True, [$1]) } }+> | {- empty -} { (False, []) }++> optqualified :: { (Bool,[S]) }+> : 'qualified' { (True,[$1]) }+> | {- empty -} { (False, []) }++> optqualified_post :: { (Bool,[S]) }+> : 'qualified' {% do { checkEnabled ImportQualifiedPost;+> return (True,[$1]) } }+> | {- empty -} { (False, []) }++Requires the PackageImports extension enabled.+> maybepkg :: { (Maybe String,[S]) }+> : STRING {% do { checkEnabled PackageImports ;+> let { Loc l (StringTok (s,_)) = $1 } ;+> return $ (Just s,[l]) } }+> | {- empty -} { (Nothing,[]) }++> maybeas :: { (Maybe (ModuleName L),[S],Maybe L) }+> : 'as' modid { (Just $2,[$1],Just (nIS $1 <++> ann $2)) }+> | {- empty -} { (Nothing,[],Nothing) }+++> maybeimpspec :: { Maybe (ImportSpecList L) }+> : impspec { Just $1 }+> | {- empty -} { Nothing }++> impspec :: { ImportSpecList L }+> : opthiding '(' importlist optcomma ')' { let {(b,ml,s) = $1 ;+> l = (ml <?+> ($2 <^^> $5)) <** (s ++ $2:reverse (snd $3) ++ $4 ++ [$5])}+> in ImportSpecList l b (reverse (fst $3)) }+> | opthiding '(' optcomma ')' { let {(b,ml,s) = $1 ; l = (ml <?+> ($2 <^^> $4)) <** (s ++ $2:$3 ++ [$4])}+> in ImportSpecList l b [] }++> opthiding :: { (Bool, Maybe L,[S]) }+> : 'hiding' { (True,Just (nIS $1),[$1]) }+> | {- empty -} { (False,Nothing,[]) }++> importlist :: { ([ImportSpec L],[S]) }+> : importlist ',' importspec { ($3 : fst $1, $2 : snd $1) }+> | importspec { ([$1],[]) }++> importspec :: { ImportSpec L }+> : var { IVar (ann $1) $1 }+> | 'type' var {% do { checkEnabled ExplicitNamespaces;+> return (IAbs (nIS $1 <++> ann $2 <** [$1, srcInfoSpan (ann $2)]) (TypeNamespace (nIS $1 <** [$1])) $2) } }+> | 'pattern' con {% do { checkEnabled PatternSynonyms;+> return (IAbs (nIS $1 <++> ann $2 <** [$1, srcInfoSpan (ann $2)]) (PatternNamespace (nIS $1 <** [$1])) $2) } }+> | tyconorcls { IAbs (ann $1) (NoNamespace (ann $1)) $1 }+> | tyconorcls '(' '..' ')' { IThingAll (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }+> | tyconorcls '(' ')' { IThingWith (ann $1 <++> nIS $3 <** [$2,$3]) $1 [] }+> | tyconorcls '(' import_names ')' { IThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }++> import_names :: { ([CName L],[S]) }+> : import_names ',' cname { ($3 : fst $1, $2 : snd $1) }+> | cname { ([$1],[]) }++> cname :: { CName L }+> : var { VarName (ann $1) $1 }+> | con { ConName (ann $1) $1 }++-----------------------------------------------------------------------------+Fixity Declarations++> fixdecl :: { Decl L }+> : infix prec ops { let (ops,ss,l) = $3+> in InfixDecl (ann $1 <++> l <** (snd $2 ++ reverse ss)) $1 (fst $2) (reverse ops) }++> prec :: { (Maybe Int, [S]) }+> : {- empty -} { (Nothing, []) }+> | INT {% let Loc l (IntTok (i,_)) = $1 in checkPrec i >>= \i -> return (Just i, [l]) }++> infix :: { Assoc L }+> : 'infix' { AssocNone $ nIS $1 }+> | 'infixl' { AssocLeft $ nIS $1 }+> | 'infixr' { AssocRight $ nIS $1 }++> ops :: { ([Op L],[S],L) }+> : ops ',' op { let (ops,ss,l) = $1 in ($3 : ops, $2 : ss, l <++> ann $3) }+> | op { ([$1],[],ann $1) }+++> opt_injectivity_info :: { Maybe (InjectivityInfo L) }+> : {- empty -} { Nothing }+> | injectivity_info { Just $1 }++> injectivity_info :: { InjectivityInfo L }+> : '|' tyvarid '->' inj_varids+> { InjectivityInfo (nIS $1 <++> ann (last $4) <** [$1,$3]) $2 (reverse $4) }+>+>+> inj_varids :: { [Name L] }+> : inj_varids tyvarid { $2 : $1 }+> | tyvarid { [$1] }++-----------------------------------------------------------------------------+Top-Level Declarations++Note: The report allows topdecls to be empty. This would result in another+shift/reduce-conflict, so we don't handle this case here, but in bodyaux.++> topdecls :: { ([Decl L],[S]) }+> : topdecls1 optsemis {% checkRevDecls (fst $1) >>= \ds -> return (ds, snd $1 ++ reverse $2) }++> topdecls1 :: { ([Decl L],[S]) }+> : topdecls1 semis topdecl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | topdecl { ([$1],[]) }++> topdecl :: { Decl L }+> : role_annot {% checkEnabled RoleAnnotations >> return $1 }+> | 'type' dtype '=' truectype+> {% do { dh <- checkSimpleType $2;+> let {l = nIS $1 <++> ann $4 <** [$1,$3]};+> return (TypeDecl l dh $4) } }++Requires the TypeFamilies extension enabled, but the lexer will handle+that through the 'family' keyword.+> | 'type' 'family' type opt_tyfam_kind_sig opt_injectivity_info where_type_family+> {% do { dh <- checkSimpleType $3;+> let {l = nIS $1 <++> ann $3 <** [$1,$2]};+> case $6 of {+> Nothing -> return (TypeFamDecl l dh $4 $5);+> Just (x,a) -> return (ClosedTypeFamDecl (l <** [a]) dh $4 $5 x); }}}++Here there is no special keyword so we must do the check.+> | 'type' 'instance' truedtype '=' truectype+> {% do { -- no checkSimpleType $4 since dtype may contain type patterns+> checkEnabled TypeFamilies ;+> let {l = nIS $1 <++> ann $5 <** [$1,$2,$4]};+> return (TypeInsDecl l $3 $5) } }+> | data_or_newtype ctype constrs0 maybe_derivings+> {% do { (cs,dh) <- checkDataHeader $2;+> let { (qds,ss,minf) = $3;+> l = $1 <> $2 <+?> minf <+?> fmap ann (listToMaybe $4) <** ss};+> checkDataOrNew $1 qds;+> return (DataDecl l $1 cs dh (reverse qds) (reverse $4)) } }++Requires the GADTs extension enabled, handled in gadtlist.+> | data_or_newtype ctype optkind gadtlist maybe_derivings+> {% do { (cs,dh) <- checkDataHeader $2;+> let { (gs,ss,minf) = $4;+> derivs' = reverse $5;+> l = ann $1 <+?> minf <+?> fmap ann (listToMaybe $5) <** (snd $3 ++ ss)};+> checkDataOrNewG $1 gs;+> case (gs, fst $3) of+> ([], Nothing) -> return (DataDecl l $1 cs dh [] derivs')+> _ -> checkEnabled GADTs >> return (GDataDecl l $1 cs dh (fst $3) (reverse gs) derivs') } }++Same as above, lexer will handle it through the 'family' keyword.+> | 'data' 'family' ctype opt_datafam_kind_sig+> {% do { (cs,dh) <- checkDataHeader $3;+> let {l = nIS $1 <++> ann $3 <+?> (fmap ann) $4 <** [$1,$2]};+> return (DataFamDecl l cs dh $4) } }++Here we must check for TypeFamilies.+> | data_or_newtype 'instance' truectype constrs0 maybe_derivings+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> checkEnabled TypeFamilies ;+> let { (qds,ss,minf) = $4 ;+> l = $1 <> $3 <+?> minf <+?> fmap ann (listToMaybe $5) <** $2:ss };+> checkDataOrNew $1 qds;+> return (DataInsDecl l $1 $3 (reverse qds) (reverse $5)) } }++This style requires both TypeFamilies and GADTs, the latter is handled in gadtlist.+> | data_or_newtype 'instance' truectype optkind gadtlist maybe_derivings+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> checkEnabled TypeFamilies ;+> let {(gs,ss,minf) = $5;+> derivs' = reverse $6;+> l = ann $1 <+?> minf <+?> fmap ann (listToMaybe derivs') <** ($2:snd $4 ++ ss)};+> checkDataOrNewG $1 gs;+> return (GDataInsDecl l $1 $3 (fst $4) (reverse gs) derivs') } }+> | 'class' ctype fds optcbody+> {% do { (cs,dh) <- checkClassHeader $2;+> let {(fds,ss1,minf1) = $3;(mcs,ss2,minf2) = $4} ;+> let { l = nIS $1 <++> ann $2 <+?> minf1 <+?> minf2 <** ($1:ss1 ++ ss2)} ;+> return (ClassDecl l cs dh fds mcs) } }+> | 'instance' optoverlap ctype optvaldefs+> {% do { ih <- checkInstHeader $3;+> let {(mis,ss,minf) = $4};+> return (InstDecl (nIS $1 <++> ann $3 <+?> minf <** ($1:ss)) $2 ih mis) } }++Requires the StandaloneDeriving extension enabled.+> | 'deriving' deriv_standalone_strategy 'instance' optoverlap ctype+> {% do { checkEnabled StandaloneDeriving ;+> ih <- checkInstHeader $5;+> let {l = nIS $1 <++> ann $5 <** [$1,$3]};+> return (DerivDecl l $2 $4 ih) } }+> | 'default' '(' typelist ')'+> { DefaultDecl ($1 <^^> $4 <** ($1:$2 : snd $3 ++ [$4])) (fst $3) }++Requires the TemplateHaskell extension, but the lexer will handle that+through the '$(' lexeme.+CHANGE: Arbitrary top-level expressions are considered implicit splices+> | exp0 {% do+> checkToplevel $1+> checkExpr $1 >>= \e -> return (SpliceDecl (ann e) e)+> }++ | '$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }+ | '$$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in TSpliceDecl l $ TParenSplice l $2 }++These require the ForeignFunctionInterface extension, handled by the+lexer through the 'foreign' (and 'export') keyword.+> | 'foreign' 'import' callconv safety fspec+> { let (s,n,t,ss) = $5 in ForImp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 $4 s n t }+> | 'foreign' 'export' callconv fspec+> { let (s,n,t,ss) = $4 in ForExp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 s n t }++> | '{-# RULES' rules '#-}' { RulePragmaDecl ($1 <^^> $3 <** [$1,$3]) $ reverse $2 }+> | '{-# DEPRECATED' warndeprs '#-}' { DeprPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }+> | '{-# WARNING' warndeprs '#-}' { WarnPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }+> | '{-# ANN' annotation '#-}' { AnnPragma ($1 <^^> $3 <** [$1,$3]) $2 }+> | '{-# COMPLETE' con_list opt_tyconsig '#-}'+> { let com = maybe [] ((:[]) . fst) $3; ts = fmap snd $3 in+> (CompletePragma ($1 <^^> $4 <** ([$1] ++ fst $2 ++ com ++ [$4])) (snd $2) ts) }+> | decl { $1 }++> -- Family result/return kind signatures+>+> opt_datafam_kind_sig :: { Maybe (ResultSig L) }+> : { Nothing }+> | '::' kind { (Just $ KindSig (nIS $1 <++> ann $2 <** [$1]) $2) }+>+> opt_tyfam_kind_sig :: { Maybe (ResultSig L) }+> : { Nothing }+> | '::' kind { (Just $ KindSig (nIS $1 <++> ann $2 <** [$1]) $2) }+> | '=' ktyvar { (Just $ TyVarSig (nIS $1 <++> ann $2 <** [$1]) $2) }+>+> opt_at_kind_inj_sig :: { (Maybe (ResultSig L), Maybe (InjectivityInfo L))}+> : { (Nothing, Nothing) }+> | '::' kind { (Just (KindSig (nIS $1 <++> ann $2 <** [$1]) $2), Nothing) }+> | '=' ktyvar injectivity_info+> { (Just (TyVarSig (nIS $1 <++> ann $2 <** [$1]) $2), Just $3) }++> opt_at_kind_inj_sig2 :: { (Maybe (ResultSig L), Maybe (S, Type L), Maybe (InjectivityInfo L))}+> : { (Nothing, Nothing, Nothing) }+> | '::' kind { (Just (KindSig (nIS $1 <++> ann $2 <** [$1]) $2), Nothing, Nothing) }+> | '=' truectype opt_injectivity_info { (Nothing, Just ($1, $2), $3) }+++Role annotations++> role_annot :: { Decl L }+> role_annot : 'type' 'role' otycon roles+> {% mkRoleAnnotDecl $1 $2 $3 (reverse $4) }++-- Reversed!+> roles :: { [(Maybe String, L)] }+> roles : {- empty -} { [] }+> | roles role { $2 : $1 }++> -- read it in as a varid for better error messages+> role :: { (Maybe String, L) }+> role : VARID { let (VarId v) = unLoc $1 in (Just v, nIS $ loc $1) }+> | '_' { (Nothing, nIS $1) }++++> optoverlap :: { Maybe (Overlap L) }+> : '{-# OVERLAP' '#-}' { Just (Overlap (nIS $1)) }+> | '{-# OVERLAPS' '#-}' { Just (Overlaps (nIS $1)) }+> | '{-# OVERLAPPING' '#-}' { Just (Overlapping (nIS $1)) }+> | '{-# OVERLAPPABLE' '#-}' { Just (Overlappable (nIS $1)) }+> | '{-# INCOHERENT' '#-}' { Just (Incoherent (nIS $1)) }+> | '{-# NO_OVERLAP' '#-}' { Just (NoOverlap (nIS $1)) }+> | {- empty -} { Nothing }++Parsing the body of a closed type family, partially stolen from the source of GHC.+> where_type_family :: { Maybe ([TypeEqn L], S) }+> : {- empty -} { Nothing }+> | 'where' ty_fam_inst_eqn_list { Just ($2, $1) }++> ty_fam_inst_eqn_list :: { [TypeEqn L] }+> : '{' ty_fam_inst_eqns '}' { $2 }+> | open ty_fam_inst_eqns close { $2 }++> ty_fam_inst_eqns :: { [TypeEqn L] }+> : ty_fam_inst_eqns ';' ty_fam_inst_eqn { $1 ++ [$3] }+> | ty_fam_inst_eqns ';' { $1 }+> | ty_fam_inst_eqn { [$1] }+> | { [] }++> ty_fam_inst_eqn :: { TypeEqn L }+> : truectype '=' truectype+> {% do { checkEnabled TypeFamilies ;+> return (TypeEqn (ann $1 <++> ann $3 <** [$2]) $1 $3) } }++> data_or_newtype :: { DataOrNew L }+> : 'data' { DataType $ nIS $1 }+> | 'newtype' { NewType $ nIS $1 }++> typelist :: { ([Type L],[S]) }+> : types {% do { ts <- mapM checkType (fst $1);+> return $ (reverse ts, reverse (snd $1)) } }+> | truetype { ([$1],[]) }+> | {- empty -} { ([],[]) }++> decls :: { ([Decl L],[S]) }+> : optsemis decls1 optsemis {% checkRevDecls (fst $2) >>= \ds -> return (ds, reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([],reverse $1) }++> decls1 :: { ([Decl L],[S]) }+> : decls1 semis decl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | decl { ([$1],[]) }++> decl :: { Decl L }+> : signdecl { $1 }+> | fixdecl { $1 }+> | valdef { $1 }+> | pat_syn { $1 }+> | pattern_synonym_sig { $1 }++> decllist :: { Binds L }+> : '{' decls '}' { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }+> | open decls close { let l' = if null (fst $2) then nIS $3 else (ann . last $ fst $2)+> in BDecls (nIS $1 <++> l' <** ($1:snd $2++[$3])) (fst $2) }++> signdecl :: { Decl L }+> : signdecl0 { $1 }+> | specinldecl { $1 }++> signdecl0 :: { Decl L }+> : exp0b '::' truectype {% do { v <- checkSigVar $1;+> return $ TypeSig ($1 <> $3 <** [$2]) [v] $3 } }+> | exp0b ',' vars '::' truectype {% do { v <- checkSigVar $1;+> let {(vs,ss,_) = $3 ; l = $1 <> $5 <** ($2 : reverse ss ++ [$4]) } ;+> return $ TypeSig l (v : reverse vs) $5 } }++> specinldecl :: { Decl L }+> : '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InlineSig (l <^^> $4 <** [l,$4]) s $2 $3 }+> | '{-# INLINE CONLIKE' activation qvar '#-}' { InlineConlikeSig ($1 <^^> $4 <** [$1,$4]) $2 $3 }+> | '{-# SPECIALISE' activation qvar '::' sigtypes '#-}'+> { SpecSig ($1 <^^> $6 <** ($1: $4 : snd $5 ++ [$6])) $2 $3 (fst $5) }+> | '{-# SPECIALISE INLINE' activation qvar '::' sigtypes '#-}'+> { let Loc l (SPECIALISE_INLINE s) = $1+> in SpecInlineSig (l <^^> $6 <** (l:$4:snd $5++[$6])) s $2 $3 (fst $5) }+> | '{-# SPECIALISE' 'instance' ctype '#-}' {% do { ih <- checkInstHeader $3;+> let {l = $1 <^^> $4 <** [$1,$2,$4]};+> return $ InstSig l ih } }+> | '{-# MINIMAL' name_boolformula '#-}' { MinimalPragma ($1 <^^> $3 <** [$1,$3]) $2 }++> sigtypes :: { ([Type L],[S]) }+> : sigtype { ([$1],[]) }+> | sigtype ',' sigtypes { ($1 : fst $3, $2 : snd $3) }++> sigtype :: { Type L }+> : ctype {% checkType $ mkTyForall (ann $1) Nothing Nothing $1 }++> name_boolformula :: { Maybe (BooleanFormula L) }+> : name_boolformula1 { Just $1 }+> | {- empty -} { Nothing }++> name_boolformula1 :: { BooleanFormula L }+> : name_boolformula_and { $1 }+> | name_boolformula_and '|' name_boolformula1 { OrFormula (ann $1 <++> ann $3 <** [$2]) [$1,$3] }++> name_boolformula_and :: { BooleanFormula L }+> : name_boolformula_atom { $1 }+> | name_boolformula_atom ',' name_boolformula_and { AndFormula (ann $1 <++> ann $3 <** [$2]) [$1,$3] }++> name_boolformula_atom :: { BooleanFormula L }+> : '(' name_boolformula1 ')' { ParenFormula ($1 <^^> $3 <** [$1,$3]) $2 }+> | var { VarFormula (ann $1) $1 }++Binding can be either of implicit parameters, or it can be a normal sequence+of declarations. The two kinds cannot be mixed within the same block of+binding.++> binds :: { Binds L }+> : decllist { $1 }+> | '{' ipbinds '}' { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }+> | open ipbinds close { let l' = ann . last $ fst $2+> in IPBinds (nIS $1 <++> l' <** snd $2) (fst $2) }++ATTENTION: Dirty Hackery Ahead! If the second alternative of vars is var+instead of qvar, we get another shift/reduce-conflict. Consider the+following programs:++ { (+) :: ... } only var+ { (+) x y = ... } could (incorrectly) be qvar++We re-use expressions for patterns, so a qvar would be allowed in patterns+instead of a var only (which would be correct). But deciding what the + is,+would require more lookahead. So let's check for ourselves...++> vars :: { ([Name L],[S],L) }+> : vars ',' var { let (ns,ss,l) = $1 in ($3 : ns, $2 : ss, l <++> ann $3) }+> | qvar {% do { n <- checkUnQual $1;+> return ([n],[],ann n) } }++-----------------------------------------------------------------------------+FFI++These will only be called on in the presence of a 'foreign' keyword,+so no need to check for extensions.++> callconv :: { CallConv L }+> : 'stdcall' { StdCall (nIS $1) }+> | 'ccall' { CCall (nIS $1) }+> | 'cplusplus' { CPlusPlus (nIS $1) }+> | 'dotnet' { DotNet (nIS $1) }+> | 'jvm' { Jvm (nIS $1) }+> | 'js' { Js (nIS $1) }+> | 'javascript' { JavaScript (nIS $1) }+> | 'capi' { CApi (nIS $1) }+++> safety :: { Maybe (Safety L) }+> : 'safe' { Just $ PlaySafe (nIS $1) False }+> | 'unsafe' { Just $ PlayRisky (nIS $1) }+> | 'threadsafe' { Just $ PlaySafe (nIS $1) True }+> | 'interruptible' { Just $ PlayInterruptible (nIS $1) }+> | {- empty -} { Nothing }++> fspec :: { (Maybe String, Name L, Type L, [S]) }+> : STRING var_no_safety '::' truedtype { let Loc l (StringTok (s,_)) = $1 in (Just s, $2, $4, [l,$3]) }+> | var_no_safety '::' truedtype { (Nothing, $1, $3, [$2]) }++-----------------------------------------------------------------------------+Pragmas++> rules :: { [Rule L] }+> : rules ';'rule { $3 : $1 }+> | rules ';' { $1 }+> | rule { [$1] }+> | {- empty -} { [] }++> rule :: { Rule L }+> : STRING activation ruleforall exp0 '=' trueexp {% do { let {Loc l (StringTok (s,_)) = $1};+> e <- checkRuleExpr $4;+> return $ Rule (nIS l <++> ann $6 <** l:snd $3 ++ [$5]) s $2 (fst $3) e $6 } }++> activation :: { Maybe (Activation L) }+> : {- empty -} { Nothing }+> | '[' INT ']' { let Loc l (IntTok (i,_)) = $2 in Just $ ActiveFrom ($1 <^^> $3 <** [$1,l,$3]) (fromInteger i) }+> | '[' '~' INT ']' { let Loc l (IntTok (i,_)) = $3 in Just $ ActiveUntil ($1 <^^> $4 <** [$1,$2,l,$4]) (fromInteger i) }++> ruleforall :: { (Maybe [RuleVar L],[S]) }+> : {- empty -} { (Nothing,[]) }+> | 'forall' rulevars '.' { (Just $2,[$1,$3]) }++> rulevars :: { [RuleVar L] }+> : rulevar { [$1] }+> | rulevar rulevars { $1 : $2 }++> rulevar :: { RuleVar L }+> : varid { RuleVar (ann $1) $1 }+> | '(' varid '::' truectype ')' { TypedRuleVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }++> warndeprs :: { ([([Name L],String)],[S]) }+> : warndeprs ';' warndepr { (fst $3 : fst $1, snd $1 ++ ($2:snd $3)) }+> | warndeprs ';' { (fst $1, snd $1 ++ [$2]) }+> | warndepr { ([fst $1],snd $1) }+> | {- empty -} { ([],[]) }++> warndepr :: { (([Name L], String),[S]) }+> : namevars STRING { let Loc l (StringTok (s,_)) = $2 in ((fst $1,s),snd $1 ++ [l]) }++> namevars :: { ([Name L],[S]) }+> : namevar { ([$1],[]) }+> | namevar ',' namevars { ($1 : fst $3, $2 : snd $3) }++> namevar :: { Name L }+> : con { $1 }+> | var { $1 }++> annotation :: { Annotation L }+> : 'type' conid aexp {% checkExpr $3 >>= \e -> return (TypeAnn (nIS $1 <++> ann e <** [$1]) $2 e) }+> | 'module' aexp {% checkExpr $2 >>= \e -> return (ModuleAnn (nIS $1 <++> ann e <** [$1]) e) }+> | namevar aexp {% checkExpr $2 >>= \e -> return (Ann ($1 <> e) $1 e) }++-----------------------------------------------------------------------------+Types++Type equality contraints need the TypeFamilies extension.++> truedtype :: { Type L }+> : dtype {% checkType $1 }++> dtype :: { PType L }+> : dtype_('*',NEVER) { $1 }++> dtype_(ostar,kstar) :: { PType L }+> : btype_(ostar,kstar) { splitTilde $1 }+> | btype_(ostar,kstar) qtyconop dtype_(ostar,kstar) { TyInfix ($1 <> $3) $1 $2 $3 }+> | btype_(ostar,kstar) qtyvarop_(ostar) dtype_(ostar,kstar) { TyInfix ($1 <> $3) $1 (UnpromotedName (ann $2) $2) $3 } -- FIXME+> | btype_(ostar,kstar) '->' ctype_(ostar,kstar) { TyFun ($1 <> $3 <** [$2]) (splitTilde $1) $3 }+ | btype_(ostar,kstar) '~' btype_(ostar,kstar) {% do { checkEnabledOneOf [TypeFamilies, GADTs] ;+ let {l = $1 <> $3 <** [$2]};+ return $ TyPred l $ EqualP l $1 $3 } }++Implicit parameters can occur in normal types, as well as in contexts.++> truetype :: { Type L }+> : type {% checkType $1 }++> type :: { PType L }+> : type_('*',NEVER) { $1 }++> type_(ostar,kstar) :: { PType L }+> : ivar '::' dtype_(ostar,kstar) { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }+> | dtype_(ostar,kstar) { $1 }++> truebtype :: { Type L }+> : btype {% checkType (splitTilde $1) }+> trueatype :: { Type L }+> : atype {% checkType $1 }++> btype :: { PType L }+> : btype_('*',NEVER) { $1 }++> btype_(ostar,kstar) :: { PType L }+> : btype_(ostar,kstar) atype_(ostar,kstar) { TyApp ($1 <> $2) $1 $2 }+> | atype_(ostar,kstar) { $1 }++UnboxedTuples requires the extension, but that will be handled through+the (# and #) lexemes. Kinds will be handled at the kind rule.++> atype :: { PType L }+> : atype_('*',NEVER) { $1 }++> atype_(ostar,kstar) :: { PType L }+> : kstar { TyStar (nIS $1) }+> | gtycon_(ostar) { TyCon (ann $1) $1 }+> | tyvar {% checkTyVar $1 }+> | strict_mark atype { let (mstrict, mupack) = $1+> in bangType mstrict mupack $2 }+> | '(' types_(ostar,kstar) ')' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed (reverse (fst $2)) }+> | '(#' types_bars2(ostar,kstar) '#)' { TyUnboxedSum ($1 <^^> $3 <** ($1: reverse ($3: snd $2))) (reverse (fst $2)) }+> | '(#' types1_(ostar,kstar) '#)' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }+> | '[' type_(ostar,kstar) ']' { TyList ($1 <^^> $3 <** [$1,$3]) $2 }+> | '[:' type_(ostar,kstar) ':]' { TyParArray ($1 <^^> $3 <** [$1,$3]) $2 }+> | '(' ctype_(ostar,kstar) ')' { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }+> | '(' ctype_(ostar,kstar) '::' kind ')' { TyKind ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }+> | '$(' trueexp ')' { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ ParenSplice l $2 }+> | '$$(' trueexp ')' { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ TParenSplice l $2 }+> | IDSPLICE { let Loc l (THIdEscape s) = $1 in TySplice (nIS l) $ IdSplice (nIS l) s }+> | TIDSPLICE { let Loc l (THTIdEscape s) = $1 in TySplice (nIS l) $ TIdSplice (nIS l) s }+> | '_' { TyWildCard (nIS $1) Nothing }+> | QUASIQUOTE { let Loc l (THQuasiQuote (n,q)) = $1 in TyQuasiQuote (nIS l) n q }+> | ptype_(ostar,kstar) { % checkEnabled DataKinds >> return (TyPromoted (ann $1) $1) }++> ptype_(ostar,kstar) :: { Promoted L }+> : VARQUOTE gcon_nolist {% fmap (PromotedCon (nIS $1 <++> ann $2 <** [$1]) True) (pexprToQName $2) }+> | VARQUOTE '[' types1_(ostar,kstar) ']' {% PromotedList ($1 <^^> $4 <** ($1:reverse($4:snd $3))) True . reverse <\$> mapM checkType (fst $3) }+> | '[' types_(ostar,kstar) ']' {% PromotedList ($1 <^^> $3 <** ($1:reverse($3:snd $2))) False . reverse <\$> mapM checkType (fst $2) }+> | VARQUOTE '[' ']' { PromotedList ($1 <^^> $3 <** [$1, $3]) True [] }+ | '[' ']' {% PromotedList ($1 <^^> $2 <** [$1, $2]) False [] }+> | VARQUOTE '(' types1 ')' {% PromotedTuple ($1 <^^> $4 <** ($1:reverse($4:snd $3))) . reverse <\$> mapM checkType (fst $3) }+> | INT { let Loc l (IntTok (i,raw)) = $1 in PromotedInteger (nIS l) i raw }+> | STRING { let Loc l (StringTok (s,raw)) = $1 in PromotedString (nIS l) s raw }+++> strict_mark :: { (Maybe (L -> BangType L,S), Maybe (Unpackedness L)) }+> : strictness { (Just $1, Nothing) }+> | unpackedness { (Nothing, Just $1) }+> | unpackedness strictness { (Just $2, Just $1) }++> strictness :: { (L -> BangType L, S) }+> : '!' { (BangedTy, $1) }+> | '~' { (LazyTy, $1) }++> unpackedness :: { Unpackedness L }+> : '{-# UNPACK' '#-}' { (Unpack ((nIS $1 <++> nIS $2) <** [$1,$2])) }+> | '{-# NOUNPACK' '#-}' { (NoUnpack ((nIS $1 <++> nIS $2) <** [$1,$2])) }+++> gtycon :: { QName L }+> : gtycon_('*') { $1 }++> gtycon_(ostar) :: { QName L }+> : otycon_(ostar) { $1 }+> | '(' ')' { unit_tycon_name ($1 <^^> $2 <** [$1,$2]) }+> | '(' '->' ')' { fun_tycon_name ($1 <^^> $3 <** [$1,$2,$3]) }+> | '[' ']' { list_tycon_name ($1 <^^> $2 <** [$1,$2]) }+> | '(' commas ')' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Boxed (length $2) }+> | '(#' '#)' { unboxed_singleton_tycon_name ($1 <^^> $2 <** [$1,$2]) }+> | '(#' commas '#)' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Unboxed (length $2) }++> otycon :: { QName L }+> : otycon_('*') { $1 }++> otycon_(ostar) :: { QName L }+> : qconid { $1 }+> | '(' gconsym ')' { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }+> | '(' qvarsym_(ostar) ')' { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++These are for infix types++> qtyconop :: { MaybePromotedName L }+> : qconop { UnpromotedName (ann $1) $1 }+> | VARQUOTE gconsym { PromotedName (nIS $1 <++> ann $2 <** [$1]) $2 }+++(Slightly edited) Comment from GHC's hsparser.y:+"context => type" vs "type" is a problem, because you can't distinguish between++ foo :: (Baz a, Baz a)+ bar :: (Baz a, Baz a) => [a] -> [a] -> [a]++with one token of lookahead. The HACK is to parse the context as a btype+(more specifically as a tuple type), then check that it has the right form+C a, or (C1 a, C2 b, ... Cn z) and convert it into a context. Blaach!++Forall-quantified types require some extension to enable them, which+is any of the keyword-enabling ones, except ExistentialQuantification.++> truectype :: { Type L }+> : ctype {% checkType $1 }++> ctype :: { PType L }+> : ctype_('*',NEVER) { $1 }++> ctype_(ostar,kstar) :: { PType L }+> : 'forall' ktyvars '.' ctype_(ostar,kstar) { mkTyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }+> | context_(ostar,kstar) ctype_(ostar,kstar) { mkTyForall ($1 <> $2) Nothing (Just $1) $2 }+> | type_(ostar,kstar) { $1 }++Equality constraints require the TypeFamilies extension.++> context :: { PContext L }+> : context_('*',NEVER) { $1 }++> context_(ostar,kstar) :: { PContext L }+> : btype_(ostar,kstar) '=>' {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) (splitTilde $1) }++> types :: { ([PType L],[S]) }+> : types_('*',NEVER) { $1 }++> types_(ostar,kstar) :: { ([PType L],[S]) }+> : types1_(ostar,kstar) ',' ctype_(ostar,kstar) { ($3 : fst $1, $2 : snd $1) }++> types1 :: { ([PType L],[S]) }+> : types1_('*',NEVER) { $1 }++> types1_(ostar,kstar) :: { ([PType L],[S]) }+> : ctype_(ostar,kstar) { ([$1],[]) }+> | types1_(ostar,kstar) ',' ctype_(ostar,kstar) { ($3 : fst $1, $2 : snd $1) }++> types_bars2(ostar,kstar) :: { ([PType L],[S]) }+> : ctype_(ostar,kstar) '|' ctype_(ostar,kstar) { ([$3, $1], [$2]) }+> | types_bars2(ostar,kstar) '|' ctype_(ostar,kstar) { ($3 : fst $1, $2 : snd $1) }++> ktyvars :: { ([TyVarBind L],Maybe L) }+> : ktyvars ktyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }+> | {- empty -} { ([],Nothing) }++> ktyvar :: { TyVarBind L }+> : tyvar { UnkindedVar (ann $1) $1 }+> | '(' tyvar '::' kind ')' { KindedVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }++> tyvars :: { ([Name L],Maybe L) }+> : tyvars tyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }+> | {- empty -} { ([], Nothing) }++> tyvars1 :: { ([Name L],L) }+> : tyvars tyvar { ($2 : fst $1, snd $1 <?+> ann $2) }+++-----------------------------------------------------------------------------+Functional Dependencies++These require the FunctionalDependencies extension to be enabled.++> fds :: { ([FunDep L],[S],Maybe L) }+> : {- empty -} { ([],[], Nothing) }+> | '|' fds1 {% do { checkEnabled FunctionalDependencies ;+> let {(fds,ss,l) = $2} ;+> return (reverse fds, $1 : reverse ss, Just (nIS $1 <++> l)) } }++> fds1 :: { ([FunDep L],[S],L) }+> : fds1 ',' fd { let (fds,ss,l) = $1 in ($3 : fds, $2 : ss, l <++> ann $3) }+> | fd { ([$1],[],ann $1) }++> fd :: { FunDep L }+> : tyvars '->' tyvars1 { FunDep (snd $1 <?+> nIS $2 <++> snd $3 <** [$2]) (reverse (fst $1)) (reverse (fst $3)) }++-----------------------------------------------------------------------------+Datatype declarations++GADTs - require the GADTs extension enabled, but we handle that at the calling site.++ gadtlist :: { ([GadtDecl L],[S],L) }+ : gadtlist1 {% >> return $1 }++> gadtlist :: { ([GadtDecl L],[S],Maybe L) }+> : 'where' '{' gadtconstrs1 '}' {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }+> | 'where' open gadtconstrs1 close {% return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }+> | {- empty -} {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }++> gadtconstrs1 :: { ([GadtDecl L],[S]) }+> : optsemis gadtconstrs optsemis { (fst $2, reverse $1 ++ snd $2 ++ reverse $3) }++> gadtconstrs :: { ([GadtDecl L],[S]) }+> : gadtconstrs semis gadtconstr { ($3 ++ fst $1, snd $1 ++ reverse $2) }+> | gadtconstr { ($1,[]) }++> gadtconstr :: { [GadtDecl L] }+> : qcon '::' truectype {% do { c <- checkUnQual $1;+> return [GadtDecl ($1 <> $3 <** [$2]) c Nothing Nothing Nothing $3] } }+> | qcon '::' context '{' fielddecls '}' '->' truectype+> {% do { c <- checkUnQual $1;+> ctxt <- checkContext (Just $3) ;+> return [GadtDecl ($1 <> $8 <** [$2,$4,$6,$7] ++ snd $5) c Nothing ctxt (Just (reverse $ fst $5)) $8] } }+> | qcon '::' '{' fielddecls '}' '->' truectype+> {% do { c <- checkUnQual $1;+> return [GadtDecl ($1 <> $7 <** [$2,$3,$5,$6] ++ snd $4) c Nothing Nothing (Just (reverse $ fst $4)) $7] } }++To allow the empty case we need the EmptyDataDecls extension.+> constrs0 :: { ([QualConDecl L],[S],Maybe L) }+ : {- empty -} {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }+> : '=' constrs { let (ds,ss,l) = $2 in (ds, $1 : reverse ss, Just $ nIS $1 <++> l) }++> constrs :: { ([QualConDecl L],[S],L) }+> : constrs '|' constr { let (ds,ss,l) = $1 in ($3 : ds, $2 : ss, l <++> ann $3) }+> | constr { ([$1],[],ann $1) }++> constr :: { QualConDecl L }+> : forall context constr1 {% do { checkEnabled ExistentialQuantification ;+> ctxt <- checkContext (Just $2) ;+> let {(mtvs,ss,ml) = $1} ;+> return $ QualConDecl (ml <?+> ann $3 <** ss) mtvs ctxt $3 } }+> | forall constr1 { let (mtvs, ss, ml) = $1 in QualConDecl (ml <?+> ann $2 <** ss) mtvs Nothing $2 }++> forall :: { (Maybe [TyVarBind L], [S], Maybe L) }+> : 'forall' ktyvars '.' {% checkEnabled ExistentialQuantification >> return (Just (fst $2), [$1,$3], Just $ $1 <^^> $3) }+> | {- empty -} { (Nothing, [], Nothing) }++To avoid conflicts when introducing type operators, we need to parse record constructors+as qcon and then check separately that they are truly unqualified.++> constr1 :: { ConDecl L }+> : scontype { let (n,ts,l) = $1 in ConDecl l n ts }+> | truebtype conop truebtype { InfixConDecl ($1 <> $3) $1 $2 $3 }+> | qcon '{' '}' {% do { c <- checkUnQual $1; return $ RecDecl (ann $1 <++> nIS $3 <** [$2,$3]) c [] } }+> | qcon '{' fielddecls '}' {% do { c <- checkUnQual $1;+> return $ RecDecl (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) c (reverse (fst $3)) } }++> scontype :: { (Name L, [Type L], L) }+> : btype {% do { (c,ts) <- splitTyConApp $1;+> return (c, ts, ann $1) } }++> fielddecls :: { ([FieldDecl L],[S]) }+> : fielddecls ',' fielddecl { ($3 : fst $1, $2 : snd $1) }+> | fielddecl { ([$1],[]) }++> fielddecl :: { FieldDecl L }+> : vars '::' truectype { let (ns,ss,l) = $1 in FieldDecl (l <++> ann $3 <** (reverse ss ++ [$2])) (reverse ns) $3 }++> maybe_derivings :: { [Deriving L] }+> : {- empty -} { [] }+> | derivings { $1 }++> derivings :: { [Deriving L] }+> : derivings deriving { $2 : $1 }+> | deriving { [$1] }++> deriving :: { Deriving L }+> : 'deriving' deriv_clause_types+> { let (ihs, last_ss, sss) = $2+> in Deriving ($1 <^^> last_ss <** $1:sss) Nothing ihs }+> | 'deriving' deriv_strategy_no_via deriv_clause_types+> { let (ihs, last_ss, sss) = $3+> in Deriving ($1 <^^> last_ss <** $1:sss) (Just $2) ihs }+> | 'deriving' deriv_clause_types deriv_strategy_via+> { let (ihs, last_ss, sss) = $2+> in Deriving ($1 <^^> last_ss <** $1:sss) (Just $3) ihs }++> dclasses :: { ([InstRule L],[S]) }+> : types1 {% checkDeriving (fst $1) >>= \ds -> return (ds, snd $1) }++> qtycls1 :: { InstHead L }+> : qconid { IHCon (ann $1) $1 }++> deriv_clause_types :: { ([InstRule L], SrcSpan, [SrcSpan]) }+> : qtycls1 { [IRule (ann $1) Nothing Nothing $1], srcInfoSpan (ann $1), [] }+> | '(' ')' { [], $2, [$1, $2] }+> | '(' dclasses ')' { case fst $2 of+> [ts] -> ([IParen ($1 <^^> $3 <** [$1,$3]) ts], $3, [])+> tss -> (reverse tss, $3, $1: reverse (snd $2) ++ [$3]) }++-----------------------------------------------------------------------------+Kinds++> kind :: { Kind L }+> : kind1 {% checkEnabled KindSignatures >> return $1 }++> kind1 :: { Kind L }+> : ctype_(NEVER,'*') {% checkType $1 }++> optkind :: { (Maybe (Kind L), [S]) }+> : {-empty-} { (Nothing,[]) }+> | '::' kind { (Just $2,[$1]) }++> opt_tyconsig :: { Maybe ( S, QName L ) }+> : {- empty -} { Nothing }+> | '::' gtycon { Just ($1, $2) }+-----------------------------------------------------------------------------+Class declarations++TODO: Lots of stuff to pass around here.++No implicit parameters in the where clause of a class declaration.+> optcbody :: { (Maybe [ClassDecl L],[S],Maybe L) }+> : 'where' '{' cldecls '}' {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+> | 'where' open cldecls close {% do { vs <- checkClassBody (fst $3);+> let { l' = if null (fst $3) then nIS $4 else (ann . last $ fst $3) };+> return (Just vs, $1:$2: snd $3 ++ [$4], Just (nIS $1 <++> l')) } }+> | {- empty -} { (Nothing,[],Nothing) }++> cldecls :: { ([ClassDecl L],[S]) }+> : optsemis cldecls1 optsemis {% checkRevClsDecls (fst $2) >>= \cs -> return (cs, reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([],reverse $1) }++> cldecls1 :: { ([ClassDecl L],[S]) }+> : cldecls1 semis cldecl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | cldecl { ([$1],[]) }++Associated types require the TypeFamilies extension.++> cldecl :: { ClassDecl L }+> : decl { ClsDecl (ann $1) $1 }+> | atdecl {% checkEnabled TypeFamilies >> return $1 }+> | 'default' signdecl {% checkEnabled DefaultSignatures >> checkDefSigDef $2 >>= \(n,t,l) -> return (ClsDefSig (nIS $1 <++> ann $2 <** [$1,l]) n t) }++> opt_family :: { [S] }+> : {- empty -} { [] }+> | 'family' { [$1] }++> atdecl :: { ClassDecl L }+> : 'data' opt_family type opt_datafam_kind_sig+> {% do { (cs,dh) <- checkDataHeader $3;+> return (ClsDataFam (nIS $1 <++> ann $3 <+?> (fmap ann) $4 <** [$1]) cs dh $4) } }+> | 'type' type opt_at_kind_inj_sig2+> {% mkAssocType $1 $2 $3 }+> | 'type' 'family' type opt_at_kind_inj_sig+> {% do { dh <- checkSimpleType $3;+> return (ClsTyFam (nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4)+> <+?> (fmap ann) (snd $4)+> <** [$1]) dh (fst $4) (snd $4)) } }+> | 'type' 'instance' ty_fam_inst_eqn+> { ClsTyDef (nIS $1 <++> ann $3 <** [$1,$2]) $3 }++-----------------------------------------------------------------------------+Instance declarations++> optvaldefs :: { (Maybe [InstDecl L],[S],Maybe L) }+> : 'where' '{' valdefs '}' {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+> | 'where' open valdefs close {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+> | {- empty -} { (Nothing, [], Nothing) }++> valdefs :: { ([InstDecl L],[S]) }+> : optsemis valdefs1 optsemis {% checkRevInstDecls (fst $2) >>= \is -> return (is, reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([],reverse $1) }++> valdefs1 :: { ([InstDecl L],[S]) }+> : valdefs1 semis insvaldef { ($3 : fst $1, snd $1 ++ reverse $2) }+> | insvaldef { ([$1],[]) }++Associated types require the TypeFamilies extension enabled.++> insvaldef :: { InstDecl L }+> : valdef { InsDecl (ann $1) $1 }+> | atinst {% checkEnabled TypeFamilies >> return $1 }+> | specinldecl { InsDecl (ann $1) $1 }+> | signdecl0 {% checkEnabled InstanceSigs >> return (InsDecl (ann $1) $1) }++ inlinst :: { InstDecl L }+ : '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InsInline (l <^^> $4 <** [l,$4]) s $2 $3 }++> atinst :: { InstDecl L }+> : 'type' truedtype '=' truectype+> {% do { -- no checkSimpleType $4 since dtype may contain type patterns+> return (InsType (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4) } }+> | data_or_newtype truectype constrs0 maybe_derivings+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> let {(ds,ss,minf) = $3};+> checkDataOrNew $1 ds;+> return (InsData ($1 <> $2 <+?> minf <+?> fmap ann (listToMaybe $4) <** ss ) $1 $2 (reverse ds) (reverse $4)) } }+> | data_or_newtype truectype optkind gadtlist maybe_derivings+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> let { (gs,ss,minf) = $4 } ;+> checkDataOrNewG $1 gs;+> return $ InsGData (ann $1 <+?> minf <+?> fmap ann (listToMaybe $5) <** (snd $3 ++ ss)) $1 $2 (fst $3) (reverse gs) (reverse $5) } }++-----------------------------------------------------------------------------+Value definitions++> valdef :: { Decl L }+> : exp0b optsig rhs optwhere {% checkValDef (($1 <> $3 <+?> (fmap ann) (fst $4)) <** (snd $4)) $1 $2 $3 (fst $4) }+> | '!' aexp rhs optwhere {% do { checkEnabled BangPatterns ;+> let { l = nIS $1 <++> ann $2 <** [$1] };+> p <- checkPattern (BangPat l $2);+> return $ PatBind (p <> $3 <+?> (fmap ann) (fst $4) <** snd $4)+> p $3 (fst $4) } }++May bind implicit parameters+> optwhere :: { (Maybe (Binds L),[S]) }+> : 'where' binds { (Just $2, [$1]) }+> | {- empty -} { (Nothing, []) }++Type signatures on value definitions require ScopedTypeVariables (or PatternSignatures, which is deprecated).++> optsig :: { (Maybe (Type L, S)) }+> : '::' truectype {% checkEnabled ScopedTypeVariables >> return (Just ($2, $1)) }+> | {- empty -} { Nothing }++> rhs :: { Rhs L }+> : '=' trueexp { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }+> | gdrhs { GuardedRhss (snd $1) (reverse $ fst $1) }++> gdrhs :: { ([GuardedRhs L],L) }+> : gdrhs gdrh { ($2 : fst $1, snd $1 <++> ann $2) }+> | gdrh { ([$1],ann $1) }++Guards may contain patterns if PatternGuards is enabled, hence quals instead of exp.+> gdrh :: { GuardedRhs L }+> : '|' quals '=' trueexp {% do { checkPatternGuards (fst $2);+> return $ GuardedRhs (nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])) (reverse (fst $2)) $4 } }++-----------------------------------------------------------------------------+Expressions++Note: The Report specifies a meta-rule for lambda, let and if expressions+(the exp's that end with a subordinate exp): they extend as far to+the right as possible. That means they cannot be followed by a type+signature or infix application. To implement this without shift/reduce+conflicts, we split exp10 into these expressions (exp10a) and the others+(exp10b). That also means that only an exp0 ending in an exp10b (an exp0b)+can followed by a type signature or infix application. So we duplicate+the exp0 productions to distinguish these from the others (exp0a).++Ugly: We need non-parenthesized post-operators for HaRP, and to parse both+these and normal left sections, we parse both as PostOp and let the post pass+mangle them into the correct form depending on context.++> trueexp :: { Exp L }+> : exp {% checkExpr $1 }++> exp :: { PExp L }+> : exp0b '::' truectype { ExpTypeSig ($1 <> $3 <** [$2]) $1 $3 }+> | exp0 { $1 }+> | exp0b qop { PostOp ($1 <> $2) $1 $2 }+> | exp0b '-<' exp { LeftArrApp ($1 <> $3 <** [$2]) $1 $3 }+> | exp0b '>-' exp { RightArrApp ($1 <> $3 <** [$2]) $1 $3 }+> | exp0b '-<<' exp { LeftArrHighApp ($1 <> $3 <** [$2]) $1 $3 }+> | exp0b '>>-' exp { RightArrHighApp ($1 <> $3 <** [$2]) $1 $3 }++> exp0 :: { PExp L }+> : exp0a { $1 }+> | exp0b { $1 }++> exp0a :: { PExp L }+> : exp0b qop exp10a { InfixApp ($1 <> $3) $1 $2 $3 }+> | exp10a { $1 }++> exp0b :: { PExp L }+> : exp0b qop exp10b { InfixApp ($1 <> $3) $1 $2 $3 }+> | 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 }+> | 'if' exp optlayoutsemi 'then' exp optlayoutsemi 'else' exp+> { If (nIS $1 <++> ann $8 <** ($1:$3 ++ $4:$6 ++ [$7])) $2 $5 $8 }+> | 'if' ifaltslist {% checkEnabled MultiWayIf >>+> let (alts, inf, ss) = $2+> in return (MultiIf (nIS $1 <++> inf <** ($1:ss)) alts) }+> | 'proc' apat '->' exp { Proc (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }+> | exppragma { $1 }++> optlayoutsemi :: { [S] }+> : ';' {% checkEnabled DoAndIfThenElse >> return [$1] }+> | {- empty -} { [] }++We won't come here unless XmlSyntax is already checked.+> opthsxsemi :: { [S] }+> : ';' { [$1] }+> | {- empty -} { [] }+++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) } }+> | '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 }++> exppragma :: { PExp L }+> : '{-# CORE' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in CorePragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }+> | '{-# SCC' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in SCCPragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }+> | '{-# GENERATED' STRING INT ':' INT '-' INT ':' INT '#-}' exp+> { let { Loc l0 (StringTok (s,_)) = $2;+> Loc l1 (IntTok (i1,_)) = $3;+> Loc l2 (IntTok (i2,_)) = $5;+> Loc l3 (IntTok (i3,_)) = $7;+> Loc l4 (IntTok (i4,_)) = $9}+> in GenPragma (nIS $1 <++> ann $11 <** [$1,l0,l1,$4,l2,$6,l3,$8,l4,$10])+> s (fromInteger i1, fromInteger i2)+> (fromInteger i3, fromInteger i4) $11 }++> 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] }+> : apats apat { $2 : $1 }+> | apat { [$1] }++> apat :: { Pat L }+> : aexp {% checkPattern $1 }+> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }++UGLY: Because patterns and expressions are mixed, aexp has to be split into+two rules: One right-recursive and one left-recursive. Otherwise we get two+reduce/reduce-errors (for as-patterns and irrefutable patters).++Even though the variable in an as-pattern cannot be qualified, we use+qvar here to avoid a shift/reduce conflict, and then check it ourselves+(as for vars above).++Non-linear name binding, @:, requires RegularPatterns, but the lexer handles that.++> aexp :: { PExp L }+> : qvar '@' aexp {% do { n <- checkUnQual $1;+> return (AsPat ($1 <> $3 <** [$2]) n $3) } }+> | qvar '@:' aexp {% do { n <- checkUnQual $1;+> return (CAsRP ($1 <> $3 <** [$2]) n $3) } }+> | '~' aexp { IrrPat (nIS $1 <++> ann $2 <** [$1]) $2 }+> | TYPEAPP trueatype { TypeApp (nIS $1 <++> ann $2 <** [$1]) $2 }+> | aexp1 { $1 }++Note: The first two alternatives of aexp1 are not necessarily record+updates: they could be labeled constructions.++> aexp1 :: { PExp L }+> : aexp1 '{' '}' {% liftM (amap (const (ann $1 <++> nIS $3 <** [$2,$3]))) $ mkRecConstrOrUpdate $1 [] }+> | aexp1 '{' fbinds '}' {% liftM (amap (const (ann $1 <++> nIS $4 <** ($2:snd $3 ++ [$4]))))+> $ mkRecConstrOrUpdate $1 (fst $3) }+> | aexp2 { $1 }++According to the Report, the left section (e op) is legal iff (e op x)+parses equivalently to ((e) op x). Thus e must be an exp0b.+An implicit parameter can be used as an expression, enabled by the lexer.+Extensions using banana brackets are also enabled by the lexer. The only+thing we need to look at here is the erpats that use no non-standard lexemes.++> aexp2 :: { PExp L }+> : ivar { IPVar (ann $1) $1 }+> | overloaded_label { $1 }+> | qvar { Var (ann $1) $1 }+> | gcon { $1 }+> | literal { Lit (ann $1) $1 }+> | '(' texp ')' { Paren ($1 <^^> $3 <** [$1,$3]) $2 }+> | '(' tup_exprs ')' {% do { e <- mkSumOrTuple Boxed ($1 <^^> $3) (snd $2)+> ; return $ amap (\l -> l <** [$1] ++ fst $2 ++ [$3]) e } }+> | '(#' texp '#)' { TupleSection ($1 <^^> $3 <** [$1,$3]) Unboxed [Just $2] }+> | '(#' tup_exprs '#)' {% do { e <- mkSumOrTuple Unboxed ($1 <^^> $3) (snd $2)+> ; return $ amap (\l -> l <** [$1] ++ fst $2 ++ [$3]) e } }+> | '[' 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) }+> | '(|' 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 }+++Template Haskell - all this is enabled in the lexer.+> | IDSPLICE { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }+> | TIDSPLICE { let Loc l (THTIdEscape s) = $1 in SpliceExp (nIS l) $ TIdSplice (nIS l) s }+> | '$(' trueexp ')' { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ ParenSplice l $2 }+> | '$$(' trueexp ')' { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ TParenSplice l $2 }+> | '[|' trueexp '|]' { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ ExpBracket l $2 }+> | '[||' trueexp '||]' { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ TExpBracket l $2 }+> | '[p|' exp0 '|]' {% do { p <- checkPattern $2;+> let {l = ($1 <^^> $3 <** [$1,$3]) };+> return $ BracketExp l $ PatBracket l p } }+> | '[t|' truectype '|]' { let l = $1 <^^> $3 <** [$1,$3] in BracketExp l $ TypeBracket l $2 }+> | '[d|' open topdecls close '|]' { let l = $1 <^^> $5 <** ($1:snd $3 ++ [$5])+> in BracketExp l $ DeclBracket ($1 <^^> $5 <** ($2:snd $3 ++ [$4,$5])) (fst $3) }+> | VARQUOTE '(' ')' { let {l1 = $1 <^^> $3 <** [$1];+> l2 = $2 <^^> $3 <** [$2,$3];}+> in VarQuote l1 (unit_con_name l2) }+> | VARQUOTE '[' ']' { let {l1 = $1 <^^> $3 <** [$1];+> l2 = $2 <^^> $3 <** [$2,$3];}+> in VarQuote l1 (list_con_name l2) }+> | VARQUOTE qvar { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+> | VARQUOTE qcon { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+> | TYPQUOTE tyvar { TypQuote (nIS $1 <++> ann $2 <** [$1]) (UnQual (ann $2) $2) }+> | TYPQUOTE gtycon { TypQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+> | QUASIQUOTE { let Loc l (THQuasiQuote (n,q)) = $1 in QuasiQuote (nIS l) n q }+End Template Haskell++> tup_exprs :: { ([S], SumOrTuple L) }+> : texp commas_tup_tail { (fst $2, STuple (Just $1 : snd $2)) }+> | texp bars { ($2, SSum 0 (length $2) $1) }+> | commas tup_tail { ($1 ++ (fst $2), STuple ((map (const Nothing) $1) ++ snd $2)) }+> | bars texp bars0 { ($1 ++ $3, SSum (length $1) (length $3) $2) }++> commas_tup_tail :: { ([S], [Maybe (PExp L)]) }+> : commas tup_tail { (reverse $1 ++ fst $2, map (const Nothing) (tail $1) ++ snd $2) }++> tup_tail :: { ([S], [Maybe (PExp L)]) }+> : texp commas_tup_tail { (fst $2, Just $1 : snd $2) }+> | texp { ([], [Just $1]) }+> | {- empty -} { ([], [Nothing]) }++> commas :: { [S] }+> : commas ',' { $2 : $1 }+> | ',' { [$1] }++> bars :: { [S] }+> : bars '|' { $2 : $1 }+> | '|' { [$1] }++> bars0 :: { [S] }+> : bars { $1 }+> | { [] }++> texp :: { PExp L }+> : exp { $1 }+> | qopm exp0 { PreOp ($1 <> $2) $1 $2 }+> | exp '->' pat {% do {checkEnabled ViewPatterns;+> return $ ViewPat ($1 <> $3 <** [$2]) $1 $3} }++-----------------------------------------------------------------------------+Harp Extensions++> sexps :: { ([PExp L],[S]) }+> : sexps ',' exp { ($3 : fst $1, $2 : snd $1) }+> | exp { ([$1],[]) }++Either patterns are left associative+> erpats :: { PExp L }+> : exp '|' erpats { EitherRP ($1 <> $3 <** [$2]) $1 $3 }+> | exp '|' exp { EitherRP ($1 <> $3 <** [$2]) $1 $3 }++-----------------------------------------------------------------------------+Hsx Extensions - requires XmlSyntax, but the lexer handles all that.++> xml :: { PExp L }+> : '<' name attrs mattr '>' children opthsxsemi '</' name '>'+> {% do { n <- checkEqNames $2 $9;+> let { cn = reverse $6;+> as = reverse $3;+> l = $1 <^^> $10 <** [$1,$5] ++ $7 ++ [$8,srcInfoSpan (ann $9),$10] };+> return $ XTag l n as $4 cn } }+> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }+> | '<%' exp '%>' { XExpTag ($1 <^^> $3 <** [$1,$3]) $2 }+> | '<%>' children opthsxsemi '</' '%>' { XChildTag ($1 <^^> $5 <** ($1:$3++[$4,$5])) (reverse $2) }++> children :: { [PExp L] }+> : children child { $2 : $1 }+> | {- empty -} { [] }++> child :: { PExp L }+> : PCDATA { let Loc l (XPCDATA pcd) = $1 in XPcdata (nIS l) pcd }+> | '<[' sexps ']>' { XRPats ($1 <^^> $3 <** (snd $2 ++ [$1,$3])) $ reverse (fst $2) }+> | xml { $1 }++> name :: { XName L }+> : xmlname ':' xmlname { let {Loc l1 s1 = $1; Loc l2 s2 = $3}+> in XDomName (nIS l1 <++> nIS l2 <** [l1,$2,l2]) s1 s2 }+> | xmlname { let Loc l str = $1 in XName (nIS l) str }++> xmlname :: { Loc String }+> : VARID { let Loc l (VarId s) = $1 in Loc l s }+> | CONID { let Loc l (ConId s) = $1 in Loc l s }+> | DVARID { let Loc l (DVarId s) = $1 in Loc l $ mkDVar s }+> | xmlkeyword { $1 }++> xmlkeyword :: { Loc String }+> : 'type' { Loc $1 "type" }+> | 'class' { Loc $1 "class" }+> | 'data' { Loc $1 "data" }+> | 'foreign' { Loc $1 "foreign" }+> | 'export' { Loc $1 "export" }+> | 'safe' { Loc $1 "safe" }+> | 'unsafe' { Loc $1 "unsafe" }+> | 'interruptible' { Loc $1 "interruptible" }+> | 'threadsafe' { Loc $1 "threadsafe" }+> | 'stdcall' { Loc $1 "stdcall" }+> | 'ccall' { Loc $1 "ccall" }+> | 'cplusplus' { Loc $1 "cplusplus" }+> | 'dotnet' { Loc $1 "dotnet" }+> | 'jvm' { Loc $1 "jvm" }+> | 'js' { Loc $1 "js" }+> | 'javascript' { Loc $1 "javascript" }+> | 'capi' { Loc $1 "capi" }+> | 'as' { Loc $1 "as" }+> | 'by' { Loc $1 "by" }+> | 'case' { Loc $1 "case" }+> | 'default' { Loc $1 "default" }+> | 'deriving' { Loc $1 "deriving" }+> | 'do' { Loc $1 "do" }+> | 'else' { Loc $1 "else" }+> | 'family' { Loc $1 "family" }+> | 'forall' { Loc $1 "forall" }+> | 'group' { Loc $1 "group" }+> | 'hiding' { Loc $1 "hiding" }+> | 'if' { Loc $1 "if" }+> | 'import' { Loc $1 "import" }+> | 'in' { Loc $1 "in" }+> | 'infix' { Loc $1 "infix" }+> | 'infixl' { Loc $1 "infixl" }+> | 'infixr' { Loc $1 "infixr" }+> | 'instance' { Loc $1 "instance" }+> | 'let' { Loc $1 "let" }+> | 'mdo' { Loc $1 "mdo" }+> | 'module' { Loc $1 "module" }+> | 'newtype' { Loc $1 "newtype" }+> | 'of' { Loc $1 "of" }+> | 'proc' { Loc $1 "proc" }+> | 'rec' { Loc $1 "rec" }+> | 'then' { Loc $1 "then" }+> | 'using' { Loc $1 "using" }+> | 'where' { Loc $1 "where" }+> | 'qualified' { Loc $1 "qualified" }+++> attrs :: { [ParseXAttr L] }+> : attrs attr { $2 : $1 }+> | {- empty -} { [] }++> attr :: { ParseXAttr L }+> : name '=' aexp { XAttr ($1 <> $3 <** [$2]) $1 $3 }++> mattr :: { Maybe (PExp L) }++> : aexp { Just $1 }+> | {-empty-} { Nothing }++-----------------------------------------------------------------------------+List expressions++The rules below are little bit contorted to keep lexps left-recursive while+avoiding another shift/reduce-conflict.++> list :: { L -> PExp L }+> : texp { \l -> List l [$1] }+> | lexps { \l -> let (ps,ss) = $1 in List (l <** reverse ss) (reverse ps) }+> | texp '..' { \l -> EnumFrom (l <** [$2]) $1 }+> | texp ',' exp '..' { \l -> EnumFromThen (l <** [$2,$4]) $1 $3 }+> | texp '..' exp { \l -> EnumFromTo (l <** [$2]) $1 $3 }+> | texp ',' exp '..' exp { \l -> EnumFromThenTo (l <** [$2,$4]) $1 $3 $5 }+> | texp '|' pqualstmts { \l -> let (stss, ss) = $3 in ParComp (l <** ($2:ss)) $1 (reverse stss) }++> lexps :: { ([PExp L],[S]) }+> : lexps ',' texp { let (es, ss) = $1 in ($3 : es, $2 : ss) }+> | texp ',' texp { ([$3,$1], [$2]) }++-----------------------------------------------------------------------------+List comprehensions++> pqualstmts :: { ([[QualStmt L]],[S]) }+> : pqualstmts '|' qualstmts { let { (stss, ss1) = $1;+> (sts, ss2) = $3 }+> in (reverse sts : stss, ss1 ++ [$2] ++ reverse ss2) }+> | qualstmts { let (sts, ss) = $1 in ([reverse sts], reverse ss) }++> qualstmts :: { ([QualStmt L],[S]) }+> : qualstmts ',' qualstmt { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }+> | qualstmt { ([$1],[]) }++> qualstmt :: { QualStmt L }+> : transformqual { $1 }+> | qual { QualStmt (ann $1) $1 }++> transformqual :: { QualStmt L }+> : 'then' trueexp { ThenTrans (nIS $1 <++> ann $2 <** [$1]) $2 }+> | 'then' trueexp 'by' trueexp { ThenBy (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }+> | 'then' 'group' 'by' trueexp { GroupBy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }+> | 'then' 'group' 'using' trueexp { GroupUsing (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }+> | 'then' 'group' 'by' trueexp 'using' trueexp { GroupByUsing (nIS $1 <++> ann $6 <** [$1,$2,$3,$5]) $4 $6 }++> quals :: { ([Stmt L],[S]) }+> : quals ',' qual { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }+> | qual { ([$1],[]) }++> qual :: { Stmt L }+> : pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }+> | trueexp { Qualifier (ann $1) $1 }+> | 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }++-----------------------------------------------------------------------------+Parallel array expressions++See comments on list expressions. Parallel arrays are finite sequences.+This definition also allows empty arrays.++> parr :: { L -> PExp L }+> : { \l -> ParArray l [] }+> | texp { \l -> ParArray l [$1] }+> | lexps { \l -> let (ps,ss) = $1 in ParArray (l <** reverse ss) (reverse ps) }+> | texp '..' exp { \l -> ParArrayFromTo (l <** [$2]) $1 $3 }+> | texp ',' exp '..' exp { \l -> ParArrayFromThenTo (l <** [$2,$4]) $1 $3 $5 }+> | texp '|' pqualstmts { \l -> let (stss, ss) = $3 in ParArrayComp (l <** ($2:ss)) $1 (reverse stss) }++-----------------------------------------------------------------------------+Case alternatives++> altslist :: { ([Alt L],L,[S]) }+> : '{' alts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }+> | open alts close { let l' = ann . last $ fst $2+> in (fst $2, nIS $1 <++> l', $1:snd $2 ++ [$3]) }+> | '{' '}' {% do { checkEnabled EmptyCase;+> return ([], $1 <^^> $2, [$1, $2]) } }+++> alts :: { ([Alt L],[S]) }+> : optsemis alts1 optsemis { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }++> alts1 :: { ([Alt L],[S]) }+> : alts1 semis alt { ($3 : fst $1, snd $1 ++ $2) }+> | alt { ([$1],[]) }++> alt :: { Alt L }+> : pat ralt optwhere { Alt ($1 <> $2 <+?> (fmap ann) (fst $3) <** snd $3) $1 $2 (fst $3) }++> ralt :: { Rhs L }+> : '->' trueexp { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }+> | gdpats { GuardedRhss (snd $1) (reverse $ fst $1) }++> gdpats :: { ([GuardedRhs L],L) }+> : gdpats gdpat { ($2 : fst $1, snd $1 <++> ann $2) }+> | gdpat { ([$1], ann $1) }++A guard can be a pattern guard if PatternGuards is enabled, hence quals instead of exp0.+> gdpat :: { GuardedRhs L }+> : '|' quals '->' trueexp {% do { checkPatternGuards (fst $2);+> let {l = nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])};+> return (GuardedRhs l (reverse (fst $2)) $4) } }++> pat :: { Pat L }+> : exp {% checkPattern $1 }+> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }++> ifaltslist :: { ([GuardedRhs L], L, [S]) }+> : '{' ifalts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }+> | open ifalts close { let l' = ann . last $ fst $2+> in (fst $2, nIS $1 <++> l', $1:snd $2 ++ [$3]) }++> ifalts :: { ([GuardedRhs L], [S]) }+> : optsemis ifalts1 optsemis { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }++> ifalts1 :: { ([GuardedRhs L], [S]) }+> : ifalts1 optsemis gdpat { ($3 : fst $1, snd $1 ++ $2) }+> | gdpat { ([$1], []) }++-----------------------------------------------------------------------------+Statement sequences++As per the Report, but with stmt expanded to simplify building the list+without introducing conflicts. This also ensures that the last stmt is+an expression.++TODO: The points can't be added here, must be propagated!++> stmtlist :: { ([Stmt L],L,[S]) }+> : '{' stmts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }+> | open stmts close { let l' = ann . last $ fst $2+> in (fst $2, nIS $1 <++> l', $1:snd $2 ++ [$3]) }++> stmts :: { ([Stmt L],[S]) }+> : stmt stmts1 { ($1 : fst $2, snd $2) }+> | ';' stmts { (fst $2, $1 : snd $2) }+> | {- empty -} { ([],[]) }++> stmts1 :: { ([Stmt L],[S]) }+> : ';' stmts { (fst $2, $1 : snd $2) }+> | {- empty -} { ([],[]) }++A let statement may bind implicit parameters.+> stmt :: { Stmt L }+> : 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }+> | pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }+> | trueexp { Qualifier (ann $1) $1 }+> | 'rec' stmtlist { let (stms,inf,ss) = $2 in RecStmt (nIS $1 <++> inf <** $1:ss) stms }++-----------------------------------------------------------------------------+Record Field Update/Construction++> fbinds :: { ([PFieldUpdate L],[S]) }+> : fbind ',' fbinds { let (fbs, ss) = $3 in ($1 : fbs, $2 : ss) }+> | fbind { ([$1],[]) }+> | '..' {% do { checkEnabled RecordWildCards `atSrcLoc` (getPointLoc $1);+> return ([FieldWildcard (nIS $1)], []) } }++Puns and wild cards need the respective extensions enabled.++> fbind :: { PFieldUpdate L }+> : qvar '=' exp { FieldUpdate ($1 <>$3 <** [$2]) $1 $3 }+> | qvar {% checkEnabled NamedFieldPuns >> checkQualOrUnQual $1 >>= return . FieldPun (ann $1) }++-----------------------------------------------------------------------------+Implicit parameter bindings - need the ImplicitParameter extension enabled, but the lexer handles that.++> ipbinds :: { ([IPBind L],[S]) }+> : optsemis ipbinds1 optsemis { (reverse (fst $2), reverse $1 ++ snd $2 ++ reverse $3) }++> ipbinds1 :: { ([IPBind L],[S]) }+> : ipbinds1 semis ipbind { ($3 : fst $1, snd $1 ++ reverse $2) }+> | ipbind { ([$1],[]) }++> ipbind :: { IPBind L }+> : ivar '=' trueexp { IPBind ($1 <> $3 <** [$2]) $1 $3 }++-----------------------------------------------------------------------------+Variables, Constructors and Operators.++> gcon :: { PExp L }+> : sysdcon { $1 }+> | qcon { Con (ann $1) $1 }++> gcon_nolist :: { PExp L }+> : sysdcon_nolist { $1 }+> | qcon { Con (ann $1) $1 }++> sysdcon_nolist :: { PExp L }+> : '(' ')' { p_unit_con ($1 <^^> $2 <** [$1,$2]) }+> | '(#' '#)' { p_unboxed_singleton_con ($1 <^^> $2 <** [$1,$2]) }+> | '(#' commas '#)' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Unboxed (length $2) }+> | '(' commas ')' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Boxed (length $2) }+++> sysdcon :: { PExp L }+> : '[' ']' { List ($1 <^^> $2 <** [$1,$2]) [] }+> | sysdcon_nolist { $1 }++> var :: { Name L }+> : varid { $1 }+> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> var_no_safety :: { Name L }+> : varid_no_safety { $1 }+> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qvar :: { QName L }+> : qvarid { $1 }+> | '(' qvarsym ')' { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++Implicit parameter+> ivar :: { IPName L }+> : ivarid { $1 }++> con :: { Name L }+> : conid { $1 }+> | '(' consym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> con_list :: { ([S], [Name L]) }+> : con { ([], [$1]) }+> | con ',' con_list { let (ss, cs) = $3+> in ($2 : ss, $1 :cs) }++> qcon :: { QName L }+> : qconid { $1 }+> | '(' gconsym ')' { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> varop :: { Name L }+> : varsym { $1 }+> | '`' varid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qvarop :: { QName L }+> : qvarsym { $1 }+> | '`' qvarid '`' { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> qvaropm :: { QName L }+> : qvarsymm { $1 }+> | '`' qvarid '`' { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> conop :: { Name L }+> : consym { $1 }+> | '`' conid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qconop :: { QName L }+> : gconsym { $1 }+> | '`' qconid '`' { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }++> op :: { Op L }+> : varop { VarOp (ann $1) $1 }+> | conop { ConOp (ann $1) $1 }++> qop :: { QOp L }+> : qvarop { QVarOp (ann $1) $1 }+> | qconop { QConOp (ann $1) $1 }++> qopm :: { QOp L }+> : qvaropm { QVarOp (ann $1) $1 }+> | qconop { QConOp (ann $1) $1 }++> gconsym :: { QName L }+> : ':' { list_cons_name (nIS $1) }+> | qconsym { $1 }++> overloaded_label :: { PExp L }+> : LABELVARID { let Loc l (LabelVarId v) = $1 in OverloadedLabel+> (nIS l) v }++-----------------------------------------------------------------------------+Identifiers and Symbols++> qvarid :: { QName L }+> : varid { UnQual (ann $1) $1 }+> | QVARID { let {Loc l (QVarId q) = $1; nis = nIS l}+> in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }+> | '_' { hole_name (nIS $1) }++> varid_no_safety :: { Name L }+> : VARID { let Loc l (VarId v) = $1 in Ident (nIS l) v }+> | 'as' { as_name (nIS $1) }+> | 'qualified' { qualified_name (nIS $1) }+> | 'hiding' { hiding_name (nIS $1) }+> | 'export' { export_name (nIS $1) }+> | 'stdcall' { stdcall_name (nIS $1) }+> | 'ccall' { ccall_name (nIS $1) }+> | 'cplusplus' { cplusplus_name (nIS $1) }+> | 'dotnet' { dotnet_name (nIS $1) }+> | 'jvm' { jvm_name (nIS $1) }+> | 'js' { js_name (nIS $1) }+> | 'javascript' { javascript_name (nIS $1) }+> | 'capi' { capi_name (nIS $1) }+> | 'stock' { stock_name (nIS $1) }+> | 'anyclass' { anyclass_name (nIS $1) }++> varid :: { Name L }+> : varid_no_safety { $1 }+> | 'safe' { safe_name (nIS $1) }+> | 'unsafe' { unsafe_name (nIS $1) }+> | 'interruptible' { interruptible_name (nIS $1) }+> | 'threadsafe' { threadsafe_name (nIS $1) }+> | 'forall' { forall_name (nIS $1) }+> | 'family' { family_name (nIS $1) }+> | 'role' { role_name (nIS $1) }+++Implicit parameter+> ivarid :: { IPName L }+> : IDUPID { let Loc l (IDupVarId i) = $1 in IPDup (nIS l) i }+> | ILINID { let Loc l (ILinVarId i) = $1 in IPLin (nIS l) i }++> qconid :: { QName L }+> : conid { UnQual (ann $1) $1 }+> | QCONID { let {Loc l (QConId q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }++> conid :: { Name L }+> : CONID { let Loc l (ConId c) = $1 in Ident (nIS l) c }++> qconsym :: { QName L }+> : consym { UnQual (ann $1) $1 }+> | QCONSYM { let {Loc l (QConSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }++> consym :: { Name L }+> : CONSYM { let Loc l (ConSym c) = $1 in Symbol (nIS l) c }++> qvarsym :: { QName L }+> : qvarsym_('*') { $1 }++> qvarsym_(ostar) :: { QName L }+> : varsym_(ostar) { UnQual (ann $1) $1 }+> | qvarsym1 { $1 }++> qvarsymm :: { QName L }+> : varsymm { UnQual (ann $1) $1 }+> | qvarsym1 { $1 }++> varsym :: { Name L }+> : varsym_('*') { $1 }++> varsym_(ostar) :: { Name L }+> : varsymm_(ostar) { $1 }+> | '-' { minus_name (nIS $1) }++> varsymm :: { Name L }+> : varsymm_('*') { $1 }++> varsymm_(ostar) :: { Name L } -- varsym not including '-'+> : VARSYM { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }+> | '!' { bang_name (nIS $1) }+> | '.' { dot_name (nIS $1) }+> | ostar { star_name (nIS $1) }++> qvarsym1 :: { QName L }+> : QVARSYM { let {Loc l (QVarSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }++> literal :: { Literal L }+> : INT { let Loc l (IntTok (i,raw)) = $1 in Int (nIS l) i raw }+> | CHAR { let Loc l (Character (c,raw)) = $1 in Char (nIS l) c raw }+> | RATIONAL { let Loc l (FloatTok (r,raw)) = $1 in Frac (nIS l) r raw }+> | STRING { let Loc l (StringTok (s,raw)) = $1 in String (nIS l) s raw }+> | PRIMINT { let Loc l (IntTokHash (i,raw)) = $1 in PrimInt (nIS l) i raw }+> | PRIMWORD { let Loc l (WordTokHash (w,raw)) = $1 in PrimWord (nIS l) w raw }+> | PRIMFLOAT { let Loc l (FloatTokHash (f,raw)) = $1 in PrimFloat (nIS l) f raw }+> | PRIMDOUBLE { let Loc l (DoubleTokHash (d,raw)) = $1 in PrimDouble (nIS l) d raw }+> | PRIMCHAR { let Loc l (CharacterHash (c,raw)) = $1 in PrimChar (nIS l) c raw }+> | PRIMSTRING { let Loc l (StringHash (s,raw)) = $1 in PrimString (nIS l) s raw }++-----------------------------------------------------------------------------+Layout++> open :: { S } : {% pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -} }++> close :: { S }+> : vccurly { $1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} } -- context popped in lexer.+> | error {% popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -} }++-----------------------------------------------------------------------------+Pattern Synonyms+-- Pattern synonyms++> pat_syn :: { Decl L }+> : pattern_synonym_decl {% checkEnabled PatternSynonyms >> return $1 }++-- Glasgow extension: pattern synonyms+> pattern_synonym_decl :: { Decl L }+> : 'pattern' pattern_synonym_lhs '=' pat+> { let l = nIS $1 <++> ann $4 <** [$1,$3]+> in PatSyn l $2 $4 ImplicitBidirectional+> }+> | 'pattern' pattern_synonym_lhs '<-' pat+> { let l = nIS $1 <++> ann $4 <** [$1,$3]+> in PatSyn l $2 $4 Unidirectional+> }+> | 'pattern' pattern_synonym_lhs '<-' pat where_decls+> { let l = nIS $1 <++> ann $4 <** [$1, $3]+> in PatSyn l $2 $4 $5}++>+> pattern_synonym_lhs :: { Pat L }+> : con vars0 { let l = case $2 of+> [] -> ann $1+> (_:_) -> ann $1 <++> (ann $ last $2)+> in PApp l (UnQual (ann $1) $1) $2 }+> | varid qconsym varid { PInfixApp (ann $1 <++> ann $3) (PVar (ann $1) $1) $2 (PVar (ann $3) $3) }+> | con '{' commavars '}' { let { (ss, ns) = $3 ;+> qnames = (map (\n -> UnQual (ann n) n) ns) }+> in PRec (ann $1 <++> nIS $4 <** ($2 : ss ++ [$4]))+> (UnQual (ann $1) $1) (map (\q -> PFieldPun (ann q) q) qnames) }+>+> vars0 :: { [Pat L] }+> : {- empty -} { [] }+> | varid vars0 { PVar (ann $1) $1 : $2 }++> commavars :: { ([S], [Name L]) }+> : varid { ([], [$1] ) }+> | varid ',' commavars { let (ss, ns) = $3 in ($2 : ss, $1 : ns) }++> where_decls :: { PatternSynDirection L }+> : 'where' '{' decls '}' {% checkExplicitPatSyn $1 $2 $3 $4 }+> | 'where' open decls close {% checkExplicitPatSyn $1 $2 $3 $4 }++> pattern_synonym_sig :: { Decl L }+> : 'pattern' con_list '::' pstype+> {% do { checkEnabled PatternSynonyms ;+> let {(qtvs, ps, prov, req_vars, req, ty) = $4} ;+> let {sig = PatSynSig (nIS $1 <++> ann ty <** [$1] ++ fst $2 ++ [$3] ++ ps) (snd $2) qtvs prov req_vars req ty} ;+> return sig } }++> pstype :: { (Maybe [TyVarBind L], [S], Maybe (Context L), Maybe [TyVarBind L]+> , Maybe (Context L), Type L )}+> : 'forall' ktyvars '.' pstype+> { let (qtvs, ps, prov, req_vars, req, ty) = $4+> in (Just (reverse (fst $2) ++ fromMaybe [] qtvs), ($1 : $3 : ps), prov, req_vars, req, ty) }+> | context context type+> {% do { c1 <- checkContext (Just $1) ;+> c2 <- checkContext (Just $2) ;+> t <- checkType $3 ;+> return $ (Nothing, [], c1, Nothing, c2, t) }}+> | context 'forall' ktyvars '.' context type+> {% do { c1 <- checkContext (Just $1) ;+> c2 <- checkContext (Just $5) ;+> t <- checkType $6 ;+> return $ (Nothing, [], c1, Just (reverse (fst $3)), c2, t) }}+> | context type+> {% do { c1 <- checkContext (Just $1);+> t <- checkType $2;+> return (Nothing, [], c1, Nothing, Nothing, t) } }+> | type+> {% checkType $1 >>= \t -> return (Nothing, [], Nothing, Nothing, Nothing, t) }++-----------------------------------------------------------------------------+Deriving strategies++> deriv_strategy_no_via :: { DerivStrategy L }+> : 'stock' {% do { checkEnabled DerivingStrategies+> ; return (DerivStock (nIS $1)) } }+> | 'anyclass' {% do { checkEnabled DerivingStrategies+> ; checkEnabled DeriveAnyClass+> ; return (DerivAnyclass (nIS $1)) } }+> | 'newtype' {% do { checkEnabled DerivingStrategies+> ; checkEnabled GeneralizedNewtypeDeriving+> ; return (DerivNewtype (nIS $1)) } }++> deriv_strategy_via :: { DerivStrategy L }+> : 'via' truedtype {% do { checkEnabled DerivingVia+> ; return (DerivVia (nIS $1) $2) } }++> deriv_standalone_strategy :: { Maybe (DerivStrategy L) }+> : deriv_strategy_no_via { Just $1 }+> | deriv_strategy_via { Just $1 }+> | {- empty -} { Nothing }++-----------------------------------------------------------------------------+Miscellaneous (mostly renamings)++> modid :: { ModuleName L }+> : CONID { let Loc l (ConId n) = $1 in ModuleName (nIS l) n }+> | QCONID { let Loc l (QConId n) = $1 in ModuleName (nIS l) (fst n ++ '.':snd n) }++> tyconorcls :: { Name L }+> : con { $1 }++> qtyconorcls :: { QName L }+> : qcon { $1 }++> tyvar :: { Name L }+> : tyvarid { $1 }++> tyvarid :: { Name L }+> : varid_no_safety { $1 }+> | 'safe' { safe_name (nIS $1) }+> | 'unsafe' { unsafe_name (nIS $1) }+> | 'threadsafe' { threadsafe_name (nIS $1) }+ | 'forall' { forall_name (nIS $1) }+ | 'family' { family_name (nIS $1) }++> qtyvarop_(ostar) :: { QName L }+> qtyvarop_ : '`' tyvar '`' { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }+> | tyvarsym_(ostar) { UnQual (ann $1) $1 }++> tyvarsym_(ostar) :: { Name L }+> tyvarsym : VARSYM { let Loc l (VarSym x) = $1 in Symbol (nIS l) x }+> | '-' { Symbol (nIS $1) "-" }+> | ostar { Symbol (nIS $1) "*" }++> impdeclsblock :: { ([ImportDecl L],[S],L) }+> : '{' optsemis impdecls optsemis '}' { let (ids, ss) = $3 in (ids, $1 : reverse $2 ++ ss ++ reverse $4 ++ [$5], $1 <^^> $5) }+> | open optsemis impdecls optsemis close { let (ids, ss) = $3 in (ids, $1 : reverse $2 ++ ss ++ reverse $4 ++ [$5], $1 <^^> $5) }++Exported as partial parsers:++> moduletopname :: { (([ModulePragma L], [S], L), Maybe (ModuleName L)) }+> : toppragmas 'module' modid { ($1, Just $3) }+> | toppragmas {- empty -} { ($1, Nothing) }++> moduletophead :: { (([ModulePragma L], [S], L), Maybe (ModuleHead L)) }+> : toppragmas optmodulehead { ($1, $2) }++> moduletopimps :: { (([ModulePragma L], [S], L), Maybe (ModuleHead L), Maybe ([ImportDecl L],[S],L)) }+> : toppragmas optmodulehead impdeclsblock { ($1, $2, Just $3) }+> | toppragmas optmodulehead {- empty -} { ($1, $2, Nothing) }++-----------------------------------------------------------------------------++> {++> type L = SrcSpanInfo -- just for convenience+> type S = SrcSpan++> parseError :: Loc Token -> P a+> parseError t = fail $ "Parse error: " ++ showToken (unLoc t)++> (<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo+> a <> b = ann a <++> ann b+>+> infixl 6 <>++> nIS = noInfoSpan+> iS = infoSpan++> mparseDecl :: P (Decl SrcSpanInfo)+> mparseDecl = do+> (is, ds, _, _) <- mparseDeclAux+> when (not $ null is) $+> fail $ "Expected single declaration, found import declaration"+> checkSingleDecl ds > }
src/Language/Haskell/Exts/Lexer.hs view
@@ -1,1283 +1,47 @@-{-# OPTIONS_HADDOCK hide #-}--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Annotated.Lexer--- Copyright : (c) The GHC Team, 1997-2000--- (c) Niklas Broberg, 2004-2009--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ Lexer for Haskell, with some extensions.------------------------------------------------------------------------------------- ToDo: Introduce different tokens for decimal, octal and hexadecimal (?)--- ToDo: FloatTok should have three parts (integer part, fraction, exponent) (?)--- ToDo: Use a lexical analyser generator (lx?)--module Language.Haskell.Exts.Lexer (Token(..), showToken, lexer) where--import Language.Haskell.Exts.ParseMonad-import Language.Haskell.Exts.SrcLoc-import Language.Haskell.Exts.Comments-import Language.Haskell.Exts.Extension-import Language.Haskell.Exts.ExtScheme--import Data.Char-import Data.Ratio-import Data.List (intersperse)-import Control.Monad (when)---- import Debug.Trace (trace)--data Token- = VarId String- | QVarId (String,String)- | IDupVarId (String) -- duplicable implicit parameter- | ILinVarId (String) -- linear implicit parameter- | ConId String- | QConId (String,String)- | DVarId [String] -- to enable varid's with '-' in them- | VarSym String- | ConSym String- | QVarSym (String,String)- | QConSym (String,String)- | IntTok (Integer, String)- | FloatTok (Rational, String)- | Character (Char, String)- | StringTok (String, String)- | IntTokHash (Integer, String) -- 1#- | WordTokHash (Integer, String) -- 1##- | FloatTokHash (Rational, String) -- 1.0#- | DoubleTokHash (Rational, String) -- 1.0##- | CharacterHash (Char, String) -- c#- | StringHash (String, String) -- "Hello world!"#---- Symbols-- | LeftParen- | RightParen- | LeftHashParen- | RightHashParen- | LeftCurlyBar- | RightCurlyBar- | SemiColon- | LeftCurly- | RightCurly- | VRightCurly -- a virtual close brace- | LeftSquare- | RightSquare- | Comma- | Underscore- | BackQuote---- Reserved operators-- | Dot -- reserved for use with 'forall x . x'- | DotDot- | Colon- | DoubleColon- | Equals- | Backslash- | Bar- | LeftArrow- | RightArrow- | At- | Tilde- | DoubleArrow- | Minus- | Exclamation- | Star- | LeftArrowTail -- >-- | RightArrowTail -- -<- | LeftDblArrowTail -- >>-- | RightDblArrowTail -- -<<---- Template Haskell- | THExpQuote -- [| or [e|- | THPatQuote -- [p|- | THDecQuote -- [d|- | THTypQuote -- [t|- | THCloseQuote -- |]- | THIdEscape (String) -- dollar x- | THParenEscape -- dollar (- | THVarQuote -- 'x (but without the x)- | THTyQuote -- ''T (but without the T)- | THQuasiQuote (String,String) -- [$...|...]---- HaRP- | RPGuardOpen -- (|- | RPGuardClose -- |)- | RPCAt -- @:---- Hsx- | XCodeTagOpen -- <%- | XCodeTagClose -- %>- | XStdTagOpen -- <- | XStdTagClose -- >- | XCloseTagOpen -- </- | XEmptyTagClose -- />- | XChildTagOpen -- <%> (note that close doesn't exist, it's XCloseTagOpen followed by XCodeTagClose)- | XPCDATA String- | XRPatOpen -- <[- | XRPatClose -- ]>---- Pragmas-- | PragmaEnd -- #-}- | RULES- | INLINE Bool- | INLINE_CONLIKE- | SPECIALISE- | SPECIALISE_INLINE Bool- | SOURCE- | DEPRECATED- | WARNING- | SCC- | GENERATED- | CORE- | UNPACK- | OPTIONS (Maybe String,String)--- | CFILES String--- | INCLUDE String- | LANGUAGE- | ANN---- Reserved Ids-- | KW_As- | KW_By -- transform list comprehensions- | KW_Case- | KW_Class- | KW_Data- | KW_Default- | KW_Deriving- | KW_Do- | KW_MDo- | KW_Else- | KW_Family -- indexed type families- | KW_Forall -- universal/existential types- | KW_Group -- transform list comprehensions- | KW_Hiding- | KW_If- | KW_Import- | KW_In- | KW_Infix- | KW_InfixL- | KW_InfixR- | KW_Instance- | KW_Let- | KW_Module- | KW_NewType- | KW_Of- | KW_Proc -- arrows- | KW_Rec -- arrows- | KW_Then- | KW_Type- | KW_Using -- transform list comprehensions- | KW_Where- | KW_Qualified-- -- FFI- | KW_Foreign- | KW_Export- | KW_Safe- | KW_Unsafe- | KW_Threadsafe- | KW_StdCall- | KW_CCall-- | EOF- deriving (Eq,Show)--reserved_ops :: [(String,(Token, Maybe ExtScheme))]-reserved_ops = [- ( "..", (DotDot, Nothing) ),- ( ":", (Colon, Nothing) ),- ( "::", (DoubleColon, Nothing) ),- ( "=", (Equals, Nothing) ),- ( "\\", (Backslash, Nothing) ),- ( "|", (Bar, Nothing) ),- ( "<-", (LeftArrow, Nothing) ),- ( "->", (RightArrow, Nothing) ),- ( "@", (At, Nothing) ),- ( "@:", (RPCAt, Just (Any [RegularPatterns])) ),- ( "~", (Tilde, Nothing) ),- ( "=>", (DoubleArrow, Nothing) ),- ( "*", (Star, Just (Any [KindSignatures])) ),- -- Arrows notation- ( "-<", (LeftArrowTail, Just (Any [Arrows])) ),- ( ">-", (RightArrowTail, Just (Any [Arrows])) ),- ( "-<<", (LeftDblArrowTail, Just (Any [Arrows])) ),- ( ">>-", (RightDblArrowTail, Just (Any [Arrows])) ),- -- Unicode notation- ( "\x2190", (LeftArrow, Just (Any [UnicodeSyntax])) ),- ( "\x2192", (RightArrow, Just (Any [UnicodeSyntax])) ),- ( "\x21d2", (DoubleArrow, Just (Any [UnicodeSyntax])) ),- ( "\x2237", (DoubleColon, Just (Any [UnicodeSyntax])) ),- ( "\x2919", (LeftArrowTail, Just (All [UnicodeSyntax, Arrows])) ),- ( "\x291a", (RightArrowTail, Just (All [UnicodeSyntax, Arrows])) ),- ( "\x291b", (LeftDblArrowTail, Just (All [UnicodeSyntax, Arrows])) ),- ( "\x291c", (RightDblArrowTail, Just (All [UnicodeSyntax, Arrows])) ),- ( "\x2605", (Star, Just (All [UnicodeSyntax, KindSignatures])) )- ]--special_varops :: [(String,(Token, Maybe ExtScheme))]-special_varops = [- -- the dot is only a special symbol together with forall, but can still be used as function composition- ( ".", (Dot, Just (Any [ExplicitForall, ExistentialQuantification])) ),- ( "-", (Minus, Nothing) ),- ( "!", (Exclamation, Nothing) )- ]--reserved_ids :: [(String,(Token, Maybe ExtScheme))]-reserved_ids = [- ( "_", (Underscore, Nothing) ),- ( "by", (KW_By, Just (Any [TransformListComp])) ),- ( "case", (KW_Case, Nothing) ),- ( "class", (KW_Class, Nothing) ),- ( "data", (KW_Data, Nothing) ),- ( "default", (KW_Default, Nothing) ),- ( "deriving", (KW_Deriving, Nothing) ),- ( "do", (KW_Do, Nothing) ),- ( "else", (KW_Else, Nothing) ),- ( "family", (KW_Family, Just (Any [TypeFamilies])) ), -- indexed type families- ( "forall", (KW_Forall, Just (Any [ExplicitForall, ExistentialQuantification])) ), -- universal/existential quantification- ( "group", (KW_Group, Just (Any [TransformListComp])) ),- ( "if", (KW_If, Nothing) ),- ( "import", (KW_Import, Nothing) ),- ( "in", (KW_In, Nothing) ),- ( "infix", (KW_Infix, Nothing) ),- ( "infixl", (KW_InfixL, Nothing) ),- ( "infixr", (KW_InfixR, Nothing) ),- ( "instance", (KW_Instance, Nothing) ),- ( "let", (KW_Let, Nothing) ),- ( "mdo", (KW_MDo, Just (Any [RecursiveDo])) ),- ( "module", (KW_Module, Nothing) ),- ( "newtype", (KW_NewType, Nothing) ),- ( "of", (KW_Of, Nothing) ),- ( "proc", (KW_Proc, Just (Any [Arrows])) ),- ( "rec", (KW_Rec, Just (Any [Arrows])) ),- ( "then", (KW_Then, Nothing) ),- ( "type", (KW_Type, Nothing) ),- ( "using", (KW_Using, Just (Any [TransformListComp])) ),- ( "where", (KW_Where, Nothing) ),---- FFI- ( "foreign", (KW_Foreign, Just (Any [ForeignFunctionInterface])) ),---- Unicode- ( "\x2200", (KW_Forall, Just (All [UnicodeSyntax, ExplicitForall])) )- ]---special_varids :: [(String,(Token, Maybe ExtScheme))]-special_varids = [- ( "as", (KW_As, Nothing) ),- ( "qualified", (KW_Qualified, Nothing) ),- ( "hiding", (KW_Hiding, Nothing) ),---- FFI- ( "export", (KW_Export, Just (Any [ForeignFunctionInterface])) ),- ( "safe", (KW_Safe, Just (Any [ForeignFunctionInterface])) ),- ( "unsafe", (KW_Unsafe, Just (Any [ForeignFunctionInterface])) ),- ( "threadsafe", (KW_Threadsafe, Just (Any [ForeignFunctionInterface])) ),- ( "stdcall", (KW_StdCall, Just (Any [ForeignFunctionInterface])) ),- ( "ccall", (KW_CCall, Just (Any [ForeignFunctionInterface])) )- ]--pragmas :: [(String,Token)]-pragmas = [- ( "rules", RULES ),- ( "inline", INLINE True ),- ( "noinline", INLINE False ),- ( "notinline", INLINE False ),- ( "specialise", SPECIALISE ),- ( "specialize", SPECIALISE ),- ( "source", SOURCE ),- ( "deprecated", DEPRECATED ),- ( "warning", WARNING ),- ( "ann", ANN ),- ( "scc", SCC ),- ( "generated", GENERATED ),- ( "core", CORE ),- ( "unpack", UNPACK ),- ( "language", LANGUAGE ),- ( "options", OPTIONS undefined ) -- we'll tweak it before use - promise!--- ( "cfiles", CFILES undefined ), -- same here...--- ( "include", INCLUDE undefined ) -- ...and here!- ]--isIdent, isHSymbol :: Char -> Bool-isIdent c = isAlpha c || isDigit c || c == '\'' || c == '_'--isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'"))--matchChar :: Char -> String -> Lex a ()-matchChar c msg = do- s <- getInput- if null s || head s /= c then fail msg else discard 1---- The top-level lexer.--- We need to know whether we are at the beginning of the line to decide--- whether to insert layout tokens.--lexer :: (Loc Token -> P a) -> P a-lexer = runL topLexer--topLexer :: Lex a (Loc Token)-topLexer = do- b <- pullCtxtFlag- if b then -- trace (show cf ++ ": " ++ show VRightCurly) $- setBOL >> getSrcLocL >>= \l -> return (Loc (mkSrcSpan l l) VRightCurly) -- the lex context state flags that we must do an empty {} - UGLY- else do- bol <- checkBOL- (bol, ws) <- lexWhiteSpace bol- -- take care of whitespace in PCDATA- ec <- getExtContext- case ec of- -- if there was no linebreak, and we are lexing PCDATA,- -- then we want to care about the whitespace.- -- We don't bother to test for XmlSyntax, since we- -- couldn't end up in ChildCtxt otherwise.- Just ChildCtxt | not bol && ws -> getSrcLocL >>= \l -> return $ Loc (mkSrcSpan l l) $ XPCDATA " "- _ -> do startToken- sl <- getSrcLocL- t <- if bol then lexBOL -- >>= \t -> trace ("BOL: " ++ show t) (return t)- else lexToken -- >>= \t -> trace (show t) (return t)- el <- getSrcLocL- return $ Loc (mkSrcSpan sl el) t--lexWhiteSpace :: Bool -> Lex a (Bool, Bool)-lexWhiteSpace bol = do- s <- getInput- ignL <- ignoreLinePragmasL- case s of- -- If we find a recognised pragma, we don't want to treat it as a comment.- '{':'-':'#':rest | isRecognisedPragma rest -> return (bol, False)- | isLinePragma rest && not ignL -> do - (l, fn) <- lexLinePragma- setSrcLineL l- setLineFilenameL fn- lexWhiteSpace True- '{':'-':_ -> do- loc <- getSrcLocL- discard 2- (bol, c) <- lexNestedComment bol ""- loc2 <- getSrcLocL- pushComment $ Comment True (mkSrcSpan loc loc2) (reverse c)- (bol, _) <- lexWhiteSpace bol- return (bol, True)- '-':'-':s | all (== '-') (takeWhile isHSymbol s) -> do- loc <- getSrcLocL- discard 2- dashes <- lexWhile (== '-')- rest <- lexWhile (/= '\n')- s' <- getInput- loc2 <- getSrcLocL- let com = Comment False (mkSrcSpan loc loc2) $ dashes ++ rest- case s' of- [] -> pushComment com >> return (False, True)- _ -> do- pushComment com- lexNewline- lexWhiteSpace True- return (True, True)- '\n':_ -> do- lexNewline- lexWhiteSpace True- return (True, True)- '\t':_ -> do- lexTab- (bol, _) <- lexWhiteSpace bol- return (bol, True)- c:_ | isSpace c -> do- discard 1- (bol, _) <- lexWhiteSpace bol- return (bol, True)- _ -> return (bol, False)--isRecognisedPragma, isLinePragma :: String -> Bool-isRecognisedPragma str = let pragma = map toLower . takeWhile isAlphaNum . dropWhile isSpace $ str- in case lookup pragma pragmas of- Nothing -> False- _ -> True--isLinePragma str = let pragma = map toLower . takeWhile isAlphaNum . dropWhile isSpace $ str- in case pragma of- "line" -> True- _ -> False--lexLinePragma :: Lex a (Int, String)-lexLinePragma = do- discard 3 -- {-#- lexWhile isSpace- discard 4 -- LINE- lexWhile isSpace- i <- lexWhile isDigit- lexWhile isSpace- matchChar '"' "Improperly formatted LINE pragma"- fn <- lexWhile (/= '"')- matchChar '"' "Impossible - lexLinePragma"- lexWhile isSpace- mapM (flip matchChar "Improperly formatted LINE pragma") "#-}"- lexNewline- return (read i, fn)--lexNestedComment :: Bool -> String -> Lex a (Bool, String)-lexNestedComment bol str = do- s <- getInput- case s of- '-':'}':_ -> discard 2 >> return (bol, str)- '{':'-':_ -> do- discard 2- (bol, c) <- lexNestedComment bol ("-{" ++ str) -- rest of the subcomment- lexNestedComment bol ("}-" ++ c ) -- rest of this comment- '\t':_ -> lexTab >> lexNestedComment bol ('\t':str)- '\n':_ -> lexNewline >> lexNestedComment True ('\n':str)- c:_ -> discard 1 >> lexNestedComment bol (c:str)- [] -> fail "Unterminated nested comment"---- When we are lexing the first token of a line, check whether we need to--- insert virtual semicolons or close braces due to layout.--lexBOL :: Lex a Token-lexBOL = do- pos <- getOffside- -- trace ("Off: " ++ (show pos)) $ do- case pos of- LT -> do- -- trace "layout: inserting '}'\n" $- -- Set col to 0, indicating that we're still at the- -- beginning of the line, in case we need a semi-colon too.- -- Also pop the context here, so that we don't insert- -- another close brace before the parser can pop it.- setBOL- popContextL "lexBOL"- return VRightCurly- EQ ->- -- trace "layout: inserting ';'\n" $- return SemiColon- GT -> lexToken--lexToken :: Lex a Token-lexToken = do- ec <- getExtContext- -- we don't bother to check XmlSyntax since we couldn't- -- have ended up in a non-Nothing context if it wasn't- -- enabled.- case ec of- Just HarpCtxt -> lexHarpToken- Just TagCtxt -> lexTagCtxt- Just CloseTagCtxt -> lexCloseTagCtxt- Just ChildCtxt -> lexChildCtxt- Just CodeTagCtxt -> lexCodeTagCtxt- _ -> lexStdToken---lexChildCtxt :: Lex a Token-lexChildCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '<':'%':'>':_ -> do discard 3- pushExtContextL ChildCtxt- return XChildTagOpen- '<':'%':_ -> do discard 2- pushExtContextL CodeTagCtxt- return XCodeTagOpen- '<':'/':_ -> do discard 2- popExtContextL "lexChildCtxt"- pushExtContextL CloseTagCtxt- return XCloseTagOpen- '<':'[':_ -> do discard 2- pushExtContextL HarpCtxt- return XRPatOpen- '<':_ -> do discard 1- pushExtContextL TagCtxt- return XStdTagOpen- _ -> lexPCDATA---lexPCDATA :: Lex a Token-lexPCDATA = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- [] -> return EOF- _ -> case s of- '\n':_ -> do- x <- lexNewline >> lexPCDATA- case x of- XPCDATA p -> return $ XPCDATA $ '\n':p- EOF -> return EOF- '<':_ -> return $ XPCDATA ""- _ -> do let pcd = takeWhile (\c -> not $ elem c "<\n") s- l = length pcd- discard l- x <- lexPCDATA- case x of- XPCDATA pcd' -> return $ XPCDATA $ pcd ++ pcd'- EOF -> return EOF---lexCodeTagCtxt :: Lex a Token-lexCodeTagCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '%':'>':_ -> do discard 2- popExtContextL "lexCodeTagContext"- return XCodeTagClose- _ -> lexStdToken--lexCloseTagCtxt :: Lex a Token-lexCloseTagCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '%':'>':_ -> do discard 2- popExtContextL "lexCloseTagCtxt"- return XCodeTagClose- '>':_ -> do discard 1- popExtContextL "lexCloseTagCtxt"- return XStdTagClose- _ -> lexStdToken--lexTagCtxt :: Lex a Token-lexTagCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '/':'>':_ -> do discard 2- popExtContextL "lexTagCtxt: Empty tag"- return XEmptyTagClose- '>':_ -> do discard 1- popExtContextL "lexTagCtxt: Standard tag"- pushExtContextL ChildCtxt- return XStdTagClose- _ -> lexStdToken--lexHarpToken :: Lex a Token-lexHarpToken = do- -- if we ever end up here, then RegularPatterns must be on.- s <- getInput- case s of- ']':'>':_ -> do discard 2- popExtContextL "lexHarpToken"- return XRPatClose- _ -> lexStdToken--lexStdToken :: Lex a Token-lexStdToken = do- s <- getInput- exts <- getExtensionsL- case s of- [] -> return EOF-- '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do- discard 2- (n, str) <- lexOctal- return (IntTok (n, '0':c:str))- | toLower c == 'x' && isHexDigit d -> do- discard 2- (n, str) <- lexHexadecimal- return (IntTok (n, '0':c:str))-- -- implicit parameters- '?':c:_ | isLower c && ImplicitParams `elem` exts -> do- discard 1- id <- lexWhile isIdent- return $ IDupVarId id-- '%':c:_ | isLower c && ImplicitParams `elem` exts -> do- discard 1- id <- lexWhile isIdent- return $ ILinVarId id- -- end implicit parameters-- -- harp- '(':'|':c:_ | isHSymbol c -> discard 1 >> return LeftParen- '(':'|':_ | RegularPatterns `elem` exts ->- do discard 2- return RPGuardOpen- '|':')':_ | RegularPatterns `elem` exts ->- do discard 2- return RPGuardClose- {- This is handled by the reserved_ops above.- '@':':':_ | RegularPatterns `elem` exts ->- do discard 2- return RPCAt -}-- -- template haskell- '[':'|':_ | TemplateHaskell `elem` exts -> do- discard 2- return $ THExpQuote-- '[':c:'|':_ | c == 'e' && TemplateHaskell `elem` exts -> do- discard 3- return $ THExpQuote- | c == 'p' && TemplateHaskell `elem` exts -> do- discard 3- return THPatQuote- | c == 'd' && TemplateHaskell `elem` exts -> do- discard 3- return THDecQuote- | c == 't' && TemplateHaskell `elem` exts -> do- discard 3- return THTypQuote- '[':'$':c:_ | isLower c && QuasiQuotes `elem` exts ->- discard 2 >> lexQuasiQuote-- '|':']':_ | TemplateHaskell `elem` exts -> do- discard 2- return THCloseQuote-- '$':c:_ | isLower c && TemplateHaskell `elem` exts -> do- discard 1- id <- lexWhile isIdent- return $ THIdEscape id- | c == '(' && TemplateHaskell `elem` exts -> do- discard 2- return THParenEscape- -- end template haskell-- -- hsx- '<':'%':c:_ | XmlSyntax `elem` exts -> do - case c of- '>' -> do discard 3- pushExtContextL ChildCtxt- return XChildTagOpen- _ -> do discard 2- pushExtContextL CodeTagCtxt- return XCodeTagOpen- '<':c:_ | isAlpha c && XmlSyntax `elem` exts -> do- discard 1- pushExtContextL TagCtxt- return XStdTagOpen- -- end hsx-- '(':'#':_ | UnboxedTuples `elem` exts -> do discard 2 >> return LeftHashParen-- '#':')':_ | UnboxedTuples `elem` exts -> do discard 2 >> return RightHashParen-- '{':'|':_ | Generics `elem` exts -> do discard 2 >> return LeftCurlyBar-- '|':'}':_ | Generics `elem` exts -> do discard 2 >> return RightCurlyBar-- -- pragmas-- '{':'-':'#':_ -> do discard 3 >> lexPragmaStart-- '#':'-':'}':_ -> do discard 3 >> return PragmaEnd-- c:_ | isDigit c -> lexDecimalOrFloat-- | isUpper c -> lexConIdOrQual ""-- | isLower c || c == '_' -> do- idents <- lexIdents- case idents of- [ident] -> case lookup ident (reserved_ids ++ special_varids) of- Just (keyword, scheme) -> do- -- check if an extension keyword is enabled- if isEnabled scheme exts- then flagKW keyword >> return keyword- else return $ VarId ident- Nothing -> return $ VarId ident- _ -> return $ DVarId idents-- | isHSymbol c -> do- sym <- lexWhile isHSymbol- return $ case lookup sym (reserved_ops ++ special_varops) of- Just (t , scheme) ->- -- check if an extension op is enabled- if isEnabled scheme exts- then t- else case c of- ':' -> ConSym sym- _ -> VarSym sym- Nothing -> case c of- ':' -> ConSym sym- _ -> VarSym sym-- | otherwise -> do- discard 1- case c of-- -- First the special symbols- '(' -> return LeftParen- ')' -> return RightParen- ',' -> return Comma- ';' -> return SemiColon- '[' -> return LeftSquare- ']' -> return RightSquare- '`' -> return BackQuote- '{' -> do- pushContextL NoLayout- return LeftCurly- '}' -> do- popContextL "lexStdToken"- return RightCurly-- '\'' -> lexCharacter- '"' -> lexString-- _ -> fail ("Illegal character \'" ++ show c ++ "\'\n")-- where lexIdents :: Lex a [String]- lexIdents = do- ident <- lexWhile isIdent- s <- getInput- exts <- getExtensionsL- case s of- -- This is the only way we can get more than one ident in the list- -- and it requires XmlSyntax to be on.- '-':c:_ | XmlSyntax `elem` exts && isAlpha c -> do- discard 1- idents <- lexIdents- return $ ident : idents- '#':_ | MagicHash `elem` exts -> do- discard 1- return [ident ++ "#"]- _ -> return [ident]-- lexQuasiQuote :: Lex a Token- lexQuasiQuote = do- -- We've seen and dropped [$ already- ident <- lexWhile isIdent- matchChar '|' "Malformed quasi-quote quoter"- body <- lexQQBody- return $ THQuasiQuote (ident, body)-- lexQQBody :: Lex a String- lexQQBody = do- s <- getInput- case s of- '\\':']':_ -> do discard 2- str <- lexQQBody- return (']':str)- '\\':'|':_ -> do discard 2- str <- lexQQBody- return ('|':str)- '|':']':_ -> discard 2 >> return ""- '|':_ -> do discard 1- str <- lexQQBody- return ('|':str)- ']':_ -> do discard 1- str <- lexQQBody- return (']':str)- '\\':_ -> do discard 1- str <- lexQQBody- return ('\\':str)- '\n':_ -> do lexNewline- str <- lexQQBody- return ('\n':str)- [] -> fail "Unexpected end of input while lexing quasi-quoter"- _ -> do str <- lexWhile (not . (`elem` "\\|\n"))- rest <- lexQQBody- return (str++rest)--lexPragmaStart :: Lex a Token-lexPragmaStart = do- lexWhile isSpace- pr <- lexWhile isAlphaNum- case lookup (map toLower pr) pragmas of- Just (INLINE True) -> do- s <- getInput- case map toLower s of- '_':'c':'o':'n':'l':'i':'k':'e':_ -> do- discard 8- return $ INLINE_CONLIKE- _ -> return $ INLINE True- Just SPECIALISE -> do- s <- getInput- case dropWhile isSpace $ map toLower s of- 'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 6- return $ SPECIALISE_INLINE True- 'n':'o':'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 8- return $ SPECIALISE_INLINE False- 'n':'o':'t':'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 9- return $ SPECIALISE_INLINE False- _ -> return SPECIALISE-- Just (OPTIONS _) -> do -- see, I promised we'd mask out the 'undefined'- s <- getInput- case s of- '_':_ -> do- discard 1- com <- lexWhile isIdent- rest <- lexRawPragma- return $ OPTIONS (Just com, rest)- x:_ | isSpace x -> do- rest <- lexRawPragma- return $ OPTIONS (Nothing, rest)- _ -> fail "Malformed Options pragma"-{- Just (CFILES _) -> do- rest <- lexRawPragma- return $ CFILES rest- Just (INCLUDE _) -> do- rest <- lexRawPragma- return $ INCLUDE rest -}- Just p -> return p-- _ -> fail "Internal error: Unrecognised recognised pragma"- -- do rawStr <- lexRawPragma- -- return $ PragmaUnknown (pr, rawStr) -- no support for unrecognized pragmas, treat as comment- -- discard 3 -- #-}- -- topLexer -- we just discard it as a comment for now and restart -}--lexRawPragma :: Lex a String-lexRawPragma = do- rpr <- lexRawPragmaAux- return $ dropWhile isSpace rpr- where lexRawPragmaAux = do- rpr <- lexWhile (/='#')- s <- getInput- case s of- '#':'-':'}':_ -> return rpr- "" -> fail "End-of-file inside pragma"- _ -> do- discard 1- rpr' <- lexRawPragma- return $ rpr ++ '#':rpr'--lexDecimalOrFloat :: Lex a Token-lexDecimalOrFloat = do- ds <- lexWhile isDigit- rest <- getInput- exts <- getExtensionsL- case rest of- ('.':d:_) | isDigit d -> do- discard 1- frac <- lexWhile isDigit- let num = parseInteger 10 (ds ++ frac)- decimals = toInteger (length frac)- (exponent, estr) <- do- rest2 <- getInput- case rest2 of- 'e':_ -> lexExponent- 'E':_ -> lexExponent- _ -> return (0,"")- con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)- return $ con ((num%1) * 10^^(exponent - decimals), ds ++ '.':frac ++ estr)- e:_ | toLower e == 'e' -> do- (exponent, estr) <- lexExponent- con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)- return $ con ((parseInteger 10 ds%1) * 10^^exponent, ds ++ estr)- '#':'#':_ | MagicHash `elem` exts -> discard 2 >> return (WordTokHash (parseInteger 10 ds, ds))- '#':_ | MagicHash `elem` exts -> discard 1 >> return (IntTokHash (parseInteger 10 ds, ds))- _ -> return (IntTok (parseInteger 10 ds, ds))-- where- lexExponent :: Lex a (Integer, String)- lexExponent = do- (e:r) <- getInput- discard 1 -- 'e' or 'E'- case r of- '+':d:_ | isDigit d -> do- discard 1- (n, str) <- lexDecimal- return (n, e:'+':str)- '-':d:_ | isDigit d -> do- discard 1- (n, str) <- lexDecimal- return (negate n, e:'-':str)- d:_ | isDigit d -> lexDecimal >>= \(n,str) -> return (n, e:str)- _ -> fail "Float with missing exponent"--lexHash :: (b -> Token) -> (b -> Token) -> Either String (b -> Token) -> Lex a (b -> Token)-lexHash a b c = do- exts <- getExtensionsL- if MagicHash `elem` exts- then do- r <- getInput- case r of- '#':'#':_ -> case c of- Right c -> discard 2 >> return c- Left s -> fail s- '#':_ -> discard 1 >> return b- _ -> return a- else return a--lexConIdOrQual :: String -> Lex a Token-lexConIdOrQual qual = do- con <- lexWhile isIdent- let conid | null qual = ConId con- | otherwise = QConId (qual,con)- qual' | null qual = con- | otherwise = qual ++ '.':con- just_a_conid <- alternative (return conid)- rest <- getInput- exts <- getExtensionsL- case rest of- '.':c:_- | isLower c || c == '_' -> do -- qualified varid?- discard 1- ident <- lexWhile isIdent- s <- getInput- exts <- getExtensionsL- ident' <- case s of- '#':_ | MagicHash `elem` exts -> discard 1 >> return (ident ++ "#")- _ -> return ident- case lookup ident' reserved_ids of- -- cannot qualify a reserved word- Just (_,scheme) | isEnabled scheme exts -> just_a_conid- _ -> return (QVarId (qual', ident'))-- | isUpper c -> do -- qualified conid?- discard 1- lexConIdOrQual qual'-- | isHSymbol c -> do -- qualified symbol?- discard 1- sym <- lexWhile isHSymbol- exts <- getExtensionsL- case lookup sym reserved_ops of- -- cannot qualify a reserved operator- Just (_,scheme) | isEnabled scheme exts -> just_a_conid- _ -> return $ case c of- ':' -> QConSym (qual', sym)- _ -> QVarSym (qual', sym)-- '#':c:_- | not (isHSymbol c) && not (isIdent c) && MagicHash `elem` exts -> do- discard 1- case conid of- ConId con -> return $ ConId $ con ++ "#"- QConId (q,con) -> return $ QConId (q,con ++ "#")- _ -> return conid -- not a qualified thing--lexCharacter :: Lex a Token-lexCharacter = do -- We need to keep track of not only character constants but also TH 'x and ''T- -- We've seen ' so far- s <- getInput- exts <- getExtensionsL- case s of- '\'':_ | TemplateHaskell `elem` exts -> discard 1 >> return THTyQuote- '\\':_ -> do- (c,raw) <- lexEscape- matchQuote- con <- lexHash Character CharacterHash- (Left "Double hash not available for character literals")- return (con (c, '\\':raw))- c:'\'':_ -> do- discard 2- con <- lexHash Character CharacterHash- (Left "Double hash not available for character literals")- return (con (c, [c]))- _ | TemplateHaskell `elem` exts -> return THVarQuote- _ -> fail "Improper character constant or misplaced \'"-- where matchQuote = matchChar '\'' "Improperly terminated character constant"---lexString :: Lex a Token-lexString = loop ("","")- where- loop (s,raw) = do- r <- getInput- exts <- getExtensionsL- case r of- '\\':'&':_ -> do- discard 2- loop (s, '&':'\\':raw)- '\\':c:_ | isSpace c -> do- discard 1- wcs <- lexWhiteChars- matchChar '\\' "Illegal character in string gap"- loop (s, '\\':reverse wcs ++ '\\':raw)- | otherwise -> do- (ce, str) <- lexEscape- loop (ce:s, reverse str ++ '\\':raw)- '"':'#':_ | MagicHash `elem` exts -> do- discard 2- return (StringHash (reverse s, reverse raw))- '"':_ -> do- discard 1- return (StringTok (reverse s, reverse raw))- c:_ -> do- discard 1- loop (c:s, c:raw)- [] -> fail "Improperly terminated string"-- lexWhiteChars :: Lex a String- lexWhiteChars = do- s <- getInput- case s of- '\n':_ -> do- lexNewline- wcs <- lexWhiteChars- return $ '\n':wcs- '\t':_ -> do- lexTab- wcs <- lexWhiteChars- return $ '\t':wcs- c:_ | isSpace c -> do- discard 1- wcs <- lexWhiteChars- return $ c:wcs- _ -> return ""--lexEscape :: Lex a (Char, String)-lexEscape = do- discard 1- r <- getInput- case r of---- Production charesc from section B.2 (Note: \& is handled by caller)-- 'a':_ -> discard 1 >> return ('\a', "a")- 'b':_ -> discard 1 >> return ('\b', "b")- 'f':_ -> discard 1 >> return ('\f', "f")- 'n':_ -> discard 1 >> return ('\n', "n")- 'r':_ -> discard 1 >> return ('\r', "r")- 't':_ -> discard 1 >> return ('\t', "t")- 'v':_ -> discard 1 >> return ('\v', "v")- '\\':_ -> discard 1 >> return ('\\', "\\")- '"':_ -> discard 1 >> return ('\"', "\"")- '\'':_ -> discard 1 >> return ('\'', "\'")---- Production ascii from section B.2-- '^':c:_ -> discard 2 >> cntrl c- 'N':'U':'L':_ -> discard 3 >> return ('\NUL', "NUL")- 'S':'O':'H':_ -> discard 3 >> return ('\SOH', "SOH")- 'S':'T':'X':_ -> discard 3 >> return ('\STX', "STX")- 'E':'T':'X':_ -> discard 3 >> return ('\ETX', "ETX")- 'E':'O':'T':_ -> discard 3 >> return ('\EOT', "EOT")- 'E':'N':'Q':_ -> discard 3 >> return ('\ENQ', "ENQ")- 'A':'C':'K':_ -> discard 3 >> return ('\ACK', "ACK")- 'B':'E':'L':_ -> discard 3 >> return ('\BEL', "BEL")- 'B':'S':_ -> discard 2 >> return ('\BS', "BS")- 'H':'T':_ -> discard 2 >> return ('\HT', "HT")- 'L':'F':_ -> discard 2 >> return ('\LF', "LF")- 'V':'T':_ -> discard 2 >> return ('\VT', "VT")- 'F':'F':_ -> discard 2 >> return ('\FF', "FF")- 'C':'R':_ -> discard 2 >> return ('\CR', "CR")- 'S':'O':_ -> discard 2 >> return ('\SO', "SO")- 'S':'I':_ -> discard 2 >> return ('\SI', "SI")- 'D':'L':'E':_ -> discard 3 >> return ('\DLE', "DLE")- 'D':'C':'1':_ -> discard 3 >> return ('\DC1', "DC1")- 'D':'C':'2':_ -> discard 3 >> return ('\DC2', "DC2")- 'D':'C':'3':_ -> discard 3 >> return ('\DC3', "DC3")- 'D':'C':'4':_ -> discard 3 >> return ('\DC4', "DC4")- 'N':'A':'K':_ -> discard 3 >> return ('\NAK', "NAK")- 'S':'Y':'N':_ -> discard 3 >> return ('\SYN', "SYN")- 'E':'T':'B':_ -> discard 3 >> return ('\ETB', "ETB")- 'C':'A':'N':_ -> discard 3 >> return ('\CAN', "CAN")- 'E':'M':_ -> discard 2 >> return ('\EM', "EM")- 'S':'U':'B':_ -> discard 3 >> return ('\SUB', "SUB")- 'E':'S':'C':_ -> discard 3 >> return ('\ESC', "ESC")- 'F':'S':_ -> discard 2 >> return ('\FS', "FS")- 'G':'S':_ -> discard 2 >> return ('\GS', "GS")- 'R':'S':_ -> discard 2 >> return ('\RS', "RS")- 'U':'S':_ -> discard 2 >> return ('\US', "US")- 'S':'P':_ -> discard 2 >> return ('\SP', "SP")- 'D':'E':'L':_ -> discard 3 >> return ('\DEL', "DEL")---- Escaped numbers-- 'o':c:_ | isOctDigit c -> do- discard 1- (n, raw) <- lexOctal- n <- checkChar n- return (n, 'o':raw)- 'x':c:_ | isHexDigit c -> do- discard 1- (n, raw) <- lexHexadecimal- n <- checkChar n- return (n, 'x':raw)- c:_ | isDigit c -> do- (n, raw) <- lexDecimal- n <- checkChar n- return (n, raw)-- _ -> fail "Illegal escape sequence"-- where- checkChar n | n <= 0x01FFFF = return (chr (fromInteger n))- checkChar _ = fail "Character constant out of range"---- Production cntrl from section B.2-- cntrl :: Char -> Lex a (Char, String)- cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'), '^':c:[])- cntrl _ = fail "Illegal control character"---- assumes at least one octal digit-lexOctal :: Lex a (Integer, String)-lexOctal = do- ds <- lexWhile isOctDigit- return (parseInteger 8 ds, ds)---- assumes at least one hexadecimal digit-lexHexadecimal :: Lex a (Integer, String)-lexHexadecimal = do- ds <- lexWhile isHexDigit- return (parseInteger 16 ds, ds)---- assumes at least one decimal digit-lexDecimal :: Lex a (Integer, String)-lexDecimal = do- ds <- lexWhile isDigit- return (parseInteger 10 ds, ds)---- Stolen from Hugs's Prelude-parseInteger :: Integer -> String -> Integer-parseInteger radix ds =- foldl1 (\n d -> n * radix + d) (map (toInteger . digitToInt) ds)--flagKW :: Token -> Lex a ()-flagKW t = when (t `elem` [KW_Do, KW_MDo]) flagDo----------------------------------------------------------------------- "Pretty" printing for tokens--showToken :: Token -> String-showToken t = case t of- VarId s -> s- QVarId (q,s) -> q ++ '.':s- IDupVarId s -> '?':s- ILinVarId s -> '%':s- ConId s -> s- QConId (q,s) -> q ++ '.':s- DVarId ss -> concat $ intersperse "-" ss- VarSym s -> s- ConSym s -> s- QVarSym (q,s) -> q ++ '.':s- QConSym (q,s) -> q ++ '.':s- IntTok (_, s) -> s- FloatTok (_, s) -> s- Character (_, s) -> '\'':s ++ "'"- StringTok (_, s) -> '"':s ++ "\""- IntTokHash (_, s) -> s ++ "#"- WordTokHash (_, s) -> s ++ "##"- FloatTokHash (_, s) -> s ++ "#"- DoubleTokHash (_, s) -> s ++ "##"- CharacterHash (_, s) -> '\'':s ++ "'#"- StringHash (_, s) -> '"':s ++ "\"#"- LeftParen -> "("- RightParen -> ")"- LeftHashParen -> "(#"- RightHashParen -> "#)"- LeftCurlyBar -> "{|"- RightCurlyBar -> "|}"- SemiColon -> ";"- LeftCurly -> "{"- RightCurly -> "}"- VRightCurly -> "virtual }"- LeftSquare -> "["- RightSquare -> "]"- Comma -> ","- Underscore -> "_"- BackQuote -> "`"- Dot -> "."- DotDot -> ".."- Colon -> ":"- DoubleColon -> "::"- Equals -> "="- Backslash -> "\\"- Bar -> "|"- LeftArrow -> "<-"- RightArrow -> "->"- At -> "@"- Tilde -> "~"- DoubleArrow -> "=>"- Minus -> "-"- Exclamation -> "!"- Star -> "*"- LeftArrowTail -> ">-"- RightArrowTail -> "-<"- LeftDblArrowTail -> ">>-"- RightDblArrowTail -> "-<<"- THExpQuote -> "[|"- THPatQuote -> "[p|"- THDecQuote -> "[d|"- THTypQuote -> "[t|"- THCloseQuote -> "|]"- THIdEscape s -> '$':s- THParenEscape -> "$("- THVarQuote -> "'"- THTyQuote -> "''"- THQuasiQuote (n,q) -> "[$" ++ n ++ "|" ++ q ++ "]"- RPGuardOpen -> "(|"- RPGuardClose -> "|)"- RPCAt -> "@:"- XCodeTagOpen -> "<%"- XCodeTagClose -> "%>"- XStdTagOpen -> "<"- XStdTagClose -> ">"- XCloseTagOpen -> "</"- XEmptyTagClose -> "/>"- XPCDATA s -> "PCDATA " ++ s- XRPatOpen -> "<["- XRPatClose -> "]>"- PragmaEnd -> "#-}"- RULES -> "{-# RULES"- INLINE b -> "{-# " ++ if b then "INLINE" else "NOINLINE"- INLINE_CONLIKE -> "{-# " ++ "INLINE_CONLIKE"- SPECIALISE -> "{-# SPECIALISE"- SPECIALISE_INLINE b -> "{-# SPECIALISE " ++ if b then "INLINE" else "NOINLINE"- SOURCE -> "{-# SOURCE"- DEPRECATED -> "{-# DEPRECATED"- WARNING -> "{-# WARNING"- SCC -> "{-# SCC"- GENERATED -> "{-# GENERATED"- CORE -> "{-# CORE"- UNPACK -> "{-# UNPACK"- OPTIONS (mt,s) -> "{-# OPTIONS" ++ maybe "" (':':) mt ++ " ..."--- CFILES s -> "{-# CFILES ..."--- INCLUDE s -> "{-# INCLUDE ..."- LANGUAGE -> "{-# LANGUAGE"- ANN -> "{-# ANN"- KW_As -> "as"- KW_By -> "by"- KW_Case -> "case"- KW_Class -> "class"- KW_Data -> "data"- KW_Default -> "default"- KW_Deriving -> "deriving"- KW_Do -> "do"- KW_MDo -> "mdo"- KW_Else -> "else"- KW_Family -> "family"- KW_Forall -> "forall"- KW_Group -> "group"- KW_Hiding -> "hiding"- KW_If -> "if"- KW_Import -> "import"- KW_In -> "in"- KW_Infix -> "infix"- KW_InfixL -> "infixl"- KW_InfixR -> "infixr"- KW_Instance -> "instance"- KW_Let -> "let"- KW_Module -> "module"- KW_NewType -> "newtype"- KW_Of -> "of"- KW_Proc -> "proc"- KW_Rec -> "rec"- KW_Then -> "then"- KW_Type -> "type"- KW_Using -> "using"- KW_Where -> "where"- KW_Qualified -> "qualified"- KW_Foreign -> "foreign"- KW_Export -> "export"- KW_Safe -> "safe"- KW_Unsafe -> "unsafe"- KW_Threadsafe -> "threadsafe"- KW_StdCall -> "stdcall"- KW_CCall -> "ccall"-- EOF -> "EOF"+{-# LANGUAGE Safe #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Lexer+-- Copyright : (c) The GHC Team, 1997-2000+-- (c) Niklas Broberg, 2004-2012+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, niklas.broberg@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Lexer for Haskell with extensions.+--+-----------------------------------------------------------------------------++module Language.Haskell.Exts.Lexer+ (+ lexTokenStream, lexTokenStreamWithMode,++ Token(..), Loc(..),++ showToken++ ) where++import Language.Haskell.Exts.InternalLexer+import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.SrcLoc++-- | Lex a string into a list of Haskell 2010 source tokens.+lexTokenStream :: String -> ParseResult [Loc Token]+lexTokenStream = lexTokenStreamWithMode defaultParseMode++-- | Lex a string into a list of Haskell source tokens, using an explicit mode.+lexTokenStreamWithMode :: ParseMode -> String -> ParseResult [Loc Token]+lexTokenStreamWithMode mode = runParserWithMode mode lexIt+ where lexIt :: P [Loc Token]+ lexIt = runL go return+ go :: Lex [Loc Token] [Loc Token]+ go = do+ ltok <- topLexer+ case ltok of+ Loc _ EOF -> return []+ _ -> do ts <- go+ return (ltok:ts)
src/Language/Haskell/Exts/ParseMonad.hs view
@@ -1,7 +1,9 @@+{-# LANGUAGE CPP, Safe #-} {-# OPTIONS_HADDOCK hide #-}+ ----------------------------------------------------------------------------- -- |--- Module : Language.Haskell.Exts.Annotated.ParseMonad+-- Module : Language.Haskell.Exts.ParseMonad -- Copyright : Niklas Broberg (c) 2004-2009, -- Original (c) The GHC Team, 1997-2000 -- License : BSD-style (see the file libraries/base/LICENSE)@@ -15,16 +17,20 @@ ----------------------------------------------------------------------------- module Language.Haskell.Exts.ParseMonad(+ -- * Generic Parsing+ Parseable(..), -- * Parsing P, ParseResult(..), atSrcLoc, LexContext(..), ParseMode(..), defaultParseMode, fromParseResult, runParserWithMode, runParserWithModeComments, runParser, getSrcLoc, pushCurrentContext, popContext,- getExtensions,+ getExtensions, getIgnoreFunctionArity, -- * Lexing- Lex(runL), getInput, discard, lexNewline, lexTab, lexWhile,+ Lex(runL), getInput, discard, getLastChar, lexNewline,+ lexTab, lexWhile, lexWhile_, alternative, checkBOL, setBOL, startToken, getOffside,- pushContextL, popContextL, getExtensionsL, pushComment, + pushContextL, popContextL, getExtensionsL, addExtensionL,+ saveExtensionsL, restoreExtensionsL, pushComment, getSrcLocL, setSrcLineL, ignoreLinePragmasL, setLineFilenameL, -- * Harp/Hsx ExtContext(..),@@ -33,23 +39,48 @@ getModuleName ) where -import Language.Haskell.Exts.SrcLoc(SrcLoc(..))+import Language.Haskell.Exts.SrcLoc (SrcLoc(..), noLoc) import Language.Haskell.Exts.Fixity (Fixity, preludeFixities) import Language.Haskell.Exts.Comments-import Language.Haskell.Exts.Extension (Extension, impliesExts)+import Language.Haskell.Exts.Extension -- (Extension, impliesExts, haskell2010) -import Data.List ( intersperse )+import Data.List (intercalate) import Control.Applicative-import Control.Monad (when)-import Data.Monoid+import Control.Monad (when, liftM, ap)+import qualified Control.Monad.Fail as Fail+import Data.Monoid hiding ((<>))+#if !MIN_VERSION_base(4,13,0)+import Data.Semigroup (Semigroup(..))+#endif+-- To avoid import warnings for Control.Applicative, Data.Monoid, and Data.Semigroup+import Prelude +-- | Class providing function for parsing at many different types.+--+-- Note that for convenience of implementation, the default methods have+-- definitions equivalent to 'undefined'. The minimal definition is all of+-- the visible methods.+class Parseable ast where+ -- | Parse a string with default mode.+ parse :: String -> ParseResult ast+ parse = parseWithMode defaultParseMode+ -- | Parse a string with an explicit 'ParseMode'.+ parseWithMode :: ParseMode -> String -> ParseResult ast+ parseWithMode mode = runParserWithMode mode . parser $ fixities mode+ -- | Parse a string with an explicit 'ParseMode', returning all comments along+ -- with the AST.+ parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment])+ parseWithComments mode = runParserWithModeComments mode . parser $ fixities mode+ -- | Internal parser, used to provide default definitions for the others.+ parser :: Maybe [Fixity] -> P ast+ -- | The result of a parse. data ParseResult a = ParseOk a -- ^ The parse succeeded, yielding a value. | ParseFailed SrcLoc String -- ^ The parse failed at the specified -- source location, with an error message.- deriving Show+ deriving (Show, Ord, Eq) -- | Retrieve the result of a successful parse, throwing an -- error if the parse is actually not successful.@@ -60,7 +91,7 @@ instance Functor ParseResult where fmap f (ParseOk x) = ParseOk $ f x- fmap f (ParseFailed loc msg) = ParseFailed loc msg+ fmap _ (ParseFailed loc msg) = ParseFailed loc msg instance Applicative ParseResult where pure = ParseOk@@ -68,16 +99,21 @@ ParseFailed loc msg <*> _ = ParseFailed loc msg instance Monad ParseResult where- return = ParseOk+#if !MIN_VERSION_base(4,13,0)+ fail = Fail.fail+#endif ParseOk x >>= f = f x ParseFailed loc msg >>= _ = ParseFailed loc msg+instance Fail.MonadFail ParseResult where+ fail = ParseFailed noLoc -instance Monoid m => Monoid (ParseResult m) where- mempty = ParseOk mempty- ParseOk x `mappend` ParseOk y = ParseOk $ x `mappend` y- ParseOk x `mappend` err = err- err `mappend` _ = err -- left-biased+instance Semigroup m => Semigroup (ParseResult m) where+ ParseOk x <> ParseOk y = ParseOk $ x <> y+ ParseOk _ <> err = err+ err <> _ = err -- left-biased +instance ( Monoid m , Semigroup m) => Monoid (ParseResult m) where+ mempty = ParseOk mempty -- internal version data ParseStatus a = Ok ParseState a | Failed SrcLoc String@@ -94,11 +130,11 @@ -- (True,_) = We're in a do context. -- (_, True)= Next token must be a virtual closing brace. -type ParseState = ([LexContext],[ExtContext],CtxtFlag,[Comment])+type ParseState = ([LexContext],[[KnownExtension]],[ExtContext],CtxtFlag,[Comment]) indentOfParseState :: ParseState -> Int-indentOfParseState (Layout n:_,_,_,_) = n-indentOfParseState _ = 0+indentOfParseState (Layout n:_,_,_,_,_) = n+indentOfParseState _ = 0 -- | Static parameters governing a parse. -- Note that the various parse functions in "Language.Haskell.Exts.Parser"@@ -110,6 +146,8 @@ data ParseMode = ParseMode { -- | original name of the file being parsed parseFilename :: String,+ -- | base language (e.g. Haskell98, Haskell2010)+ baseLanguage :: Language, -- | list of extensions enabled for parsing extensions :: [Extension], -- | if 'True', the parser won't care about further extensions@@ -119,7 +157,9 @@ -- from LINE pragmas in source files ignoreLinePragmas :: Bool, -- | list of fixities to be aware of- fixities :: Maybe [Fixity]+ fixities :: Maybe [Fixity],+ -- | Checks whether functions have a consistent arity+ ignoreFunctionArity :: Bool } -- | Default parameters for a parse.@@ -130,21 +170,41 @@ defaultParseMode :: ParseMode defaultParseMode = ParseMode { parseFilename = "<unknown>.hs",+ baseLanguage = Haskell2010, extensions = [], ignoreLanguagePragmas = False, ignoreLinePragmas = True,- fixities = Just preludeFixities+ fixities = Just preludeFixities,+ ignoreFunctionArity = False } +-- Version of ParseMode used internally,+-- where the language and extensions have+-- been expanded+data InternalParseMode = IParseMode {+ iParseFilename :: String,+ iExtensions :: [KnownExtension],+ -- iIgnoreLanguagePragmas :: Bool,+ iIgnoreLinePragmas :: Bool,+ iIgnoreFunctionArity :: Bool+ -- iFixities :: Maybe [Fixity]+ }++toInternalParseMode :: ParseMode -> InternalParseMode+toInternalParseMode (ParseMode pf bLang exts _ilang iline _fx farity) =+ IParseMode pf (toExtensionList bLang exts) {-_ilang -} iline {- _fx -} farity++ -- | Monad for parsing newtype P a = P { runP ::- String -- input string- -> Int -- current column- -> Int -- current line- -> SrcLoc -- location of last token read- -> ParseState -- layout info.- -> ParseMode -- parse parameters+ String -- input string+ -> Int -- current column+ -> Int -- current line+ -> SrcLoc -- location of last token read+ -> Char -- Last token read used for lexing TypeApplication UGH+ -> ParseState -- layout info.+ -> InternalParseMode -- parse parameters -> ParseStatus a } @@ -158,40 +218,54 @@ srcColumn = 1 } -}-runParserWithMode mode pm s = fmap fst $ runParserWithModeComments mode pm s+runParserWithMode mode pm = fmap fst . runParserWithModeComments mode pm runParser :: P a -> String -> ParseResult a runParser = runParserWithMode defaultParseMode runParserWithModeComments :: ParseMode -> P a -> String -> ParseResult (a, [Comment])-runParserWithModeComments mode (P m) s = case m s 0 1 start ([],[],(False,False),[]) (allExts mode) of- Ok (_,_,_,cs) a -> ParseOk (a, reverse cs)- Failed loc msg -> ParseFailed loc msg+runParserWithModeComments mode = let mode2 = toInternalParseMode mode in \(P m) s ->+ case m s 0 1 start '\n' ([],[],[],(False,False),[]) mode2 of+ Ok (_,_,_,_,cs) a -> ParseOk (a, reverse cs)+ Failed loc msg -> ParseFailed loc msg where start = SrcLoc { srcFilename = parseFilename mode, srcLine = 1, srcColumn = 1 }- allExts mode@(ParseMode {extensions = es}) = mode { extensions = impliesExts es }+ -- allExts mode@(ParseMode {extensions = es}) = mode { extensions = impliesExts es } + -- allExts mode = let imode = to++instance Functor P where+ fmap = liftM++instance Applicative P where+ pure a = P $ \_i _x _y _l _ch s _m -> Ok s a+ (<*>) = ap+ instance Monad P where- return a = P $ \_i _x _y _l s _m -> Ok s a- P m >>= k = P $ \i x y l s mode ->- case m i x y l s mode of+ P m >>= k = P $ \i x y l ch s mode ->+ case m i x y l ch s mode of Failed loc msg -> Failed loc msg- Ok s' a -> runP (k a) i x y l s' mode- fail s = P $ \_r _col _line loc _stk _m -> Failed loc s+ Ok s' a -> runP (k a) i x y l ch s' mode+#if !MIN_VERSION_base(4,13,0)+ fail = Fail.fail+#endif +instance Fail.MonadFail P where+ fail s = P $ \_r _col _line loc _ _stk _m -> Failed loc s+ atSrcLoc :: P a -> SrcLoc -> P a-P m `atSrcLoc` loc = P $ \i x y _l -> m i x y loc+P m `atSrcLoc` loc = P $ \i x y _l ch -> m i x y loc ch getSrcLoc :: P SrcLoc-getSrcLoc = P $ \_i _x _y l s _m -> Ok s l+getSrcLoc = P $ \_i _x _y l _ s _m -> Ok s l getModuleName :: P String-getModuleName = P $ \_i _x _y _l s m ->- let fn = parseFilename m- mn = concat $ intersperse "." $ splitPath fn+getModuleName = P $ \_i _x _y _l _ch s m ->+ let fn = iParseFilename m+ mn = intercalate "." $ splitPath fn splitPath :: String -> [String] splitPath "" = []@@ -216,25 +290,25 @@ dob <- pullDoStatus let loc = srcColumn lc when (dob && loc < indent- || not dob && loc <= indent) $ pushCtxtFlag+ || not dob && loc <= indent) pushCtxtFlag pushContext (Layout loc) currentIndent :: P Int-currentIndent = P $ \_r _x _y loc stk _mode -> Ok stk (indentOfParseState stk)+currentIndent = P $ \_r _x _y _ _ stk _mode -> Ok stk (indentOfParseState stk) pushContext :: LexContext -> P () pushContext ctxt = --trace ("pushing lexical scope: " ++ show ctxt ++"\n") $- P $ \_i _x _y _l (s, e, p, c) _m -> Ok (ctxt:s, e, p, c) ()+ P $ \_i _x _y _l _ (s, exts, e, p, c) _m -> Ok (ctxt:s, exts, e, p, c) () popContext :: P ()-popContext = P $ \_i _x _y _l stk _m ->+popContext = P $ \_i _x _y loc _ stk _m -> case stk of- (_:s, e, p, c) -> --trace ("popping lexical scope, context now "++show s ++ "\n") $- Ok (s, e, p, c) ()- ([],_,_,_) -> error "Internal error: empty context in popContext"-+ (_:s, exts, e, p, c) -> --trace ("popping lexical scope, context now "++show s ++ "\n") $+ Ok (s, exts, e, p, c) ()+ ([],_,_,_,_) -> Failed loc "Unexpected }" -- error "Internal error: empty context in popContext" +{- -- HaRP/Hsx pushExtContext :: ExtContext -> P () pushExtContext ctxt = P $ \_i _x _y _l (s, e, p, c) _m -> Ok (s, ctxt:e, p, c) ()@@ -245,33 +319,50 @@ (_:e') -> Ok (s, e', p, c) () [] -> error "Internal error: empty context in popExtContext"-+-} -- Extension-aware lexing/parsing-getExtensions :: P [Extension]-getExtensions = P $ \_i _x _y _l s m ->- Ok s $ extensions m+getExtensions :: P [KnownExtension]+getExtensions = P $ \_i _x _y _l _ s m ->+ Ok s $ iExtensions m pushCtxtFlag :: P () pushCtxtFlag =- P $ \_i _x _y _l (s, e, (d,c), cs) _m -> case c of- False -> Ok (s, e, (d,True), cs) ()+ P $ \_i _x _y _l _ (s, exts, e, (d,c), cs) _m -> case c of+ False -> Ok (s, exts, e, (d,True), cs) () _ -> error "Internal error: context flag already pushed" pullDoStatus :: P Bool-pullDoStatus = P $ \_i _x _y _l (s, e, (d,c), cs) _m -> Ok (s,e,(False,c),cs) d+pullDoStatus = P $ \_i _x _y _l _ (s, exts, e, (d,c), cs) _m -> Ok (s,exts,e,(False,c),cs) d +getIgnoreFunctionArity :: P Bool+getIgnoreFunctionArity = P $ \_i _x _y _l _ s m ->+ Ok s $ iIgnoreFunctionArity m +++ ---------------------------------------------------------------------------- -- Monad for lexical analysis: -- a continuation-passing version of the parsing monad newtype Lex r a = Lex { runL :: (a -> P r) -> P r } +instance Functor (Lex r) where+ fmap = liftM++instance Applicative (Lex r) where+ pure a = Lex $ \k -> k a+ (<*>) = ap+ instance Monad (Lex r) where- return a = Lex $ \k -> k a Lex v >>= f = Lex $ \k -> v (\a -> runL (f a) k) Lex v >> Lex w = Lex $ \k -> v (\_ -> w k)+#if !MIN_VERSION_base(4,13,0)+ fail = Fail.fail+#endif++instance Fail.MonadFail (Lex r) where fail s = Lex $ \_ -> fail s -- Operations on this monad@@ -282,12 +373,24 @@ -- | Discard some input characters (these must not include tabs or newlines). discard :: Int -> Lex r ()-discard n = Lex $ \cont -> P $ \r x -> runP (cont ()) (drop n r) (x+n)+discard n = Lex $ \cont -> P $ \r x y loc ch+ -> let (newCh:rest)= if n > 0 then drop (n-1) r else (ch:r)+ in runP (cont ()) rest (x+n) y loc newCh +-- | Get the last discarded character.+-- This is only used for type application.++getLastChar :: Lex r Char+getLastChar = Lex $ \cont -> P $ \r x y loc ch -> runP (cont ch) r x y loc ch++ -- | Discard the next character, which must be a newline. lexNewline :: Lex a ()-lexNewline = Lex $ \cont -> P $ \(_:r) _x y -> runP (cont ()) r 1 (y+1)+lexNewline = Lex $ \cont -> P $ \rs _x y loc ->+ case rs of+ (_:r) -> runP (cont ()) r 1 (y+1) loc+ [] -> \_ _ _ -> Failed loc "Lexer: expected newline." -- | Discard the next character, which must be a tab. @@ -298,15 +401,31 @@ nextTab x = x + (tAB_LENGTH - (x-1) `mod` tAB_LENGTH) tAB_LENGTH :: Int-tAB_LENGTH = 8 :: Int+tAB_LENGTH = 8 -- Consume and return the largest string of characters satisfying p lexWhile :: (Char -> Bool) -> Lex a String-lexWhile p = Lex $ \cont -> P $ \r x ->- let (cs,rest) = span p r in- runP (cont cs) rest (x + length cs)+lexWhile p = Lex $ \cont -> P $ \rss c l loc char ->+ case rss of+ [] -> runP (cont []) [] c l loc char+ (r:rs) ->+ let+ l' = case r of+ '\n' -> l + 1+ _ -> l+ c' = case r of+ '\n' -> 1+ _ -> c + 1+ in if p r+ then runP (runL ((r:) <$> lexWhile p) cont) rs c' l' loc r+ else runP (cont []) (r:rs) c l loc char +-- | lexWhile without the return value.+lexWhile_ :: (Char -> Bool) -> Lex a ()+lexWhile_ p = do _ <- lexWhile p+ return ()+ -- An alternative scan, to which we can return if subsequent scanning -- is unsuccessful. @@ -341,13 +460,13 @@ -- Set the loc to the current position startToken :: Lex a ()-startToken = Lex $ \cont -> P $ \s x y _ stk mode ->+startToken = Lex $ \cont -> P $ \s x y _ c stk mode -> let loc = SrcLoc {- srcFilename = parseFilename mode,+ srcFilename = iParseFilename mode, srcLine = y, srcColumn = x } in- runP (cont ()) s x y loc stk mode+ runP (cont ()) s x y loc c stk mode -- Current status with respect to the offside (layout) rule: -- LT: we are to the left of the current indent (if any)@@ -355,8 +474,8 @@ -- GT: we are to the right of the current indent, or not subject to layout getOffside :: Lex a Ordering-getOffside = Lex $ \cont -> P $ \r x y loc stk ->- runP (cont (compare x (indentOfParseState stk))) r x y loc stk+getOffside = Lex $ \cont -> P $ \r x y loc ch stk ->+ runP (cont (compare x (indentOfParseState stk))) r x y loc ch stk getSrcLocL :: Lex a SrcLoc getSrcLocL = Lex $ \cont -> P $ \i x y l ->@@ -367,62 +486,79 @@ runP (cont ()) i x y pushContextL :: LexContext -> Lex a ()-pushContextL ctxt = Lex $ \cont -> P $ \r x y loc (stk, e, pst, cs) ->- runP (cont ()) r x y loc (ctxt:stk, e, pst, cs)+pushContextL ctxt = Lex $ \cont -> P $ \r x y loc ch (stk, exts, e, pst, cs) ->+ runP (cont ()) r x y loc ch (ctxt:stk, exts, e, pst, cs) popContextL :: String -> Lex a ()-popContextL fn = Lex $ \cont -> P $ \r x y loc stk -> case stk of- (_:ctxt, e, pst, cs) -> runP (cont ()) r x y loc (ctxt, e, pst, cs)- ([], _, _, _) -> error ("Internal error: empty context in " ++ fn)+popContextL _ = Lex $ \cont -> P $ \r x y loc ch stk m -> case stk of+ (_:ctxt, exts, e, pst, cs) -> runP (cont ()) r x y loc ch (ctxt, exts, e, pst, cs) m+ ([], _, _, _, _) -> Failed loc "Unexpected }" pullCtxtFlag :: Lex a Bool-pullCtxtFlag = Lex $ \cont -> P $ \r x y loc (ct, e, (d,c), cs) ->- runP (cont c) r x y loc (ct, e, (d,False), cs)+pullCtxtFlag = Lex $ \cont -> P $ \r x y loc ch (ct, exts, e, (d,c), cs) ->+ runP (cont c) r x y loc ch (ct, exts, e, (d,False), cs) flagDo :: Lex a ()-flagDo = Lex $ \cont -> P $ \r x y loc (ct, e, (d,c), cs) ->- runP (cont ()) r x y loc (ct, e, (True,c), cs)+flagDo = Lex $ \cont -> P $ \r x y loc ch (ct, exts, e, (_,c), cs) ->+ runP (cont ()) r x y loc ch (ct, exts, e, (True,c), cs) -- Harp/Hsx getExtContext :: Lex a (Maybe ExtContext)-getExtContext = Lex $ \cont -> P $ \r x y loc stk@(_, e, _, _) ->+getExtContext = Lex $ \cont -> P $ \r x y loc ch stk@(_, _, e, _, _) -> let me = case e of [] -> Nothing (c:_) -> Just c- in runP (cont me) r x y loc stk+ in runP (cont me) r x y loc ch stk pushExtContextL :: ExtContext -> Lex a ()-pushExtContextL ec = Lex $ \cont -> P $ \r x y loc (s, e, p, c) ->- runP (cont ()) r x y loc (s, ec:e, p, c)+pushExtContextL ec = Lex $ \cont -> P $ \r x y loc ch (s, exts, e, p, c) ->+ runP (cont ()) r x y loc ch (s, exts, ec:e, p, c) popExtContextL :: String -> Lex a ()-popExtContextL fn = Lex $ \cont -> P $ \r x y loc stk@(s,e,p,c) -> case e of- (_:ec) -> runP (cont ()) r x y loc (s,ec,p,c)- [] -> error ("Internal error: empty tag context in " ++ fn)+popExtContextL fn = Lex $ \cont -> P $ \r x y loc ch (s,exts,e,p,c) m -> case e of+ (_:ec) -> runP (cont ()) r x y loc ch (s,exts,ec,p,c) m+ [] -> Failed loc ("Internal error: empty tag context in " ++ fn) -- Extension-aware lexing -getExtensionsL :: Lex a [Extension]-getExtensionsL = Lex $ \cont -> P $ \r x y loc s m ->- runP (cont $ extensions m) r x y loc s m+getExtensionsL :: Lex a [KnownExtension]+getExtensionsL = Lex $ \cont -> P $ \r x y loc ch s m ->+ runP (cont $ iExtensions m) r x y loc ch s m +-- | Add an extension to the current configuration.+addExtensionL :: KnownExtension -> Lex a ()+addExtensionL ext = Lex $ \cont -> P $ \r x y loc ch (s, oldExts, e, p, c) m ->+ let newExts = impliesExts [ext] ++ iExtensions m+ in runP (cont ()) r x y loc ch (s, oldExts, e, p, c) (m {iExtensions = newExts})++-- | Save the current configuration of extensions.+saveExtensionsL :: Lex a ()+saveExtensionsL = Lex $ \cont -> P $ \r x y loc ch (s, oldExts, e, p, c) m ->+ runP (cont ()) r x y loc ch (s, iExtensions m:oldExts, e, p, c) m++-- | Return to the previous saved extensions configuration.+restoreExtensionsL :: Lex a ()+restoreExtensionsL = Lex $ \cont -> P $ \r x y loc ch (s,exts,e,p,c) m -> case exts of+ (_:prev) -> runP (cont ()) r x y loc ch (s,prev,e,p,c) m+ _ -> Failed loc "Internal error: empty extension stack"+ -- LINE-aware lexing ignoreLinePragmasL :: Lex a Bool-ignoreLinePragmasL = Lex $ \cont -> P $ \r x y loc s m ->- runP (cont $ ignoreLinePragmas m) r x y loc s m+ignoreLinePragmasL = Lex $ \cont -> P $ \r x y loc c s m ->+ runP (cont $ iIgnoreLinePragmas m) r x y loc c s m -- If we read a file name in a LINE pragma, we should update the state. setLineFilenameL :: String -> Lex a ()-setLineFilenameL name = Lex $ \cont -> P $ \r x y loc s m ->- runP (cont ()) r x y loc s (m {parseFilename = name})- +setLineFilenameL name = Lex $ \cont -> P $ \r x y loc ch s m ->+ runP (cont ()) r x y loc ch s (m {iParseFilename = name})+ -- Comments pushComment :: Comment -> Lex a ()-pushComment c = Lex $ \cont -> P $ \r x y loc (s, e, p, cs) ->- runP (cont ()) r x y loc (s, e, p, c:cs)+pushComment c = Lex $ \cont -> P $ \r x y loc ch (s, exts, e, p, cs) ->+ runP (cont ()) r x y loc ch (s, exts, e, p, c:cs)
src/Language/Haskell/Exts/ParseSyntax.hs view
@@ -1,440 +1,385 @@-{-# OPTIONS_HADDOCK hide #-} -module Language.Haskell.Exts.ParseSyntax where - -import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) ) -import qualified Language.Haskell.Exts.Annotated.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) ) - ---------------------------------------- --- Expressions as we parse them (and patters, and regular patterns) - -data PExp l - = Var l (QName l) -- ^ variable - | IPVar l (IPName l) -- ^ implicit parameter variable - | Con l (QName l) -- ^ data constructor - | Lit l (Literal l) -- ^ literal constant - | InfixApp l (PExp l) (QOp l) (PExp l) -- ^ infix application - | App l (PExp l) (PExp l) -- ^ ordinary application - | NegApp l (PExp l) -- ^ negation expression @-@ /exp/ - | Lambda l [Pat l] (PExp l) -- ^ lambda expression - | Let l (Binds l) (PExp l) -- ^ local declarations with @let@ - | If l (PExp l) (PExp l) (PExp l) -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/ - | Case l (PExp l) [Alt l] -- ^ @case@ /exp/ @of@ /alts/ - | Do l [Stmt l] -- ^ @do@-expression: - -- the last statement in the list - -- should be an expression. - | MDo l [Stmt l] -- ^ @mdo@-expression --- | Tuple [PExp] -- ^ tuple expression - | TupleSection l [Maybe (PExp l)] -- ^ tuple section expression, e.g. @(,,3)@ - | List l [PExp l] -- ^ list expression - | Paren l (PExp l) -- ^ parenthesized expression --- RightSection QOp PExp -- ^ right section @(@/qop/ /exp/@)@ - | RecConstr l (QName l) [PFieldUpdate l] - -- ^ record construction expression - | RecUpdate l (PExp l) [PFieldUpdate l] - -- ^ record update expression - | EnumFrom l (PExp l) -- ^ unbounded arithmetic sequence, - -- incrementing by 1 - | EnumFromTo l (PExp l) (PExp l) -- ^ bounded arithmetic sequence, - -- incrementing by 1 - | EnumFromThen l (PExp l) (PExp l) -- ^ unbounded arithmetic sequence, - -- with first two elements given - | EnumFromThenTo l (PExp l) (PExp l) (PExp l) - -- ^ bounded arithmetic sequence, - -- with first two elements given - | ParComp l (PExp l) [[QualStmt l]] -- ^ parallel list comprehension - | ExpTypeSig l (PExp l) (S.Type l) -- ^ expression type signature - | AsPat l (Name l) (PExp l) -- ^ patterns only - | WildCard l -- ^ patterns only - | IrrPat l (PExp l) -- ^ patterns only - --- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree. - | PostOp l (PExp l) (QOp l) -- ^ post-ops - | PreOp l (QOp l) (PExp l) -- ^ pre-ops - --- View patterns - | ViewPat l (PExp l) (PExp l) -- ^ patterns only - --- HaRP - | SeqRP l [PExp l] -- ^ regular patterns only - | GuardRP l (PExp l) [Stmt l] -- ^ regular patterns only - | EitherRP l (PExp l) (PExp l) -- ^ regular patterns only - | CAsRP l (Name l) (PExp l) -- ^ regular patterns only - --- Template Haskell - | VarQuote l (QName l) -- ^ 'x - | TypQuote l (QName l) -- ^ ''T - | BracketExp l (Bracket l) - | SpliceExp l (Splice l) - | QuasiQuote l String String -- ^ [$...|...] - --- Hsx - | XTag l (XName l) [ParseXAttr l] (Maybe (PExp l)) [PExp l] - -- ^ <Name>...</Name> - | XETag l (XName l) [ParseXAttr l] (Maybe (PExp l)) - -- ^ <Name /> - | XPcdata l String -- ^ PCDATA - | XExpTag l (PExp l) -- ^ <% ... %> - | XChildTag l [PExp l] -- ^ <%> ... </%> - | XRPats l [PExp l] -- ^ <[ ... ]> - --- Pragmas - | CorePragma l String (PExp l) -- ^ {-# CORE #-} pragma - | SCCPragma l String (PExp l) -- ^ {-# SCC #-} pragma - | GenPragma l String (Int, Int) (Int, Int) (PExp l) - -- ^ {-# GENERATED ... #-} pragma - --- Generics - | ExplTypeArg l (QName l) (S.Type l) -- ^ f {| Int |} x = ... - --- Bang Patterns - | BangPat l (PExp l) -- ^ f !a = ... - --- Arrows - | Proc l (Pat l) (PExp l) -- ^ proc p -> do - | LeftArrApp l (PExp l) (PExp l) -- ^ e -< e - | RightArrApp l (PExp l) (PExp l) -- ^ e >- e - | LeftArrHighApp l (PExp l) (PExp l) -- ^ e -<< e - | RightArrHighApp l (PExp l) (PExp l) -- ^ e >>- e - deriving (Eq,Show) - -data PFieldUpdate l - = FieldUpdate l (QName l) (PExp l) - | FieldPun l (Name l) - | FieldWildcard l - deriving (Eq,Show) - -data ParseXAttr l = XAttr l (XName l) (PExp l) - deriving (Eq,Show) - -instance Annotated PExp where - ann e = case e of - Var l qn -> l - IPVar l ipn -> l - Con l qn -> l - Lit l lit -> l - InfixApp l e1 qop e2 -> l - App l e1 e2 -> l - NegApp l e -> l - Lambda l ps e -> l - Let l bs e -> l - If l ec et ee -> l - Case l e alts -> l - Do l ss -> l - MDo l ss -> l - TupleSection l mes -> l - List l es -> l - Paren l e -> l - RecConstr l qn fups -> l - RecUpdate l e fups -> l - EnumFrom l e -> l - EnumFromTo l ef et -> l - EnumFromThen l ef et -> l - EnumFromThenTo l ef eth eto -> l - ParComp l e qsss -> l - ExpTypeSig l e t -> l - AsPat l n e -> l - WildCard l -> l - IrrPat l e -> l - PostOp l e op -> l - PreOp l op e -> l - ViewPat l e1 e2 -> l - SeqRP l es -> l - GuardRP l e ss -> l - EitherRP l e1 e2 -> l - CAsRP l n e -> l - - VarQuote l qn -> l - TypQuote l qn -> l - BracketExp l br -> l - SpliceExp l sp -> l - QuasiQuote l sn se -> l - - XTag l xn xas me es -> l - XETag l xn xas me -> l - XPcdata l s -> l - XExpTag l e -> l - XChildTag l es -> l - XRPats l es -> l - - CorePragma l s e -> l - SCCPragma l s e -> l - GenPragma l s n12 n34 e -> l - - ExplTypeArg l qn t -> l - BangPat l e -> l - - Proc l p e -> l - LeftArrApp l e1 e2 -> l - RightArrApp l e1 e2 -> l - LeftArrHighApp l e1 e2 -> l - RightArrHighApp l e1 e2 -> l - - amap f e = case e of - Var l qn -> Var (f l) qn - IPVar l ipn -> IPVar (f l) ipn - Con l qn -> Con (f l) qn - Lit l lit -> Lit (f l) lit - InfixApp l e1 qop e2 -> InfixApp (f l) e1 qop e2 - App l e1 e2 -> App (f l) e1 e2 - NegApp l e -> NegApp (f l) e - Lambda l ps e -> Lambda (f l) ps e - Let l bs e -> Let (f l) bs e - If l ec et ee -> If (f l) ec et ee - Case l e alts -> Case (f l) e alts - Do l ss -> Do (f l) ss - MDo l ss -> MDo (f l) ss - TupleSection l mes -> TupleSection (f l) mes - List l es -> List (f l) es - Paren l e -> Paren (f l) e - RecConstr l qn fups -> RecConstr (f l) qn fups - RecUpdate l e fups -> RecUpdate (f l) e fups - EnumFrom l e -> EnumFrom (f l) e - EnumFromTo l ef et -> EnumFromTo (f l) ef et - EnumFromThen l ef et -> EnumFromThen (f l) ef et - EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto - ParComp l e qsss -> ParComp (f l) e qsss - ExpTypeSig l e t -> ExpTypeSig (f l) e t - - AsPat l n e -> AsPat (f l) n e - WildCard l -> WildCard (f l) - IrrPat l e -> IrrPat (f l) e - PostOp l e op -> PostOp (f l) e op - PreOp l op e -> PreOp (f l) op e - ViewPat l e1 e2 -> ViewPat (f l) e1 e2 - SeqRP l es -> SeqRP (f l) es - GuardRP l e ss -> GuardRP (f l) e ss - EitherRP l e1 e2 -> EitherRP (f l) e1 e2 - CAsRP l n e -> CAsRP (f l) n e - ExplTypeArg l n t -> ExplTypeArg (f l) n t - BangPat l e -> BangPat (f l) e - - VarQuote l qn -> VarQuote (f l) qn - TypQuote l qn -> TypQuote (f l) qn - BracketExp l br -> BracketExp (f l) br - SpliceExp l sp -> SpliceExp (f l) sp - QuasiQuote l sn se -> QuasiQuote (f l) sn se - - XTag l xn xas me es -> XTag (f l) xn xas me es - XETag l xn xas me -> XETag (f l) xn xas me - XPcdata l s -> XPcdata (f l) s - XExpTag l e -> XExpTag (f l) e - XChildTag l es -> XChildTag (f l) es - XRPats l es -> XRPats (f l) es - - CorePragma l s e -> CorePragma (f l) s e - SCCPragma l s e -> SCCPragma (f l) s e - GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 e - - Proc l p e -> Proc (f l) p e - LeftArrApp l e1 e2 -> LeftArrApp (f l) e1 e2 - 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 - -instance Functor PExp where - fmap f e = case e of - Var l qn -> Var (f l) (fmap f qn) - IPVar l ipn -> IPVar (f l) (fmap f ipn) - Con l qn -> Con (f l) (fmap f qn) - Lit l lit -> Lit (f l) (fmap f lit) - InfixApp l e1 qop e2 -> InfixApp (f l) (fmap f e1) (fmap f qop) (fmap f e2) - App l e1 e2 -> App (f l) (fmap f e1) (fmap f e2) - NegApp l e -> NegApp (f l) (fmap f e) - Lambda l ps e -> Lambda (f l) (map (fmap f) ps) (fmap f e) - Let l bs e -> Let (f l) (fmap f bs) (fmap f e) - If l ec et ee -> If (f l) (fmap f ec) (fmap f et) (fmap f ee) - Case l e alts -> Case (f l) (fmap f e) (map (fmap f) alts) - Do l ss -> Do (f l) (map (fmap f) ss) - MDo l ss -> MDo (f l) (map (fmap f) ss) - TupleSection l mes -> TupleSection (f l) (map (fmap (fmap f)) mes) - List l es -> List (f l) (map (fmap f) es) - Paren l e -> Paren (f l) (fmap f e) - RecConstr l qn fups -> RecConstr (f l) (fmap f qn) (map (fmap f) fups) - RecUpdate l e fups -> RecUpdate (f l) (fmap f e) (map (fmap f) fups) - EnumFrom l e -> EnumFrom (f l) (fmap f e) - EnumFromTo l ef et -> EnumFromTo (f l) (fmap f ef) (fmap f et) - EnumFromThen l ef et -> EnumFromThen (f l) (fmap f ef) (fmap f et) - EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) (fmap f ef) (fmap f eth) (fmap f eto) - ParComp l e qsss -> ParComp (f l) (fmap f e) (map (map (fmap f)) qsss) - ExpTypeSig l e t -> ExpTypeSig (f l) (fmap f e) (fmap f t) - - AsPat l n e -> AsPat (f l) (fmap f n) (fmap f e) - WildCard l -> WildCard (f l) - IrrPat l e -> IrrPat (f l) (fmap f e) - PostOp l e op -> PostOp (f l) (fmap f e) (fmap f op) - PreOp l op e -> PreOp (f l) (fmap f op) (fmap f e) - ViewPat l e1 e2 -> ViewPat (f l) (fmap f e1) (fmap f e2) - SeqRP l es -> SeqRP (f l) (map (fmap f) es) - GuardRP l e ss -> GuardRP (f l) (fmap f e) (map (fmap f) ss) - EitherRP l e1 e2 -> EitherRP (f l) (fmap f e1) (fmap f e2) - CAsRP l n e -> CAsRP (f l) (fmap f n) (fmap f e) - ExplTypeArg l n t -> ExplTypeArg (f l) (fmap f n) (fmap f t) - BangPat l e -> BangPat (f l) (fmap f e) - - VarQuote l qn -> VarQuote (f l) (fmap f qn) - TypQuote l qn -> TypQuote (f l) (fmap f qn) - BracketExp l br -> BracketExp (f l) (fmap f br) - SpliceExp l sp -> SpliceExp (f l) (fmap f sp) - QuasiQuote l sn se -> QuasiQuote (f l) sn se - - XTag l xn xas me es -> XTag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es) - XETag l xn xas me -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) - XPcdata l s -> XPcdata (f l) s - XExpTag l e -> XExpTag (f l) (fmap f e) - XChildTag l es -> XChildTag (f l) (map (fmap f) es) - XRPats l es -> XRPats (f l) (map (fmap f) es) - - CorePragma l s e -> CorePragma (f l) s (fmap f e) - SCCPragma l s e -> SCCPragma (f l) s (fmap f e) - GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 (fmap f e) - - Proc l p e -> Proc (f l) (fmap f p) (fmap f e) - LeftArrApp l e1 e2 -> LeftArrApp (f l) (fmap f e1) (fmap f e2) - RightArrApp l e1 e2 -> RightArrApp (f l) (fmap f e1) (fmap f e2) - LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) (fmap f e1) (fmap f e2) - RightArrHighApp l e1 e2 -> RightArrHighApp (f l) (fmap f e1) (fmap f e2) - - - -instance Functor PFieldUpdate where - fmap f (FieldUpdate l qn e) = FieldUpdate (f l) (fmap f qn) (fmap f e) - fmap f (FieldPun l n) = FieldPun (f l) (fmap f n) - fmap f (FieldWildcard l) = FieldWildcard (f l) - -instance Annotated PFieldUpdate where - ann (FieldUpdate l qn e) = l - ann (FieldPun l n) = l - ann (FieldWildcard l) = l - amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e - amap f (FieldPun l n) = FieldPun (f l) n - amap f (FieldWildcard l) = FieldWildcard (f l) - -instance Functor ParseXAttr where - fmap f (XAttr l xn e) = XAttr (f l) (fmap f xn) (fmap f e) - -instance Annotated ParseXAttr where - ann (XAttr l _ _) = l - amap f (XAttr l xn e) = XAttr (f l) xn e - -p_unit_con :: l -> PExp l -p_unit_con l = Con l (unit_con_name l) - -p_tuple_con :: l -> Boxed -> Int -> PExp l -p_tuple_con l b i = Con l (tuple_con_name l b i) - -p_unboxed_singleton_con :: l -> PExp l -p_unboxed_singleton_con l = Con l (unboxed_singleton_con_name l) - -data PContext l - = CxSingle l (PAsst l) - | CxTuple l [PAsst l] - | CxParen l (PContext l) - | CxEmpty l - deriving (Eq, Show) - -instance Functor PContext where - fmap f (CxSingle l asst) = CxSingle (f l) (fmap f asst) - fmap f (CxTuple l assts) = CxTuple (f l) (map (fmap f) assts) - fmap f (CxParen l ctxt) = CxParen (f l) (fmap f ctxt) - fmap f (CxEmpty l) = CxEmpty (f l) - -instance Annotated PContext where - ann (CxSingle l asst ) = l - ann (CxTuple l assts) = l - ann (CxParen l ctxt ) = l - ann (CxEmpty l) = l - amap f (CxSingle l asst ) = CxSingle (f l) asst - amap f (CxTuple l assts) = CxTuple (f l) assts - amap f (CxParen l ctxt ) = CxParen (f l) ctxt - amap f (CxEmpty l) = CxEmpty (f l) - -data PType l - = TyForall l - (Maybe [TyVarBind l]) - (Maybe (PContext l)) - (PType l) - | TyFun l (PType l) (PType l) -- ^ function type - | TyTuple l Boxed [PType l] -- ^ tuple type, possibly boxed - | TyList l (PType l) -- ^ list syntax, e.g. [a], as opposed to [] a - | TyApp l (PType l) (PType l) -- ^ application of a type constructor - | TyVar l (Name l) -- ^ type variable - | TyCon l (QName l) -- ^ named type or type constructor - | TyParen l (PType l) -- ^ type surrounded by parentheses - | TyPred l (PAsst l) -- ^ assertion of an implicit parameter - | TyInfix l (PType l) (QName l) (PType l) -- ^ infix type constructor - | TyKind l (PType l) (Kind l) -- ^ type with explicit kind signature - deriving (Eq, Show) - -instance Functor PType where - fmap f t = case t of - TyForall l mtvs mcx t -> TyForall (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f t) - TyFun l t1 t2 -> TyFun (f l) (fmap f t1) (fmap f t2) - TyTuple l b ts -> TyTuple (f l) b (map (fmap f) ts) - TyList l t -> TyList (f l) (fmap f t) - TyApp l t1 t2 -> TyApp (f l) (fmap f t1) (fmap f t2) - TyVar l n -> TyVar (f l) (fmap f n) - TyCon l qn -> TyCon (f l) (fmap f qn) - TyParen l t -> TyParen (f l) (fmap f t) - TyPred l asst -> TyPred (f l) (fmap f asst) - TyInfix l ta qn tb -> TyInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb) - TyKind l t k -> TyKind (f l) (fmap f t) (fmap f k) - -instance Annotated PType where - ann t = case t of - TyForall l mtvs cx t -> l - TyFun l t1 t2 -> l - TyTuple l b ts -> l - TyList l t -> l - TyApp l t1 t2 -> l - TyVar l n -> l - TyCon l qn -> l - TyParen l t -> l - TyInfix l ta qn tb -> l - TyKind l t k -> l - amap f t = case t of - TyForall l mtvs mcx t -> TyForall (f l) mtvs mcx t - TyFun l t1 t2 -> TyFun (f l) t1 t2 - TyTuple l b ts -> TyTuple (f l) b ts - TyList l t -> TyList (f l) t - TyApp l t1 t2 -> TyApp (f l) t1 t2 - TyVar l n -> TyVar (f l) n - TyCon l qn -> TyCon (f l) qn - TyParen l t -> TyParen (f l) t - TyInfix l ta qn tb -> TyInfix (f l) ta qn tb - TyKind l t k -> TyKind (f l) t k - -data PAsst l - = ClassA l (QName l) [PType l] - | InfixA l (PType l) (QName l) (PType l) - | IParam l (IPName l) (PType l) - | EqualP l (PType l) (PType l) - deriving (Eq, Show) - -instance Functor PAsst where - fmap f asst = case asst of - ClassA l qn ts -> ClassA (f l) (fmap f qn) (map (fmap f) ts) - InfixA l ta qn tb -> InfixA (f l) (fmap f ta) (fmap f qn) (fmap f tb) - IParam l ipn t -> IParam (f l) (fmap f ipn) (fmap f t) - EqualP l t1 t2 -> EqualP (f l) (fmap f t1) (fmap f t2) - -instance Annotated PAsst where - ann asst = case asst of - ClassA l qn ts -> l - InfixA l ta qn tb -> l - IParam l ipn t -> l - EqualP l t1 t2 -> l - amap f asst = case asst of - ClassA l qn ts -> ClassA (f l) qn ts - InfixA l ta qn tb -> InfixA (f l) ta qn tb - IParam l ipn t -> IParam (f l) ipn t - EqualP l t1 t2 -> EqualP (f l) t1 t2 - - -unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> PType l -unit_tycon l = TyCon l (unit_tycon_name l) -fun_tycon l = TyCon l (fun_tycon_name l) -list_tycon l = TyCon l (list_tycon_name l) -unboxed_singleton_tycon l = TyCon l (unboxed_singleton_tycon_name l) - -tuple_tycon :: l -> Boxed -> Int -> PType l -tuple_tycon l b i = TyCon l (tuple_tycon_name l b i) +{-# LANGUAGE DeriveFunctor #-}+{-# OPTIONS_HADDOCK hide #-}+module Language.Haskell.Exts.ParseSyntax where++import Language.Haskell.Exts.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )+import qualified Language.Haskell.Exts.Syntax as S ( Type(..), Promoted(..) )++---------------------------------------+-- Expressions as we parse them (and patterns, and regular patterns)++data PExp l+ = Var l (QName l) -- ^ variable+ | OverloadedLabel l String -- ^ overloaded label #foo+ | IPVar l (IPName l) -- ^ implicit parameter variable+ | Con l (QName l) -- ^ data constructor+ | Lit l (Literal l) -- ^ literal constant+ | InfixApp l (PExp l) (QOp l) (PExp l) -- ^ infix application+ | App l (PExp l) (PExp l) -- ^ ordinary application+ | NegApp l (PExp l) -- ^ negation expression @-@ /exp/+ | Lambda l [Pat l] (PExp l) -- ^ lambda expression+ | Let l (Binds l) (PExp l) -- ^ local declarations with @let@+ | If l (PExp l) (PExp l) (PExp l) -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/+ | MultiIf l [GuardedRhs l] -- ^ @if@ @|@ /stmts/ @->@ /exp/ ...+ | Case l (PExp l) [Alt l] -- ^ @case@ /exp/ @of@ /alts/+ | Do l [Stmt l] -- ^ @do@-expression:+ -- the last statement in the list+ -- should be an expression.+ | MDo l [Stmt l] -- ^ @mdo@-expression+ | TupleSection l Boxed [Maybe (PExp l)] -- ^ tuple section expression, e.g. @(,,3)@+ | UnboxedSum l Int Int (PExp l) -- ^ Unboxed sum+ | List l [PExp l] -- ^ list expression+ | ParArray l [PExp l] -- ^ parallel array expression+ | Paren l (PExp l) -- ^ parenthesized expression+ | RecConstr l (QName l) [PFieldUpdate l]+ -- ^ record construction expression+ | RecUpdate l (PExp l) [PFieldUpdate l]+ -- ^ record update expression+ | EnumFrom l (PExp l) -- ^ unbounded arithmetic sequence,+ -- incrementing by 1+ | EnumFromTo l (PExp l) (PExp l) -- ^ bounded arithmetic sequence,+ -- incrementing by 1+ | EnumFromThen l (PExp l) (PExp l) -- ^ unbounded arithmetic sequence,+ -- with first two elements given+ | EnumFromThenTo l (PExp l) (PExp l) (PExp l)+ -- ^ bounded arithmetic sequence,+ -- with first two elements given+ | ParArrayFromTo l (PExp l) (PExp l) -- ^ bounded arithmetic sequence,+ -- incrementing by 1+ | ParArrayFromThenTo l (PExp l) (PExp l) (PExp l)+ -- ^ bounded arithmetic sequence,+ -- with first two elements given+ | ParComp l (PExp l) [[QualStmt l]] -- ^ parallel list comprehension+ | ParArrayComp l (PExp l) [[QualStmt l]] -- ^ parallel array comprehension+ | ExpTypeSig l (PExp l) (S.Type l) -- ^ expression type signature+ | AsPat l (Name l) (PExp l) -- ^ patterns only+ | WildCard l -- ^ patterns only+ | IrrPat l (PExp l) -- ^ patterns only++-- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree.+ | PostOp l (PExp l) (QOp l) -- ^ post-ops+ | PreOp l (QOp l) (PExp l) -- ^ pre-ops++-- View patterns+ | ViewPat l (PExp l) (Pat l) -- ^ patterns only++-- HaRP+ | SeqRP l [PExp l] -- ^ regular patterns only+ | GuardRP l (PExp l) [Stmt l] -- ^ regular patterns only+ | EitherRP l (PExp l) (PExp l) -- ^ regular patterns only+ | CAsRP l (Name l) (PExp l) -- ^ regular patterns only++-- Template Haskell+ | VarQuote l (QName l) -- ^ 'x+ | TypQuote l (QName l) -- ^ ''T+ | BracketExp l (Bracket l)+ | SpliceExp l (Splice l)+ | QuasiQuote l String String -- ^ [$...|...]++-- Hsx+ | XTag l (XName l) [ParseXAttr l] (Maybe (PExp l)) [PExp l]+ -- ^ <Name>...</Name>+ | XETag l (XName l) [ParseXAttr l] (Maybe (PExp l))+ -- ^ <Name />+ | XPcdata l String -- ^ PCDATA+ | XExpTag l (PExp l) -- ^ <% ... %>+ | XChildTag l [PExp l] -- ^ <%> ... </%>+ | XRPats l [PExp l] -- ^ <[ ... ]>++-- Pragmas+ | CorePragma l String (PExp l) -- ^ {-# CORE #-} pragma+ | SCCPragma l String (PExp l) -- ^ {-# SCC #-} pragma+ | GenPragma l String (Int, Int) (Int, Int) (PExp l)+ -- ^ {-# GENERATED ... #-} pragma++-- Bang Patterns+ | BangPat l (PExp l) -- ^ f !a = ...++-- Arrows+ | Proc l (Pat l) (PExp l) -- ^ proc p -> do+ | LeftArrApp l (PExp l) (PExp l) -- ^ e -< e+ | 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/+ | TypeApp l (S.Type l)+ deriving (Eq,Show,Functor)++data PFieldUpdate l+ = FieldUpdate l (QName l) (PExp l)+ | FieldPun l (QName l)+ | FieldWildcard l+ deriving (Eq,Show,Functor)++data ParseXAttr l = XAttr l (XName l) (PExp l)+ deriving (Eq,Show,Functor)++instance Annotated PExp where+ ann e = case e of+ Var l _ -> l+ OverloadedLabel l _ -> l+ IPVar l _ -> l+ Con l _ -> l+ Lit l _ -> l+ InfixApp l _ _ _ -> l+ App l _ _ -> l+ NegApp l _ -> l+ Lambda l _ _ -> l+ Let l _ _ -> l+ If l _ _ _ -> l+ Case l _ _ -> l+ Do l _ -> l+ MDo l _ -> l+ TupleSection l _ _ -> l+ UnboxedSum l _ _ _ -> l+ List l _ -> l+ ParArray l _ -> l+ Paren l _ -> l+ RecConstr l _ _ -> l+ RecUpdate l _ _ -> l+ EnumFrom l _ -> l+ EnumFromTo l _ _ -> l+ EnumFromThen l _ _ -> l+ EnumFromThenTo l _ _ _ -> l+ ParArrayFromTo l _ _ -> l+ ParArrayFromThenTo l _ _ _ -> l+ ParComp l _ _ -> l+ ParArrayComp l _ _ -> l+ ExpTypeSig l _ _ -> l+ AsPat l _ _ -> l+ WildCard l -> l+ IrrPat l _ -> l+ PostOp l _ _ -> l+ PreOp l _ _ -> l+ ViewPat l _ _ -> l+ SeqRP l _ -> l+ GuardRP l _ _ -> l+ EitherRP l _ _ -> l+ CAsRP l _ _ -> l++ VarQuote l _ -> l+ TypQuote l _ -> l+ BracketExp l _ -> l+ SpliceExp l _ -> l+ QuasiQuote l _ _ -> l++ XTag l _ _ _ _ -> l+ XETag l _ _ _ -> l+ XPcdata l _ -> l+ XExpTag l _ -> l+ XChildTag l _ -> l+ XRPats l _ -> l++ CorePragma l _ _ -> l+ SCCPragma l _ _ -> l+ GenPragma l _ _ _ _ -> l++ BangPat l _ -> l++ Proc l _ _ -> l+ LeftArrApp l _ _ -> l+ RightArrApp l _ _ -> l+ LeftArrHighApp l _ _ -> l+ RightArrHighApp l _ _ -> l+ ArrOp l _ -> l++ LCase l _ -> l+ MultiIf l _ -> l+ TypeApp l _ -> l+++ amap f e' = case e' of+ Var l qn -> Var (f l) qn+ OverloadedLabel l qn -> OverloadedLabel (f l) qn+ IPVar l ipn -> IPVar (f l) ipn+ Con l qn -> Con (f l) qn+ Lit l lit -> Lit (f l) lit+ InfixApp l e1 qop e2 -> InfixApp (f l) e1 qop e2+ App l e1 e2 -> App (f l) e1 e2+ NegApp l e -> NegApp (f l) e+ Lambda l ps e -> Lambda (f l) ps e+ Let l bs e -> Let (f l) bs e+ If l ec et ee -> If (f l) ec et ee+ Case l e alts -> Case (f l) e alts+ Do l ss -> Do (f l) ss+ MDo l ss -> MDo (f l) ss+ TupleSection l bx mes -> TupleSection (f l) bx mes+ UnboxedSum l b a e -> UnboxedSum (f l) b a e+ List l es -> List (f l) es+ ParArray l es -> ParArray (f l) es+ Paren l e -> Paren (f l) e+ RecConstr l qn fups -> RecConstr (f l) qn fups+ RecUpdate l e fups -> RecUpdate (f l) e fups+ EnumFrom l e -> EnumFrom (f l) e+ EnumFromTo l ef et -> EnumFromTo (f l) ef et+ EnumFromThen l ef et -> EnumFromThen (f l) ef et+ EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto+ ParArrayFromTo l ef et -> ParArrayFromTo (f l) ef et+ ParArrayFromThenTo l ef eth eto -> ParArrayFromThenTo (f l) ef eth eto+ ParComp l e qsss -> ParComp (f l) e qsss+ ParArrayComp l e qsss -> ParArrayComp (f l) e qsss+ ExpTypeSig l e t -> ExpTypeSig (f l) e t++ AsPat l n e -> AsPat (f l) n e+ WildCard l -> WildCard (f l)+ IrrPat l e -> IrrPat (f l) e+ PostOp l e op -> PostOp (f l) e op+ PreOp l op e -> PreOp (f l) op e+ ViewPat l e1 e2 -> ViewPat (f l) e1 e2+ SeqRP l es -> SeqRP (f l) es+ GuardRP l e ss -> GuardRP (f l) e ss+ EitherRP l e1 e2 -> EitherRP (f l) e1 e2+ CAsRP l n e -> CAsRP (f l) n e+ BangPat l e -> BangPat (f l) e++ VarQuote l qn -> VarQuote (f l) qn+ TypQuote l qn -> TypQuote (f l) qn+ BracketExp l br -> BracketExp (f l) br+ SpliceExp l sp -> SpliceExp (f l) sp+ QuasiQuote l sn se -> QuasiQuote (f l) sn se++ XTag l xn xas me es -> XTag (f l) xn xas me es+ XETag l xn xas me -> XETag (f l) xn xas me+ XPcdata l s -> XPcdata (f l) s+ XExpTag l e -> XExpTag (f l) e+ XChildTag l es -> XChildTag (f l) es+ XRPats l es -> XRPats (f l) es++ CorePragma l s e -> CorePragma (f l) s e+ SCCPragma l s e -> SCCPragma (f l) s e+ GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 e++ Proc l p e -> Proc (f l) p e+ LeftArrApp l e1 e2 -> LeftArrApp (f l) e1 e2+ 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+ TypeApp l ty -> TypeApp (f l) ty++instance Annotated PFieldUpdate where+ ann (FieldUpdate l _ _) = l+ ann (FieldPun l _) = l+ ann (FieldWildcard l) = l+ amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e+ amap f (FieldPun l n) = FieldPun (f l) n+ amap f (FieldWildcard l) = FieldWildcard (f l)++instance Annotated ParseXAttr where+ ann (XAttr l _ _) = l+ amap f (XAttr l xn e) = XAttr (f l) xn e++p_unit_con :: l -> PExp l+p_unit_con l = Con l (unit_con_name l)++p_tuple_con :: l -> Boxed -> Int -> PExp l+p_tuple_con l b i = Con l (tuple_con_name l b i)++p_unboxed_singleton_con :: l -> PExp l+p_unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)++data PContext l+ = CxSingle l (PAsst l)+ | CxTuple l [PAsst l]+ | CxEmpty l+ deriving (Eq, Show, Functor)++instance Annotated PContext where+ ann (CxSingle l _ ) = l+ ann (CxTuple l _) = l+ ann (CxEmpty l) = l+ amap f (CxSingle l asst ) = CxSingle (f l) asst+ amap f (CxTuple l assts) = CxTuple (f l) assts+ amap f (CxEmpty l) = CxEmpty (f l)++data PType l+ = TyForall l+ (Maybe [TyVarBind l])+ (Maybe (PContext l))+ (PType l)+ | TyStar l -- ^ @*@, the type of types+ | TyFun l (PType l) (PType l) -- ^ function type+ | TyTuple l Boxed [PType l] -- ^ tuple type, possibly boxed+ | TyUnboxedSum l [PType l] -- ^ unboxed sum+ | TyList l (PType l) -- ^ list syntax, e.g. [a], as opposed to [] a+ | TyParArray l (PType l) -- ^ parallel array syntax, e.g. [:a:]+ | TyApp l (PType l) (PType l) -- ^ application of a type constructor+ | TyVar l (Name l) -- ^ type variable+ | TyCon l (QName l) -- ^ named type or type constructor+ | TyParen l (PType l) -- ^ type surrounded by parentheses+ | TyPred l (PAsst l) -- ^ assertion of an implicit parameter+ | TyInfix l (PType l) (MaybePromotedName l) (PType l) -- ^ infix type constructor+ | TyKind l (PType l) (Kind l) -- ^ type with explicit kind signature+ | TyPromoted l (S.Promoted l) -- ^ promoted data type+ | TyEquals l (PType l) (PType l) -- ^ type equality constraint+ | TySplice l (Splice l) -- ^ template haskell splice type+ | TyBang l (BangType l) (Unpackedness l) (PType l) -- ^ Strict type marked with \"@!@\" or type marked with UNPACK pragma.+ | TyWildCard l (Maybe (Name l)) -- ^ Type wildcard+ | TyQuasiQuote l String String -- ^ @[qq| |]@+ deriving (Eq, Show, Functor)++instance Annotated PType where+ ann t = case t of+ TyForall l _ _ _ -> l+ TyStar l -> l+ TyFun l _ _ -> l+ TyTuple l _ _ -> l+ TyUnboxedSum l _ -> l+ TyList l _ -> l+ TyParArray l _ -> l+ TyApp l _ _ -> l+ TyVar l _ -> l+ TyCon l _ -> l+ TyParen l _ -> l+ TyInfix l _ _ _ -> l+ TyKind l _ _ -> l+ TyPromoted l _ -> l+ TyEquals l _ _ -> l+ TyPred l _ -> l+ TySplice l _ -> l+ TyBang l _ _ _ -> l+ TyWildCard l _ -> l+ TyQuasiQuote l _ _ -> l+ amap f t' = case t' of+ TyForall l mtvs mcx t -> TyForall (f l) mtvs mcx t+ TyStar l -> TyStar (f l)+ TyFun l t1 t2 -> TyFun (f l) t1 t2+ TyTuple l b ts -> TyTuple (f l) b ts+ TyUnboxedSum l ts -> TyUnboxedSum (f l) ts+ TyList l t -> TyList (f l) t+ TyParArray l t -> TyParArray (f l) t+ TyApp l t1 t2 -> TyApp (f l) t1 t2+ TyVar l n -> TyVar (f l) n+ TyCon l qn -> TyCon (f l) qn+ TyParen l t -> TyParen (f l) t+ TyInfix l ta qn tb -> TyInfix (f l) ta qn tb+ TyKind l t k -> TyKind (f l) t k+ TyPromoted l p -> TyPromoted (f l) p+ TyEquals l t1 t2 -> TyEquals (f l) t1 t2+ TyPred l asst -> TyPred (f l) asst+ TySplice l s -> TySplice (f l) s+ TyBang l b u t -> TyBang (f l) b u t+ TyWildCard l mn -> TyWildCard (f l) mn+ TyQuasiQuote l n s -> TyQuasiQuote (f l) n s++data PAsst l+ = TypeA l (PType l)+ | IParam l (IPName l) (PType l)+ | ParenA l (PAsst l)+ deriving (Eq, Show, Functor)++instance Annotated PAsst where+ ann asst = case asst of+ TypeA l _ -> l+ IParam l _ _ -> l+ ParenA l _ -> l+ amap f asst = case asst of+ TypeA l t -> TypeA (f l) t+ IParam l ipn t -> IParam (f l) ipn t+ ParenA l a -> ParenA (f l) a
src/Language/Haskell/Exts/ParseUtils.hs view
@@ -1,4 +1,6 @@ {-# OPTIONS_HADDOCK hide #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE PatternGuards #-} ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.ParseUtils@@ -17,6 +19,8 @@ module Language.Haskell.Exts.ParseUtils ( splitTyConApp -- PType -> P (Name,[Type]) , checkEnabled -- (Show e, Enabled e) => e -> P ()+ , checkEnabledOneOf+ , checkToplevel -- ?? , checkPatternGuards -- [Stmt] -> P () , mkRecConstrOrUpdate -- PExp -> [PFieldUpdate] -> P Exp , checkPrec -- Integer -> P Int@@ -30,10 +34,16 @@ , checkPattern -- PExp -> P Pat , checkExpr -- PExp -> P Exp , checkType -- PType -> P Type+ , checkTyVar -- Name -> P PType+ , bangType -- L -> BangType -> Type -> Type+ , checkKind -- Kind -> P () , checkValDef -- SrcLoc -> PExp -> Maybe Type -> Rhs -> Binds -> P Decl+ , checkExplicitPatSyn -- , checkClassBody -- [ClassDecl] -> P [ClassDecl] , checkInstBody -- [InstDecl] -> P [InstDecl] , checkUnQual -- QName -> P Name+ , checkQualOrUnQual -- QName -> P QName+ , checkSingleDecl -- [Decl] -> P Decl , checkRevDecls -- [Decl] -> P [Decl] , checkRevClsDecls -- [ClassDecl] -> P [ClassDecl] , checkRevInstDecls -- [InstDecl] -> P [InstDecl]@@ -41,8 +51,13 @@ , checkDataOrNewG -- DataOrNew -> [GadtDecl] -> P () , checkSimpleType -- PType -> P (Name, [TyVarBind]) , checkSigVar -- PExp -> P Name+ , checkDefSigDef -- Decl -> P Decl , getGConName -- S.Exp -> P QName , mkTyForall -- Maybe [TyVarBind] -> PContext -> PType -> PType+ , mkRoleAnnotDecl --+ , mkAssocType+ , mkEThingWith+ , splitTilde -- HaRP , checkRPattern -- PExp -> P RPat -- Hsx@@ -53,34 +68,47 @@ -- Pragmas , checkRuleExpr -- PExp -> P Exp , readTool -- Maybe String -> Maybe Tool+ -- Helpers+ , updateQNameLoc -- l -> QName l -> QName l + , SumOrTuple(..), mkSumOrTuple+ -- Parsed expressions and types , PExp(..), PFieldUpdate(..), ParseXAttr(..), PType(..), PContext, PAsst(..) , p_unit_con -- PExp , p_tuple_con -- Boxed -> Int -> PExp , p_unboxed_singleton_con -- PExp+ , pexprToQName ) where -import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )-import qualified Language.Haskell.Exts.Annotated.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )-import Language.Haskell.Exts.Annotated.Build+import Language.Haskell.Exts.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )+import qualified Language.Haskell.Exts.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..), Role(..), PatternSynDirection(..)) import Language.Haskell.Exts.ParseSyntax import Language.Haskell.Exts.ParseMonad import Language.Haskell.Exts.Pretty-import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.SrcLoc hiding (loc) import Language.Haskell.Exts.Extension import Language.Haskell.Exts.ExtScheme -import Data.List (intersperse)-import Data.Maybe (fromJust)-import Control.Monad (when,liftM)+import Prelude hiding (mod)+import Data.List (intercalate, intersperse)+import Data.Maybe (fromJust, fromMaybe)+import Data.Either+import Control.Monad (when,unless) ---- import Debug.Trace (trace)+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative ((<$>))+#endif type L = SrcSpanInfo type S = SrcSpan +pexprToQName :: PExp l -> P (QName l)+pexprToQName (Con _ qn) = return qn+pexprToQName (List l []) = return $ Special l (ListCon l)+pexprToQName _ = fail "pexprToQName"+ splitTyConApp :: PType L -> P (Name L, [S.Type L]) splitTyConApp t0 = do (n, pts) <- split t0 []@@ -90,7 +118,7 @@ split :: PType L -> [PType L] -> P (Name L, [PType L]) split (TyApp _ t u) ts = split t (u:ts) split (TyCon _ (UnQual _ t)) ts = return (t,ts)- split (TyInfix l a op b) ts = split (TyCon l op) (a:b:ts)+ split (TyInfix l a op b) ts = split (TyCon l (getMaybePromotedQName op)) (a:b:ts) split _ _ = fail "Illegal data/newtype declaration" -----------------------------------------------------------------------------@@ -99,14 +127,41 @@ checkEnabled :: (Show e, Enabled e) => e -> P () checkEnabled e = do exts <- getExtensions- if isEnabled e exts- then return ()- else fail $ show e ++ " is not enabled"+ unless (isEnabled e exts) $ fail errorMsg+ where errorMsg = unwords+ [ show e+ , "language extension is not enabled."+ , "Please add {-# LANGUAGE " ++ show e ++ " #-}"+ , "pragma at the top of your module."+ ] +checkEnabledOneOf :: (Show e, Enabled e) => [e] -> P ()+checkEnabledOneOf es = do+ exts <- getExtensions+ unless (any (`isEnabled` exts) es) $+ fail errorMsg+ where errorMsg = unwords+ [ "At least one of"+ , joinOr id+ , "language extensions needs to be enabled."+ , "Please add:"+ , joinOr (\s -> "{-# LANGUAGE " ++ s ++ " #-}")+ , "language pragma at the top of your module."+ ]+ joinOr f = concat . intersperse " or " . map (f . show) $ es+ checkPatternGuards :: [Stmt L] -> P () checkPatternGuards [Qualifier _ _] = return () checkPatternGuards _ = checkEnabled PatternGuards +checkToplevel :: PExp t -> P ()+checkToplevel e = do+ exts <- getExtensions+ let isQQ = case e of+ QuasiQuote {} -> isEnabled QuasiQuotes exts+ _ -> False+ unless isQQ (checkEnabled TemplateHaskell)+ ----------------------------------------------------------------------------- -- Checking contexts @@ -120,8 +175,12 @@ checkPContext (TyCon l (Special _ (UnitCon _))) = return $ CxEmpty l checkPContext (TyParen l t) = do- c <- checkPContext t- return $ CxParen l c+ c <- checkAssertion t+ return $ CxSingle l (ParenA l c)+checkPContext t@(TyEquals tp _ _) = do+ checkEnabledOneOf [TypeFamilies, GADTs]+ return $ CxSingle tp $ TypeA tp t+ checkPContext t = do c <- checkAssertion t return $ CxSingle (ann c) c@@ -132,41 +191,82 @@ -- the class assertion parameters for later. checkAssertion :: PType L -> P (PAsst L) -- We cannot even get here unless ImplicitParameters is enabled.-checkAssertion (TyPred _ p@(IParam _ _ _)) = return p--- We cannot even get here unless TypeFamilies is enabled.-checkAssertion (TyPred _ p@(EqualP _ _ _)) = return p-checkAssertion t = checkAssertion' id [] t+checkAssertion (TyParen l asst) = do+ asst' <- checkAssertion asst+ return $ ParenA l asst'+checkAssertion (TyPred _ p) = checkAAssertion p+-- We cannot even get here unless TypeFamilies or GADTs is enabled.+-- N.B.: this is called only when the equality assertion is part of a+-- tuple+checkAssertion t' = do+ t'' <- checkAssertion' id [] t'+ return $ TypeA (ann t'') t'' where -- class assertions must have at least one argument- checkAssertion' fl ts@(_:xs) (TyCon l c) = do- when (not $ null xs) $ checkEnabled MultiParamTypeClasses- when (isSymbol c) $ checkEnabled TypeOperators- return $ ClassA (fl l) c ts- checkAssertion' fl ts (TyApp l a t) = do+ checkAssertion' _ _ t@(TyEquals _ _ _) = return t+ checkAssertion' fl ts (TyCon l c) = do+ when (length ts < 1) $ checkEnabled FlexibleContexts+ checkAndWarnTypeOperators c+ return $ tyApps (fl l) (TyCon (fl l) c) ts+ checkAssertion' fl ts (TyApp l a t) = -- no check on t at this stage checkAssertion' (const (fl l)) (t:ts) a- checkAssertion' fl ts (TyInfix l a op b) = do+ checkAssertion' fl _ (TyInfix l a op b) = do -- infix operators require TypeOperators- checkEnabled TypeOperators- return $ InfixA (fl l) a op b+ checkAndWarnTypeOperators (getMaybePromotedQName op)+ return $ TyInfix (fl l) a op b checkAssertion' fl ts (TyParen l t) = checkAssertion' (const (fl l)) ts t- checkAssertion' _ _ _ = fail "Illegal class assertion"+ checkAssertion' fl ts (TyVar l t) = do -- Dict :: cxt => Dict cxt+ checkEnabled ConstraintKinds+ return $ tyApps (fl l) (TyVar (fl l) t) ts+ checkAssertion' _ _ t@(TyWildCard _ _) = return t+ checkAssertion' _ _ t = do+ checkEnabled QuantifiedConstraints -- anything goes+ return t+ tyApps :: L -> PType L -> [PType L] -> PType L+ tyApps _ c [] = c+ tyApps l c (a:aa) = tyApps l (TyApp l c a) aa -isSymbol :: QName L -> Bool-isSymbol (UnQual _ (Symbol _ _)) = True-isSymbol (Qual _ _ (Symbol _ _)) = True-isSymbol _ = False+checkAAssertion :: PAsst L -> P (PAsst L)+checkAAssertion (TypeA _ t) = checkAssertion t+checkAAssertion (ParenA l a) = do+ a' <- checkAAssertion a+ return $ ParenA l a'+checkAAssertion p = return p +-- Check class/instance declaration for multiparams+checkMultiParam :: PType L -> P ()+checkMultiParam = checkMultiParam' []+ where+ checkMultiParam' ts (TyCon _ _) =+ when (length ts /= 1) $ checkEnabled MultiParamTypeClasses+ checkMultiParam' ts (TyApp _ a t) = checkMultiParam' (t:ts) a+ checkMultiParam' _ (TyInfix _ _ _ _) = checkEnabled MultiParamTypeClasses+ checkMultiParam' ts (TyParen _ t) = checkMultiParam' ts t+ checkMultiParam' _ _ = return () +getSymbol :: QName L -> Maybe String+getSymbol (UnQual _ (Symbol _ s)) = Just s+getSymbol (Qual _ _ (Symbol _ s)) = Just s+getSymbol _ = Nothing++-- | Checks whether the parameter is a symbol, and gives a nice warning for+-- "." if ExplicitForAll/TypeOperators are not enabled.+checkAndWarnTypeOperators :: QName L -> P ()+checkAndWarnTypeOperators c =+ case getSymbol c of+ Just s | s == "." -> checkEnabledOneOf [ExplicitForAll, TypeOperators]+ | otherwise -> checkEnabled TypeOperators+ Nothing -> return ()+ -- Checks simple contexts for class and instance -- headers. If FlexibleContexts is enabled then -- anything goes, otherwise only tyvars are allowed. checkSContext :: Maybe (PContext L) -> P (Maybe (S.Context L)) checkSContext (Just ctxt) = case ctxt of CxEmpty l -> return $ Just $ S.CxEmpty l- CxSingle l a -> checkAsst True a >>= return . Just . S.CxSingle l- CxTuple l as -> mapM (checkAsst True) as >>= return . Just . S.CxTuple l- CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)+ CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l+ CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l checkSContext _ = return Nothing -- Checks ordinary contexts for sigtypes and data type@@ -176,40 +276,22 @@ checkContext :: Maybe (PContext L) -> P (Maybe (S.Context L)) checkContext (Just ctxt) = case ctxt of CxEmpty l -> return $ Just $ S.CxEmpty l- CxSingle l a -> checkAsst False a >>= return . Just . S.CxSingle l- CxTuple l as -> mapM (checkAsst False) as >>= return . Just . S.CxTuple l- CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)+ CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l+ CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l checkContext _ = return Nothing -checkAsst :: Bool -> PAsst L -> P (S.Asst L)-checkAsst isSimple asst =+checkAsst :: PAsst L -> P (S.Asst L)+checkAsst asst = case asst of- ClassA l qn pts -> do- ts <- mapM (checkAsstParam isSimple) pts- return $ S.ClassA l qn ts- InfixA l a op b -> do- [a,b] <- mapM (checkAsstParam isSimple) [a,b]- return $ S.InfixA l a op b+ TypeA l pt -> do+ t <- checkType pt+ return $ S.TypeA l t IParam l ipn pt -> do t <- checkType pt return $ S.IParam l ipn t- EqualP l pa pb -> do- a <- checkType pa- b <- checkType pb- return $ S.EqualP l a b--checkAsstParam :: Bool -> PType L -> P (S.Type L)-checkAsstParam isSimple t = do- exts <- getExtensions- if FlexibleContexts `elem` exts- then checkType t- else case t of- TyVar l n -> return $ S.TyVar l n- TyApp l pf pt | not isSimple -> do- f <- checkAsstParam isSimple pf- t <- checkType pt- return $ S.TyApp l f t- _ -> fail "Malformed context: FlexibleContexts not enabled"+ ParenA l a -> do+ a' <- checkAsst a+ return $ S.ParenA l a' ----------------------------------------------------------------------------- -- Checking Headers@@ -217,71 +299,97 @@ checkDataHeader :: PType L -> P (Maybe (S.Context L), DeclHead L) checkDataHeader (TyForall _ Nothing cs t) = do- dh <- checkSimple "data/newtype" t []- cs <- checkContext cs- return (cs,dh)+ dh <- checkSimple "data/newtype" t+ cs' <- checkContext cs+ return (cs',dh) checkDataHeader t = do- dh <- checkSimple "data/newtype" t []+ dh <- checkSimple "data/newtype" t return (Nothing,dh) checkClassHeader :: PType L -> P (Maybe (S.Context L), DeclHead L) checkClassHeader (TyForall _ Nothing cs t) = do- dh <- checkSimple "class" t []- cs <- checkSContext cs- return (cs,dh)+ checkMultiParam t+ dh <- checkSimple "class" t+ cs' <- checkSContext cs+ return (cs',dh) checkClassHeader t = do- dh <- checkSimple "class" t []+ checkMultiParam t+ dh <- checkSimple "class" t return (Nothing,dh) -checkSimple :: String -> PType L -> [TyVarBind L] -> P (DeclHead L)-checkSimple kw (TyApp _ l t) xs | isTyVarBind t = checkSimple kw l (toTyVarBind t : xs)-checkSimple _ (TyInfix l t1 (UnQual _ t) t2) []- | isTyVarBind t1 && isTyVarBind t2 =- checkEnabled TypeOperators >> return (DHInfix l (toTyVarBind t1) t (toTyVarBind t2))-checkSimple _kw (TyCon l (UnQual _ t)) xs = do- case t of- Symbol _ _ -> checkEnabled TypeOperators- _ -> return ()- return (DHead l t xs)-checkSimple kw (TyParen l t) xs = do- dh <- checkSimple kw t xs+checkSimple :: String -> PType L -> P (DeclHead L)+--checkSimple kw (TyApp _ l t) xs | isTyVarBind t = checkSimple kw l (toTyVarBind t : xs)++checkSimple kw (TyApp l h t) = do+ tvb <- mkTyVarBind kw t+ h' <- checkSimple kw h+ return $ DHApp l h' tvb+checkSimple kw (TyInfix l t1 mq t2)+ | c@(UnQual _ t) <- getMaybePromotedQName mq+ = do+ checkAndWarnTypeOperators c+ tv1 <- mkTyVarBind kw t1+ tv2 <- mkTyVarBind kw t2+ return $ DHApp l (DHInfix l tv1 t) tv2+checkSimple _kw (TyCon _ c@(UnQual l t)) = do+ checkAndWarnTypeOperators c+ return (DHead l t)+checkSimple kw (TyParen l t) = do+ dh <- checkSimple kw t return (DHParen l dh)-checkSimple kw _ _ = fail ("Illegal " ++ kw ++ " declaration")+checkSimple kw _ = fail ("Illegal " ++ kw ++ " declaration") +mkTyVarBind :: String -> PType L -> P (TyVarBind L)+mkTyVarBind _ (TyVar l n) = return $ UnkindedVar l n+mkTyVarBind _ (TyKind l (TyVar _ n) k) = return $ KindedVar l n k+mkTyVarBind _ (TyCon l c@(UnQual _ n@(Symbol _ _))) = checkAndWarnTypeOperators c >> return (UnkindedVar l n)+mkTyVarBind _ (TyKind l (TyCon _ c@(UnQual _ n@(Symbol _ _))) k) = checkAndWarnTypeOperators c >> return (KindedVar l n k)+mkTyVarBind kw _ = fail ("Illegal " ++ kw ++ " declaration")++{- isTyVarBind :: PType L -> Bool isTyVarBind (TyVar _ _) = True+--isTyVarBind (TyCon _ (UnQual _ n@(Symbol _ _))) = True isTyVarBind (TyKind _ (TyVar _ _) _) = True isTyVarBind _ = False toTyVarBind :: PType L -> TyVarBind L toTyVarBind (TyVar l n) = UnkindedVar l n toTyVarBind (TyKind l (TyVar _ n) k) = KindedVar l n k+-} -checkInstHeader :: PType L -> P (Maybe (S.Context L), InstHead L)-checkInstHeader (TyForall _ Nothing cs t) = do- ih <- checkInsts t []- cs <- checkSContext cs- return (cs, ih)-checkInstHeader t = do- ih <- checkInsts t []- return (Nothing, ih)+checkInstHeader :: PType L -> P (InstRule L)+checkInstHeader (TyParen l t) = checkInstHeader t >>= return . IParen l+checkInstHeader (TyForall l mtvs cs t) = do+ cs' <- checkSContext cs+ checkMultiParam t+ checkInsts (Just l) mtvs cs' t+checkInstHeader t = checkMultiParam t >> checkInsts Nothing Nothing Nothing t -checkInsts :: PType L -> [PType L] -> P (InstHead L)-checkInsts (TyApp _ l t) ts = checkInsts l (t:ts)-checkInsts (TyCon l c) ts = do- when (isSymbol c) $ checkEnabled TypeOperators- ts <- checkTypes ts- return $ IHead l c ts-checkInsts (TyInfix l a op b) [] = do- checkEnabled TypeOperators+checkInsts :: Maybe L -> Maybe [TyVarBind L] -> Maybe (S.Context L) -> PType L -> P (InstRule L)+checkInsts _ mtvs mctxt (TyParen l t) = checkInsts Nothing mtvs mctxt t >>= return . IParen l+checkInsts l1 mtvs mctxt t = do+ t' <- checkInstsGuts t+ return $ IRule (fromMaybe (fmap ann mctxt <?+> ann t') l1) mtvs mctxt t'++checkInstsGuts :: PType L -> P (InstHead L)+checkInstsGuts (TyApp l h t) = do+ t' <- checkType t+ h' <- checkInstsGuts h+ return $ IHApp l h' t'+checkInstsGuts (TyCon l c) = do+ checkAndWarnTypeOperators c+ return $ IHCon l c+checkInstsGuts (TyInfix l a op b) = do+ checkAndWarnTypeOperators (getMaybePromotedQName op) [ta,tb] <- checkTypes [a,b]- return $ IHInfix l ta op tb-checkInsts (TyParen l t) [] = checkInsts t [] >>= return . IHParen l-checkInsts _ _ = fail "Illegal instance declaration"+ return $ IHApp l (IHInfix l ta (getMaybePromotedQName op)) tb+checkInstsGuts (TyParen l t) = checkInstsGuts t >>= return . IHParen l+checkInstsGuts _ = fail "Illegal instance declaration" -checkDeriving :: [PType L] -> P [InstHead L]-checkDeriving = mapM (flip checkInsts [])+checkDeriving :: [PType L] -> P [InstRule L]+checkDeriving = mapM (checkInsts Nothing Nothing Nothing) ----------------------------------------------------------------------------- -- Checking Patterns.@@ -293,27 +401,32 @@ checkPattern e = checkPat e [] checkPat :: PExp L -> [Pat L] -> P (Pat L)-checkPat (Con l c) args = return (PApp l c args)-checkPat (App l f x) args = do- x <- checkPat x []- checkPat f (x:args)+checkPat (Con l c) args = do+ let l' = foldl combSpanInfo l (map ann args)+ return (PApp l' c args)+checkPat (App _ f x) args = do+ x' <- checkPat x []+ checkPat f (x':args) checkPat (InfixApp _ l op r) args- | op =~= (QVarOp () (UnQual () (Symbol () "!"))) = do+ | op =~= QVarOp () (UnQual () (Symbol () "!")) = do -- We must have BangPatterns on checkEnabled BangPatterns let (e,es) = splitBang r [] ps <- mapM checkPattern (BangPat (ann op) e:es) checkPat l (ps++args)-checkPat e [] = case e of- Var l (UnQual _ x) -> return (PVar l x)- Lit l lit -> return (PLit l lit)+checkPat e' [] = case e' of+ Var _ (UnQual l x) -> return (PVar l x)+ Var _ (Special l (ExprHole _)) -> return (PWildCard l)+ Lit l lit -> return (PLit l (Signless l2) lit)+ where l2 = noInfoSpan . srcInfoSpan $ l InfixApp loc l op r -> case op of QConOp _ c -> do- l <- checkPat l []- r <- checkPat r []- return (PInfixApp loc l c r)+ l' <- checkPat l []+ r' <- checkPat r []+ return (PInfixApp loc l' c r') QVarOp ppos (UnQual _ (Symbol _ "+")) -> do+ checkEnabled NPlusKPatterns case (l,r) of (Var _ (UnQual _ n@(Ident _ _)), Lit _ (Int kpos k _)) -> do let pp = srcInfoSpan ppos@@ -321,11 +434,13 @@ return (PNPlusK (loc <** [pp,kp]) n k) _ -> patFail "" _ -> patFail ""- TupleSection l mes ->- if not (any ((==) Nothing) mes)+ TupleSection l bx mes ->+ if Nothing `notElem` mes then do ps <- mapM (\e -> checkPat e []) (map fromJust mes)- return (PTuple l ps)+ return (PTuple l bx ps) else fail "Illegal tuple section in pattern"+ UnboxedSum l b a e ->+ PUnboxedSum l b a <$> checkPattern e List l es -> do ps <- mapM checkRPattern es@@ -340,8 +455,8 @@ isStdPat _ = False stripRP :: RPat L -> Pat L stripRP (RPPat _ p) = p- stripRP (RPAs l n p) = PAsPat l n (stripRP p)- stripRP (RPParen l p) = PParen l (stripRP p)+ stripRP (RPAs l' n p) = PAsPat l' n (stripRP p)+ stripRP (RPParen l' p) = PParen l' (stripRP p) stripRP _ = error "cannot strip RP wrapper if not all patterns are base" Paren l e -> do@@ -355,13 +470,17 @@ p <- checkPat e [] return (PIrrPat l p) ViewPat l e p -> do- e <- checkExpr e- p <- checkPat p []- return (PViewPat l e p)+ e1 <- checkExpr e+ return (PViewPat l e1 p) RecConstr l c fs -> do- fs <- mapM checkPatField fs- return (PRec l c fs)- NegApp l1 (Lit l2 lit) -> return (PNeg l1 (PLit l2 lit))+ fs' <- mapM checkPatField fs+ return (PRec l c fs')+ NegApp l (Lit _ lit) ->+ let siSign = last . srcInfoPoints $ l+ lSign = infoSpan siSign [siSign]+ in do+ when (not . isNegatableLiteral $ lit) (patFail $ prettyPrint e')+ return (PLit l (Negative lSign) lit) ExpTypeSig l e t -> do -- patterns cannot have signatures unless ScopedTypeVariables is enabled. checkEnabled ScopedTypeVariables@@ -393,10 +512,8 @@ rps <- mapM checkRPattern es return (PXRPats l $ map fixRPOpPrec rps) - -- Generics- ExplTypeArg l qn t -> return $ PExplTypeArg l qn t-- -- QuasiQuotation+ -- Template Haskell+ SpliceExp l e -> return $ PSplice l e QuasiQuote l n q -> return $ PQuasiQuote l n q -- BangPatterns@@ -413,6 +530,14 @@ checkPat e _ = patFail $ prettyPrint e +isNegatableLiteral :: Literal a -> Bool+isNegatableLiteral (Int _ _ _) = True+isNegatableLiteral (Frac _ _ _) = True+isNegatableLiteral (PrimInt _ _ _) = True+isNegatableLiteral (PrimFloat _ _ _) = True+isNegatableLiteral (PrimDouble _ _ _) = True+isNegatableLiteral _ = False+ splitBang :: PExp L -> [PExp L] -> (PExp L, [PExp L]) splitBang (App _ f x) es = splitBang f (x:es) splitBang e es = (e, es)@@ -432,7 +557,7 @@ patFail s = fail $ "Parse error in pattern: " ++ s checkRPattern :: PExp L -> P (RPat L)-checkRPattern e = case e of+checkRPattern e' = case e' of SeqRP l es -> do rps <- mapM checkRPattern es return $ RPSeq l rps@@ -457,7 +582,7 @@ rp <- checkRPattern e return $ RPParen l rp _ -> do- p <- checkPattern e+ p <- checkPattern e' return $ RPPat (ann p) p checkRPatOp :: QOp L -> P (RPatOp L)@@ -472,17 +597,18 @@ _ -> rpOpFail o checkRPatOp o = rpOpFail o +rpOpFail :: Pretty a => a -> P b rpOpFail sym = fail $ "Unrecognized regular pattern operator: " ++ prettyPrint sym fixRPOpPrec :: RPat L -> RPat L-fixRPOpPrec rp = case rp of+fixRPOpPrec rp' = case rp' of RPOp l rp rpop -> fPrecOp rp (flip (RPOp l) rpop) RPEither l rp1 rp2 -> RPEither l (fixRPOpPrec rp1) (fixRPOpPrec rp2) RPSeq l rps -> RPSeq l $ map fixRPOpPrec rps RPCAs l n rp -> RPCAs l n $ fixRPOpPrec rp RPAs l n rp -> RPAs l n $ fixRPOpPrec rp RPParen l rp -> RPParen l $ fixRPOpPrec rp- _ -> rp+ _ -> rp' where fPrecOp :: RPat L -> (RPat L -> RPat L) -> RPat L fPrecOp (RPOp l rp rpop) f = fPrecOp rp (f . flip (RPOp l) rpop)@@ -496,7 +622,7 @@ mkChildrenPat :: [Pat L] -> [Pat L]-mkChildrenPat ps = mkCPAux ps []+mkChildrenPat ps' = mkCPAux ps' [] where mkCPAux :: [Pat L] -> [Pat L] -> [Pat L] mkCPAux [] qs = reverse qs mkCPAux (p:ps) qs = case p of@@ -513,55 +639,66 @@ -- Check Expression Syntax checkExpr :: PExp L -> P (S.Exp L)-checkExpr e = case e of+checkExpr e' = case e' of Var l v -> return $ S.Var l v+ OverloadedLabel l v -> return $ S.OverloadedLabel l v IPVar l v -> return $ S.IPVar l v Con l c -> return $ S.Con l c Lit l lit -> return $ S.Lit l lit InfixApp l e1 op e2 -> check2Exprs e1 e2 (flip (S.InfixApp l) op) App l e1 e2 -> check2Exprs e1 e2 (S.App l)+ NegApp _ (Lit _ (PrimWord _ _ _))+ -> fail $ "Parse error: negative primitive word literal: " ++ prettyPrint e' NegApp l e -> check1Expr e (S.NegApp l) Lambda loc ps e -> check1Expr e (S.Lambda loc ps) Let l bs e -> check1Expr e (S.Let l bs) If l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.If l)+ MultiIf l alts -> return (S.MultiIf l alts) Case l e alts -> do- e <- checkExpr e- return (S.Case l e alts)+ e1 <- checkExpr e+ return (S.Case l e1 alts) Do l stmts -> checkDo stmts >> return (S.Do l stmts) MDo l stmts -> checkDo stmts >> return (S.MDo l stmts)- TupleSection l mes -> if not (any ((==) Nothing) mes)- then checkManyExprs (map fromJust mes) (S.Tuple l)- else do checkEnabled TupleSections- mes' <- mapM mCheckExpr mes- return $ S.TupleSection l mes'+ TupleSection l bx mes -> if Nothing `notElem` mes+ then checkManyExprs (map fromJust mes) (S.Tuple l bx)+ else do checkEnabled TupleSections+ mes' <- mapM mCheckExpr mes+ return $ S.TupleSection l bx mes'+ UnboxedSum l before after e -> S.UnboxedSum l before after <$> checkExpr e List l es -> checkManyExprs es (S.List l)+ ParArray l es -> checkManyExprs es (S.ParArray l) -- Since we don't parse things as left or right sections, we need to mangle them into that. Paren l e -> case e of PostOp _ e1 op -> check1Expr e1 (flip (S.LeftSection l) op) PreOp _ op e2 -> check1Expr e2 (S.RightSection l op) _ -> check1Expr e (S.Paren l) RecConstr l c fields -> do- fields <- mapM checkField fields- return (S.RecConstr l c fields)+ fields1 <- mapM checkField fields+ return (S.RecConstr l c fields1) RecUpdate l e fields -> do- fields <- mapM checkField fields- e <- checkExpr e- return (S.RecUpdate l e fields)+ fields1 <- mapM checkField fields+ e1 <- checkExpr e+ return (S.RecUpdate l e1 fields1) EnumFrom l e -> check1Expr e (S.EnumFrom l) EnumFromTo l e1 e2 -> check2Exprs e1 e2 (S.EnumFromTo l) EnumFromThen l e1 e2 -> check2Exprs e1 e2 (S.EnumFromThen l) EnumFromThenTo l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.EnumFromThenTo l)+ ParArrayFromTo l e1 e2 -> check2Exprs e1 e2 (S.ParArrayFromTo l)+ ParArrayFromThenTo l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.ParArrayFromThenTo l) -- a parallel list comprehension, which could be just a simple one ParComp l e qualss -> do- e <- checkExpr e+ e1 <- checkExpr e case qualss of- [quals] -> return (S.ListComp l e quals)- _ -> return (S.ParComp l e qualss)+ [quals] -> return (S.ListComp l e1 quals)+ _ -> return (S.ParComp l e1 qualss)+ ParArrayComp l e qualss -> do+ e1 <- checkExpr e+ return (S.ParArrayComp l e1 qualss) ExpTypeSig loc e ty -> do- e <- checkExpr e- return (S.ExpTypeSig loc e ty)+ e1 <- checkExpr e+ return (S.ExpTypeSig loc e1 ty) --Template Haskell BracketExp l e -> return $ S.BracketExp l e@@ -571,22 +708,22 @@ QuasiQuote l n q -> return $ S.QuasiQuote l n q -- Hsx- XTag l n attrs mattr cs -> do attrs <- mapM checkAttr attrs- cs <- mapM checkExpr cs- mattr <- maybe (return Nothing)+ XTag l n attrs mattr cs -> do attrs1 <- mapM checkAttr attrs+ cs1 <- mapM checkExpr cs+ mattr1 <- maybe (return Nothing) (\e -> checkExpr e >>= return . Just) mattr- return $ S.XTag l n attrs mattr cs- XETag l n attrs mattr -> do attrs <- mapM checkAttr attrs- mattr <- maybe (return Nothing)+ return $ S.XTag l n attrs1 mattr1 cs1+ XETag l n attrs mattr -> do attrs1 <- mapM checkAttr attrs+ mattr1 <- maybe (return Nothing) (\e -> checkExpr e >>= return . Just) mattr- return $ S.XETag l n attrs mattr+ return $ S.XETag l n attrs1 mattr1 XPcdata l p -> return $ S.XPcdata l p- XExpTag l e -> do e <- checkExpr e- return $ S.XExpTag l e- XChildTag l es -> do es <- mapM checkExpr es- return $ S.XChildTag l es+ XExpTag l e -> do e1 <- checkExpr e+ return $ S.XExpTag l e1+ XChildTag l es -> do es1 <- mapM checkExpr es+ return $ S.XChildTag l es1 -- Pragmas CorePragma l s e -> check1Expr e (S.CorePragma l s) SCCPragma l s e -> check1Expr e (S.SCCPragma l s)@@ -594,19 +731,27 @@ -- UnknownExpPragma n s -> return $ S.UnknownExpPragma n s -- Arrows- Proc l p e -> do e <- checkExpr e- return $ S.Proc l p e+ Proc l p e -> do e1 <- checkExpr e+ return $ S.Proc l p e1 LeftArrApp l e1 e2 -> check2Exprs e1 e2 (S.LeftArrApp l) 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 - _ -> fail $ "Parse error in expression: " ++ prettyPrint e+ -- LamdaCase+ LCase l alts -> return $ S.LCase l alts + -- Hole+ TypeApp l ty -> return $ S.TypeApp l ty++ _ -> fail $ "Parse error in expression: " ++ prettyPrint e'+ checkAttr :: ParseXAttr L -> P (S.XAttr L)-checkAttr (XAttr l n v) = do v <- checkExpr v- return $ S.XAttr l n v+checkAttr (XAttr l n v) = do v' <- checkExpr v+ return $ S.XAttr l n v' +checkDo :: [Stmt t] -> P () checkDo [] = fail "Parse error: Last statement in a do-block must be an expression" checkDo [Qualifier _ _] = return () checkDo (_:xs) = checkDo xs@@ -614,26 +759,26 @@ -- type signature for polymorphic recursion!! check1Expr :: PExp L -> (S.Exp L -> a) -> P a check1Expr e1 f = do- e1 <- checkExpr e1- return (f e1)+ e1' <- checkExpr e1+ return (f e1') check2Exprs :: PExp L -> PExp L -> (S.Exp L -> S.Exp L -> a) -> P a check2Exprs e1 e2 f = do- e1 <- checkExpr e1- e2 <- checkExpr e2- return (f e1 e2)+ e1' <- checkExpr e1+ e2' <- checkExpr e2+ return (f e1' e2') check3Exprs :: PExp L -> PExp L -> PExp L -> (S.Exp L -> S.Exp L -> S.Exp L -> a) -> P a check3Exprs e1 e2 e3 f = do- e1 <- checkExpr e1- e2 <- checkExpr e2- e3 <- checkExpr e3- return (f e1 e2 e3)+ e1' <- checkExpr e1+ e2' <- checkExpr e2+ e3' <- checkExpr e3+ return (f e1' e2' e3') checkManyExprs :: [PExp L] -> ([S.Exp L] -> a) -> P a checkManyExprs es f = do- es <- mapM checkExpr es- return (f es)+ es' <- mapM checkExpr es+ return (f es') mCheckExpr :: Maybe (PExp L) -> P (Maybe (S.Exp L)) mCheckExpr Nothing = return Nothing@@ -665,7 +810,7 @@ ----------------------------------------------------------------------------- -- Check Equation Syntax -checkValDef :: L -> PExp L -> Maybe (S.Type L) -> Rhs L -> Maybe (Binds L) -> P (Decl L)+checkValDef :: L -> PExp L -> Maybe (S.Type L, S) -> Rhs L -> Maybe (Binds L) -> P (Decl L) checkValDef l lhs optsig rhs whereBinds = do mlhs <- isFunLhs lhs [] let whpt = srcInfoPoints l@@ -676,32 +821,40 @@ case optsig of -- only pattern bindings can have signatures Nothing -> return (FunBind l $ if b then [Match l' f ps rhs whereBinds]- else let (a:bs) = ps + else let (a:bs) = ps in [InfixMatch l' a f bs rhs whereBinds]) Just _ -> fail "Cannot give an explicit type signature to a function binding" Nothing -> do- lhs <- checkPattern lhs- return (PatBind l lhs optsig rhs whereBinds)+ lhs1 <- checkPattern lhs+ let lhs' = case optsig of+ Nothing -> lhs1+ Just (ty, pt) -> let lp = (ann lhs1 <++> ann ty) <** [pt]+ in PatTypeSig lp lhs1 ty+ return (PatBind l lhs' rhs whereBinds) -- A variable binding is parsed as a PatBind. isFunLhs :: PExp L -> [PExp L] -> P (Maybe (Name L, [PExp L], Bool, [S]))-isFunLhs (InfixApp ll l (QVarOp loc (UnQual _ op)) r) es- | op =~= (Symbol () "!") = do+isFunLhs (InfixApp _ l (QVarOp loc (UnQual _ op)) r) es+ | op =~= Symbol () "!" = do exts <- getExtensions if BangPatterns `elem` exts then let (b,bs) = splitBang r []- in isFunLhs l (BangPat loc b : bs ++ es)+ loc' = combSpanInfo loc (ann b)+ in isFunLhs l (BangPat loc' b : bs ++ es) else return $ Just (op, l:r:es, False, []) -- It's actually a definition of the operator !- | otherwise = return $ Just (op, l:r:es, False, [])-isFunLhs (App _ (Var _ (UnQual _ f)) e) es = return $ Just (f, e:es, True, [])+ | otherwise =+ let infos = srcInfoPoints loc+ op' = amap (\s -> s { srcInfoPoints = infos }) op+ in (return $ Just (op', l:r:es, False, []))+isFunLhs (App _ (Var l (UnQual _ f)) e) es = return $ Just (f, e:es, True, srcInfoPoints l) isFunLhs (App _ f e) es = isFunLhs f (e:es) isFunLhs (Var _ (UnQual _ f)) es@(_:_) = return $ Just (f, es, True, [])-isFunLhs (Paren l f) es@(_:_) = do mlhs <- isFunLhs f es +isFunLhs (Paren l f) es@(_:_) = do mlhs <- isFunLhs f es case mlhs of- Just (f,es,b,pts) -> + Just (f',es',b,pts) -> let [x,y] = srcInfoPoints l- in return $ Just (f,es,b,x:pts++[y])+ in return $ Just (f',es',b,x:pts++[y]) _ -> return Nothing isFunLhs _ _ = return Nothing @@ -709,9 +862,22 @@ -- a post-processing step checkSigVar :: PExp L -> P (Name L)-checkSigVar (Var _ (UnQual _ n)) = return n+checkSigVar (Var _ (UnQual l n)) = return $ fmap (const l) n checkSigVar e = fail $ "Left-hand side of type signature is not a variable: " ++ prettyPrint e +checkExplicitPatSyn :: S -> S -> ([Decl L], [S]) -> S -> P (PatternSynDirection L)+checkExplicitPatSyn whereLoc openLoc (decls, semis) closeLoc =+ let l = whereLoc <^^> closeLoc <** ([whereLoc, openLoc] ++ semis ++ [closeLoc])+ in S.ExplicitBidirectional l <$> mapM checkDecls decls+ where+ checkDecls :: Decl L -> P (Decl L)+ checkDecls p@(PatBind _ pat _ _) =+ case pat of+ PApp _ _ _ -> return p+ PInfixApp _ _ _ _ -> return p+ _ -> fail "Illegal pattern binding in PatternSynonym"+ checkDecls _ = fail "pattern synonym 'where' clause must contain a PatBind"+ ----------------------------------------------------------------------------- -- In a class or instance body, a pattern binding must be of a variable. @@ -730,20 +896,33 @@ checkInstMethodDef _ = return () checkMethodDef :: Decl L -> P ()-checkMethodDef (PatBind _ (PVar _ _) _ _ _) = return ()-checkMethodDef (PatBind loc _ _ _ _) =- fail "illegal method definition" -- `atSrcLoc` loc+checkMethodDef (PatBind _ (PVar _ _) _ _) = return ()+checkMethodDef (PatBind loc _ _ _) =+ fail "illegal method definition" `atSrcLoc` fromSrcInfo loc checkMethodDef _ = return () +checkDefSigDef :: Decl L -> P (Name L,S.Type L,S)+checkDefSigDef (TypeSig loc [name] typ) =+ let (b:_) = srcInfoPoints loc in return (name,typ,b)+checkDefSigDef (TypeSig _ _ _) =+ fail "default signature must be for a single name"+checkDefSigDef _ =+ fail "default signature must be a type signature"+ ----------------------------------------------------------------------------- -- Check that an identifier or symbol is unqualified. -- For occasions when doing this in the grammar would cause conflicts. checkUnQual :: QName L -> P (Name L) checkUnQual (Qual _ _ _) = fail "Illegal qualified name"-checkUnQual (UnQual _ n) = return n+checkUnQual (UnQual l n) = return $ fmap (const l) n checkUnQual (Special _ _) = fail "Illegal special name" +checkQualOrUnQual :: QName L -> P (QName L)+checkQualOrUnQual n@(Qual _ _ _) = return n+checkQualOrUnQual n@(UnQual _ _) = return n+checkQualOrUnQual (Special _ _) = fail "Illegal special name"+ ----------------------------------------------------------------------------- -- Check that two xml tag names are equal checkEqNames :: XName L -> XName L -> P (XName L)@@ -754,8 +933,8 @@ checkEqNames n m = fail $ "opening tag '" ++ showTag n ++ "' does not match closing tag '" ++ showTag m ++ "'" where- showTag (XName _ n) = n- showTag (XDomName _ d n) = d ++ ":" ++ n+ showTag (XName _ n') = n'+ showTag (XDomName _ d n') = d ++ ":" ++ n' -----------------------------------------------------------------------------@@ -763,14 +942,30 @@ checkPrec :: Integer -> P Int checkPrec i | 0 <= i && i <= 9 = return (fromInteger i)-checkPrec i | otherwise = fail ("Illegal precedence " ++ show i)+ | otherwise = fail ("Illegal precedence " ++ show i) mkRecConstrOrUpdate :: PExp L -> [PFieldUpdate L] -> P (PExp L) mkRecConstrOrUpdate (Con l c) fs = return (RecConstr l c fs) mkRecConstrOrUpdate e fs@(_:_) = return (RecUpdate (ann e) e fs) mkRecConstrOrUpdate _ _ = fail "Empty record update" +updateQNameLoc :: l -> QName l -> QName l+updateQNameLoc l (Qual _ mn n) = Qual l mn n+updateQNameLoc l (UnQual _ n) = UnQual l n+updateQNameLoc l (Special _ s) = Special l s+ -----------------------------------------------------------------------------+-- For standalone top level Decl parser, check that we actually only+-- parsed one Decl. This is needed since we parse matches of the same+-- FunBind as multiple separate declarations, and merge them after.+-- This should be called *after* checkRevDecls.++checkSingleDecl :: [Decl L] -> P (Decl L)+checkSingleDecl [d] = return d+checkSingleDecl ds =+ fail $ "Expected a single declaration, found " ++ show (length ds)++ -- Reverse a list of declarations, merging adjacent FunBinds of the -- same name and checking that their arities match. @@ -778,19 +973,20 @@ checkRevDecls = mergeFunBinds [] where mergeFunBinds revDs [] = return revDs- mergeFunBinds revDs (FunBind l ms1@(Match _ name ps _ _:_):ds1) =- mergeMatches ms1 ds1 l+ mergeFunBinds revDs (FunBind l' ms1@(Match _ name ps _ _:_):ds1) =+ mergeMatches ms1 ds1 l' where arity = length ps mergeMatches ms' (FunBind _ ms@(Match loc name' ps' _ _:_):ds) l- | name' =~= name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- -- `atSrcLoc` loc- else mergeMatches (ms++ms') ds (loc <++> l)+ | name' =~= name = do+ ignoreArity <- getIgnoreFunctionArity+ if length ps' == arity || ignoreArity+ then mergeMatches (ms++ms') ds (loc <++> l)+ else fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+ `atSrcLoc` fromSrcInfo loc mergeMatches ms' ds l = mergeFunBinds (FunBind l ms':revDs) ds- mergeFunBinds revDs (FunBind l ims1@(InfixMatch _ _ name _ _ _:_):ds1) =- mergeInfix ims1 ds1 l+ mergeFunBinds revDs (FunBind l' ims1@(InfixMatch _ _ name _ _ _:_):ds1) =+ mergeInfix ims1 ds1 l' where mergeInfix ims' (FunBind _ ims@(InfixMatch loc _ name' _ _ _:_):ds) l | name' =~= name =@@ -802,19 +998,20 @@ checkRevClsDecls = mergeClsFunBinds [] where mergeClsFunBinds revDs [] = return revDs- mergeClsFunBinds revDs (ClsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =- mergeMatches ms1 ds1 l+ mergeClsFunBinds revDs (ClsDecl l' (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =+ mergeMatches ms1 ds1 l' where arity = length ps mergeMatches ms' (ClsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l- | name' =~= name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- -- `atSrcLoc` loc- else mergeMatches (ms++ms') ds (loc <++> l)+ | name' =~= name = do+ ignoreArity <- getIgnoreFunctionArity+ if length ps' == arity || ignoreArity+ then mergeMatches (ms++ms') ds (loc <++> l)+ else fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+ `atSrcLoc` fromSrcInfo loc mergeMatches ms' ds l = mergeClsFunBinds (ClsDecl l (FunBind l ms'):revDs) ds- mergeClsFunBinds revDs (ClsDecl l (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =- mergeInfix ims1 ds1 l+ mergeClsFunBinds revDs (ClsDecl l' (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =+ mergeInfix ims1 ds1 l' where mergeInfix ims' (ClsDecl _ (FunBind _ ims@(InfixMatch loc _ name' _ _ _:_)):ds) l | name' =~= name =@@ -827,19 +1024,20 @@ where mergeInstFunBinds :: [InstDecl L] -> [InstDecl L] -> P [InstDecl L] mergeInstFunBinds revDs [] = return revDs- mergeInstFunBinds revDs (InsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =- mergeMatches ms1 ds1 l+ mergeInstFunBinds revDs (InsDecl l' (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =+ mergeMatches ms1 ds1 l' where arity = length ps mergeMatches ms' (InsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l- | name' =~= name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- -- `atSrcLoc` loc- else mergeMatches (ms++ms') ds (loc <++> l)+ | name' =~= name = do+ ignoreArity <- getIgnoreFunctionArity+ if length ps' == arity || ignoreArity+ then mergeMatches (ms++ms') ds (loc <++> l)+ else fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+ `atSrcLoc` fromSrcInfo loc mergeMatches ms' ds l = mergeInstFunBinds (InsDecl l (FunBind l ms'):revDs) ds- mergeInstFunBinds revDs (InsDecl l (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =- mergeInfix ims1 ds1 l+ mergeInstFunBinds revDs (InsDecl l' (FunBind _ ims1@(InfixMatch _ _ name _ _ _:_)):ds1) =+ mergeInfix ims1 ds1 l' where mergeInfix ims' (InsDecl _ (FunBind _ ims@(InfixMatch loc _ name' _ _ _:_)):ds) l | name' =~= name =@@ -861,45 +1059,73 @@ checkDataOrNewG :: DataOrNew L -> [GadtDecl L] -> P () checkDataOrNewG (DataType _) _ = return ()-checkDataOrNewG (NewType _) [x] = return ()+checkDataOrNewG (NewType _) [_] = return () checkDataOrNewG _ _ = fail "newtype declaration must have exactly one constructor." checkSimpleType :: PType L -> P (DeclHead L)-checkSimpleType t = checkSimple "test" t []+checkSimpleType = checkSimple "test" --------------------------------------- -- Check actual types +-- | Add a strictness/unpack annotation on a type.+bangType :: Maybe (L -> BangType L, S) -> Maybe (Unpackedness L) -> PType L -> PType L+bangType mstrict munpack ty =+ case (mstrict,munpack) of+ (Nothing, Just upack) -> TyBang (ann upack <++> ann ty) (NoStrictAnnot noSrcSpan) upack ty+ (Just (strict, pos), _) ->+ TyBang (fmap ann munpack <?+> noInfoSpan pos <++> ann ty) (strict (noInfoSpan pos))+ (fromMaybe (NoUnpackPragma noSrcSpan) munpack) ty+ (Nothing, Nothing) -> ty++ checkType :: PType L -> P (S.Type L) checkType t = checkT t False checkT :: PType L -> Bool -> P (S.Type L) checkT t simple = case t of- TyForall l tvs@Nothing cs pt -> do- when (simple) $ checkEnabled ExplicitForall+ TyForall l Nothing cs pt -> do+ when simple $ checkEnabled ExplicitForAll ctxt <- checkContext cs check1Type pt (S.TyForall l Nothing ctxt) TyForall l tvs cs pt -> do- checkEnabled ExplicitForall+ checkEnabled ExplicitForAll ctxt <- checkContext cs check1Type pt (S.TyForall l tvs ctxt)+ TyStar l -> return $ S.TyStar l TyFun l at rt -> check2Types at rt (S.TyFun l) TyTuple l b pts -> checkTypes pts >>= return . S.TyTuple l b+ TyUnboxedSum l es -> checkTypes es >>= return . S.TyUnboxedSum l TyList l pt -> check1Type pt (S.TyList l)+ TyParArray l pt -> check1Type pt (S.TyParArray l) TyApp l ft at -> check2Types ft at (S.TyApp l) TyVar l n -> return $ S.TyVar l n TyCon l n -> do- when (isSymbol n) $ checkEnabled TypeOperators+ checkAndWarnTypeOperators n return $ S.TyCon l n TyParen l pt -> check1Type pt (S.TyParen l) -- Here we know that t will be used as an actual type (and not a data constructor) -- so we can check that TypeOperators are enabled.- TyInfix l at op bt -> checkEnabled TypeOperators >> check2Types at bt (flip (S.TyInfix l) op)+ TyInfix l at op bt -> checkAndWarnTypeOperators (getMaybePromotedQName op)+ >> check2Types at bt (flip (S.TyInfix l) op) TyKind l pt k -> check1Type pt (flip (S.TyKind l) k) - -- TyPred cannot be a valid type+ TyPromoted l p -> return $ S.TyPromoted l p -- ??+ TyEquals l at bt -> check2Types at bt (S.TyEquals l)+ TySplice l s -> do+ checkEnabled TemplateHaskell+ return $ S.TySplice l s+ TyBang l b u t' -> check1Type t' (S.TyBang l b u)+ TyWildCard l mn -> return $ S.TyWildCard l mn+ TyQuasiQuote l n s -> do+ checkEnabled QuasiQuotes+ return $ S.TyQuasiQuote l n s _ -> fail $ "Parse error in type: " ++ prettyPrint t +getMaybePromotedQName :: MaybePromotedName l -> QName l+getMaybePromotedQName (PromotedName _ q) = q+getMaybePromotedQName (UnpromotedName _ q) = q+ check1Type :: PType L -> (S.Type L -> S.Type L) -> P (S.Type L) check1Type pt f = checkT pt True >>= return . f @@ -909,36 +1135,177 @@ checkTypes :: [PType L] -> P [S.Type L] checkTypes = mapM (flip checkT True) +checkTyVar :: Name L -> P (PType L)+checkTyVar n = do+ e <- getExtensions+ return $+ case n of+ Ident il ('_':ident) | NamedWildCards `elem` e ->+ TyWildCard il (Just (Ident (reduceSrcSpanInfo il) ident))+ _ ->+ TyVar (ann n) n+ where+ -- Reduces the length of the SrcSpanInfo by 1 so that it just covers the identifier.+ reduceSrcSpanInfo spaninfo =+ let ss = srcInfoSpan spaninfo+ ss' = ss { srcSpanStartColumn = srcSpanStartColumn ss + 1 }+ in spaninfo { srcInfoSpan = ss' } ---------------------------------------+-- Check kinds++-- ConstraintKinds allow the kind "Constraint", but not "Nat", etc. Specifically+-- test for that.+checkKind :: Kind l -> P ()+checkKind k = case k of+ S.TyVar _ q | constrKind q -> checkEnabledOneOf [ConstraintKinds, DataKinds]+ where constrKind name = case name of+ Ident _ n -> n == "Constraint"+ _ -> False++ _ -> checkEnabled DataKinds++--------------------------------------- -- Converting a complete page checkPageModule :: PExp L -> ([ModulePragma L],[S],L) -> P (Module L) checkPageModule xml (os,ss,inf) = do mod <- getModuleName- xml <- checkExpr xml- case xml of+ xml' <- checkExpr xml+ case xml' of S.XTag l xn ats mattr cs -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) (ModuleName l mod) os xn ats mattr cs S.XETag l xn ats mattr -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) (ModuleName l mod) os xn ats mattr []+ _ -> fail "Unexpected expression; tag is expected" checkHybridModule :: PExp L -> Module L -> S -> S -> P (Module L) checkHybridModule xml (Module inf mh os is ds) s1 s2 = do- xml <- checkExpr xml- case xml of+ xml' <- checkExpr xml+ case xml' of S.XTag l xn ats mattr cs -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l)) mh os is ds xn ats mattr cs S.XETag l xn ats mattr -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l)) mh os is ds xn ats mattr []+ _ -> fail "Unexpected expression; tag is expected"+checkHybridModule _ _ _ _ = fail "Hybrid module expected" --------------------------------------- -- Handle dash-identifiers mkDVar :: [String] -> String-mkDVar = concat . intersperse "-"+mkDVar = intercalate "-" ------------------------------------------ Combine adjacent for-alls. NO!+-- Combine adjacent for-alls. -- -- A valid type must have one for-all at the top of the type, or of the fn arg types mkTyForall :: L -> Maybe [TyVarBind L] -> Maybe (PContext L) -> PType L -> PType L-mkTyForall l mtvs ctxt ty = TyForall l mtvs ctxt ty+mkTyForall l mtvs ctxt ty =+ case (ctxt, ty) of+ (Nothing, TyForall _ Nothing ctxt2 ty2) -> TyForall l mtvs ctxt2 ty2+ _ -> TyForall l mtvs ctxt ty++-- Make a role annotation++mkRoleAnnotDecl :: S -> S -> QName L -> [(Maybe String, L)] -> P (Decl L)+mkRoleAnnotDecl l1 l2 tycon roles+ = do roles' <- mapM parse_role roles+ return (RoleAnnotDecl loc' tycon roles')+ where+ loc' =+ case roles of+ [] -> (l1 <^^> l2 <++> ann tycon) <** [l1, l2]+ _ -> (l1 <^^> l2 <++> ann tycon <++> foldl1 (<++>) (map snd roles)) <** [l1, l2]+ possible_roles = [ ("phantom", S.Phantom)+ , ("representational", S.Representational)+ , ("nominal", S.Nominal)]++ parse_role (Nothing, loc_role) = return $ S.RoleWildcard loc_role+ parse_role (Just role, loc_role)+ = case lookup role possible_roles of+ Just found_role -> return $ found_role loc_role+ Nothing ->+ fail ("Illegal role name " ++ role)+++++mkAssocType :: S -> PType L -> (Maybe (ResultSig L), Maybe (S, S.Type L), Maybe (InjectivityInfo L)) -> P (ClassDecl L)+mkAssocType tyloc ty (mres, mty, minj) =+ case (mres,mty, minj) of+ -- No additional information+ (Nothing, Nothing, Nothing) -> do+ dh <- checkSimpleType ty+ return $ ClsTyFam (noInfoSpan tyloc <++> ann ty) dh Nothing Nothing+ -- Type default+ (_, Just (eqloc, rhsty), Nothing) -> do+ ty' <- checkType ty+ let tyeq = TypeEqn (ann ty <++> ann rhsty <** [eqloc]) ty' rhsty+ return $ ClsTyDef (noInfoSpan tyloc <++> ann ty <** [tyloc]) tyeq+ -- Declaration with kind sig+ (Just ressig, _, _) -> do+ dh <- checkSimpleType ty+ return $ ClsTyFam (noInfoSpan tyloc <++> ann ressig <** [tyloc]) dh (Just ressig) Nothing+ -- Decl with inj info+ (Nothing, Just (eqloc, rhsty), Just injinfo) -> do+ ressig <- checkKTyVar eqloc rhsty+ dh <- checkSimpleType ty+ return $ ClsTyFam (noInfoSpan tyloc <++> ann injinfo <** [tyloc]) dh (Just ressig) minj+ _ -> error "mkAssocType"++ where+ checkKTyVar :: S -> S.Type L -> P (ResultSig L)+ checkKTyVar eqloc rhsty =+ case rhsty of+ S.TyVar l n -> return $ TyVarSig (noInfoSpan eqloc <++> l <** [eqloc]) (UnkindedVar l n)+ S.TyKind l (S.TyVar _ n) k -> return $ TyVarSig (noInfoSpan eqloc <++> l <** [eqloc]) (KindedVar l n k)+ _ -> fail ("Result of type family must be a type variable")++-- | Transform btype with strict_mark's into HsEqTy's+-- (((~a) ~b) c) ~d ==> ((~a) ~ (b c)) ~ d+splitTilde :: PType L -> PType L+splitTilde t = go t+ where go (TyApp loc t1 t2)+ | TyBang _ (LazyTy eqloc) (NoUnpackPragma _) t2' <- t2+ = TyEquals (loc <** [srcInfoSpan eqloc]) (go t1) t2'+ | otherwise+ = case go t1 of+ TyEquals eqloc tl tr ->+ TyEquals (eqloc <++> ann t2 <** srcInfoPoints eqloc) tl (TyApp (ann tr <++> ann t2) tr t2)+ t' -> TyApp loc t' t2++ go t' = t'++-- Expects the arguments in the right order+mkEThingWith :: L -> QName L -> [Either S (CName L)] -> P (ExportSpec L)+mkEThingWith loc qn mcns = do+ when (isWc wc && not (null cnames)) (checkEnabled PatternSynonyms)+ return $ EThingWith loc wc qn cnames+ where+ isWc (NoWildcard {}) = False+ isWc _ = True++ wc :: EWildcard L+ wc = maybe (NoWildcard noSrcSpan)+ (\(n,Left s) -> EWildcard (noInfoSpan s) n)+ (findWithIndex 0 checkLeft mcns)++ checkLeft :: Either a b -> Bool+ checkLeft (Left _) = True+ checkLeft _ = False++ cnames = rights mcns++ findWithIndex :: Int -> (a -> Bool) -> [a] -> Maybe (Int, a)+ findWithIndex _ _ [] = Nothing+ findWithIndex n p (x:xs)+ | p x = Just (n, x)+ | otherwise = findWithIndex (n + 1) p xs++data SumOrTuple l = SSum Int Int (PExp l)+ | STuple [Maybe (PExp l)]++mkSumOrTuple :: Boxed -> L -> SumOrTuple L -> P (PExp L)+mkSumOrTuple Unboxed s (SSum before after e) = return (UnboxedSum s before after e)+mkSumOrTuple boxity s (STuple ms) =+ return $ TupleSection s boxity ms+mkSumOrTuple Boxed _s (SSum {}) = fail "Boxed sums are not implemented"
src/Language/Haskell/Exts/Parser.hs view
@@ -1,174 +1,259 @@-module Language.Haskell.Exts.Parser - ( - -- * General parsing - Parseable(..), - ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult, - -- * Parsing of specific AST elements - -- ** Modules - parseModule, parseModuleWithMode, parseModuleWithComments, - -- ** Expressions - parseExp, parseExpWithMode, parseExpWithComments, - -- ** Statements - parseStmt, parseStmtWithMode, parseStmtWithComments, - -- ** Patterns - parsePat, parsePatWithMode, parsePatWithComments, - -- ** Declarations - parseDecl, parseDeclWithMode, parseDeclWithComments, - -- ** Types - parseType, parseTypeWithMode, parseTypeWithComments, - -- ** Option pragmas - getTopPragmas - ) where - - -import Language.Haskell.Exts.InternalParser ( ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult ) -import qualified Language.Haskell.Exts.InternalParser as P - -import Language.Haskell.Exts.Annotated.Syntax -import qualified Language.Haskell.Exts.Syntax as S -import Language.Haskell.Exts.Annotated.Simplify - -import Language.Haskell.Exts.SrcLoc -import Language.Haskell.Exts.Comments - -getTopPragmas :: String -> ParseResult [S.ModulePragma] -getTopPragmas = fmap (map sModulePragma) . P.getTopPragmas - --- | Class to reuse the parse function at many different types. -class Parseable ast where - -- | Parse a string with default mode. - parse :: String -> ParseResult ast - -- | Parse a string with an explicit mode. - parseWithMode :: ParseMode -> String -> ParseResult ast - -- | Parse a string with an explicit mode, returning all comments along the AST - parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment]) - - -instance SrcInfo loc => Parseable (Module loc) where - parse = fmap (fmap fromSrcInfo) . P.parseModule - parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseModuleWithMode - parseWithComments md s = P.parseModuleWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) - -instance SrcInfo loc => Parseable (Exp loc) where - parse = fmap (fmap fromSrcInfo) . P.parseExp - parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseExpWithMode - parseWithComments md s = P.parseExpWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) - -instance SrcInfo loc => Parseable (Pat loc) where - parse = fmap (fmap fromSrcInfo) . P.parsePat - parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parsePatWithMode - parseWithComments md s = P.parsePatWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) - -instance SrcInfo loc => Parseable (Decl loc) where - parse = fmap (fmap fromSrcInfo) . P.parseDecl - parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseDeclWithMode - parseWithComments md s = P.parseDeclWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) - -instance SrcInfo loc => Parseable (Type loc) where - parse = fmap (fmap fromSrcInfo) . P.parseType - parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseTypeWithMode - parseWithComments md s = P.parseTypeWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) - -instance SrcInfo loc => Parseable (Stmt loc) where - parse = fmap (fmap fromSrcInfo) . P.parseStmt - parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseStmtWithMode - parseWithComments md s = P.parseStmtWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) - - --- | Parse of a string, which should contain a complete Haskell module. -parseModule :: String -> ParseResult S.Module -parseModule = fmap sModule . P.parseModule - --- | Parse of a string containing a complete Haskell module, using an explicit mode. -parseModuleWithMode :: ParseMode -> String -> ParseResult S.Module -parseModuleWithMode = (fmap sModule .) . P.parseModuleWithMode - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseModuleWithComments :: ParseMode -> String -> ParseResult (S.Module, [Comment]) -parseModuleWithComments = (fmap (\(mod, cs) -> (sModule mod, cs)) .) . P.parseModuleWithComments - --- | Parse of a string containing a Haskell expression. -parseExp :: String -> ParseResult S.Exp -parseExp = fmap sExp . P.parseExp - --- | Parse of a string containing a Haskell expression, using an explicit mode. -parseExpWithMode :: ParseMode -> String -> ParseResult S.Exp -parseExpWithMode = (fmap sExp .) . P.parseExpWithMode - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseExpWithComments :: ParseMode -> String -> ParseResult (S.Exp, [Comment]) -parseExpWithComments = (fmap (\(e, cs) -> (sExp e, cs)) .) . P.parseExpWithComments - --- | Parse of a string containing a Haskell pattern. -parsePat :: String -> ParseResult S.Pat -parsePat = fmap sPat . P.parsePat - --- | Parse of a string containing a Haskell pattern, using an explicit mode. -parsePatWithMode :: ParseMode -> String -> ParseResult S.Pat -parsePatWithMode = (fmap sPat .) . P.parsePatWithMode - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parsePatWithComments :: ParseMode -> String -> ParseResult (S.Pat, [Comment]) -parsePatWithComments = (fmap (\(p, cs) -> (sPat p, cs)) .) . P.parsePatWithComments - --- | Parse of a string containing a Haskell top-level declaration. -parseDecl :: String -> ParseResult S.Decl -parseDecl = fmap sDecl . P.parseDecl - --- | Parse of a string containing a Haskell top-level declaration, using an explicit mode. -parseDeclWithMode :: ParseMode -> String -> ParseResult S.Decl -parseDeclWithMode = (fmap sDecl .) . P.parseDeclWithMode - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseDeclWithComments :: ParseMode -> String -> ParseResult (S.Decl, [Comment]) -parseDeclWithComments = (fmap (\(decl, cs) -> (sDecl decl, cs)) .) . P.parseDeclWithComments - --- | Parse of a string containing a Haskell type. -parseType :: String -> ParseResult S.Type -parseType = fmap sType . P.parseType - --- | Parse of a string containing a Haskell type, using an explicit mode. -parseTypeWithMode :: ParseMode -> String -> ParseResult S.Type -parseTypeWithMode = (fmap sType .) . P.parseTypeWithMode - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseTypeWithComments :: ParseMode -> String -> ParseResult (S.Type, [Comment]) -parseTypeWithComments = (fmap (\(t, cs) -> (sType t, cs)) .) . P.parseTypeWithComments - --- | Parse of a string containing a Haskell type. -parseStmt :: String -> ParseResult S.Stmt -parseStmt = fmap sStmt . P.parseStmt - --- | Parse of a string containing a Haskell type, using an explicit mode. -parseStmtWithMode :: ParseMode -> String -> ParseResult S.Stmt -parseStmtWithMode = (fmap sStmt .) . P.parseStmtWithMode - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseStmtWithComments :: ParseMode -> String -> ParseResult (S.Stmt, [Comment]) -parseStmtWithComments = (fmap (\(s, cs) -> (sStmt s, cs)) .) . P.parseStmtWithComments - - -instance Parseable S.Module where - parse = parseModule - parseWithMode = parseModuleWithMode - parseWithComments = parseModuleWithComments - -instance Parseable S.Exp where - parse = parseExp - parseWithMode = parseExpWithMode - parseWithComments = parseExpWithComments - -instance Parseable S.Pat where - parse = parsePat - parseWithMode = parsePatWithMode - parseWithComments = parsePatWithComments - -instance Parseable S.Decl where - parse = parseDecl - parseWithMode = parseDeclWithMode - parseWithComments = parseDeclWithComments - -instance Parseable S.Type where - parse = parseType - parseWithMode = parseTypeWithMode - parseWithComments = parseTypeWithComments +{-# LANGUAGE CPP, DeriveDataTypeable, FlexibleInstances, DeriveFunctor #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Annotated.Parser+-- Copyright : (c) Niklas Broberg 2004-2009+-- (c) Michael Sloan 2013+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Annotated parser for Haskell with extensions.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.Parser+ (+ -- * General parsing+ Parseable(parse, parseWithMode, parseWithComments)+ , ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult+ -- * Parsing of specific AST elements+ -- ** Modules+ , parseModule, parseModuleWithMode, parseModuleWithComments+ -- ** Expressions+ , parseExp, parseExpWithMode, parseExpWithComments+ -- ** Statements+ , parseStmt, parseStmtWithMode, parseStmtWithComments+ -- ** Patterns+ , parsePat, parsePatWithMode, parsePatWithComments+ -- ** Declarations+ , parseDecl, parseDeclWithMode, parseDeclWithComments+ -- ** Types+ , parseType, parseTypeWithMode, parseTypeWithComments+ -- ** Imports+ , parseImportDecl, parseImportDeclWithMode, parseImportDeclWithComments+ -- * Non-greedy parsers+ , NonGreedy(..)+ , ListOf(..), unListOf+ -- ** Module head parsers+ , getTopPragmas+ , PragmasAndModuleName(..)+ , PragmasAndModuleHead(..)+ , ModuleHeadAndImports(..)+ ) where++import Data.Data hiding (Fixity)+import Language.Haskell.Exts.Fixity+import Language.Haskell.Exts.Syntax+import Language.Haskell.Exts.Comments+import Language.Haskell.Exts.InternalParser+import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.SrcLoc++instance Parseable (Decl SrcSpanInfo) where parser = normalParser mparseDecl+instance Parseable (Exp SrcSpanInfo) where parser = normalParser mparseExp+instance Parseable (Module SrcSpanInfo) where parser = normalParser mparseModule+instance Parseable (Pat SrcSpanInfo) where parser = normalParser mparsePat+instance Parseable (Stmt SrcSpanInfo) where parser = normalParser mparseStmt+instance Parseable (Type SrcSpanInfo) where parser = normalParserNoFixity mparseType+instance Parseable (ImportDecl SrcSpanInfo) where parser = normalParserNoFixity mparseImportDecl++normalParser :: AppFixity a => P (a SrcSpanInfo) -> Maybe [Fixity] -> P (a SrcSpanInfo)+normalParser p Nothing = p+normalParser p (Just fixs) = p >>= \ast -> applyFixities fixs ast `atSrcLoc` noLoc++normalParserNoFixity :: P (a SrcSpanInfo) -> Maybe [Fixity] -> P (a SrcSpanInfo)+normalParserNoFixity p _ = p++-- Type-specific functions++-- | Parse of a string, which should contain a complete Haskell module, using 'defaultParseMode'.+parseModule :: String -> ParseResult (Module SrcSpanInfo)+parseModule = parse++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode'.+parseModuleWithMode :: ParseMode -> String -> ParseResult (Module SrcSpanInfo)+parseModuleWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseModuleWithComments :: ParseMode -> String -> ParseResult (Module SrcSpanInfo, [Comment])+parseModuleWithComments = parseWithComments++-- | Parse of a string containing a Haskell expression, using 'defaultParseMode'.+parseExp :: String -> ParseResult (Exp SrcSpanInfo)+parseExp = parse++-- | Parse of a string containing a Haskell expression, using an explicit 'ParseMode'.+parseExpWithMode :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo)+parseExpWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseExpWithComments :: ParseMode -> String -> ParseResult (Exp SrcSpanInfo, [Comment])+parseExpWithComments = parseWithComments++-- | Parse of a string containing a Haskell pattern, using 'defaultParseMode'.+parsePat :: String -> ParseResult (Pat SrcSpanInfo)+parsePat = parse++-- | Parse of a string containing a Haskell pattern, using an explicit 'ParseMode'.+parsePatWithMode :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo)+parsePatWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parsePatWithComments :: ParseMode -> String -> ParseResult (Pat SrcSpanInfo, [Comment])+parsePatWithComments = parseWithComments++-- | Parse of a string containing a Haskell top-level declaration, using 'defaultParseMode'.+parseDecl :: String -> ParseResult (Decl SrcSpanInfo)+parseDecl = parse++-- | Parse of a string containing a Haskell top-level declaration, using an explicit 'ParseMode'.+parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo)+parseDeclWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl SrcSpanInfo, [Comment])+parseDeclWithComments = parseWithComments++-- | Parse of a string containing a Haskell type, using 'defaultParseMode'.+parseType :: String -> ParseResult (Type SrcSpanInfo)+parseType = parse++-- | Parse of a string containing a Haskell type, using an explicit 'ParseMode'.+parseTypeWithMode :: ParseMode -> String -> ParseResult (Type SrcSpanInfo)+parseTypeWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseTypeWithComments :: ParseMode -> String -> ParseResult (Type SrcSpanInfo, [Comment])+parseTypeWithComments = parseWithComments++-- | Parse of a string containing a Haskell statement, using 'defaultParseMode'.+parseStmt :: String -> ParseResult (Stmt SrcSpanInfo)+parseStmt = parse++-- | Parse of a string containing a Haskell type, using an explicit 'ParseMode'.+parseStmtWithMode :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo)+parseStmtWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseStmtWithComments :: ParseMode -> String -> ParseResult (Stmt SrcSpanInfo, [Comment])+parseStmtWithComments = parseWithComments++-- | Parse of a string containing a Haskell statement, using 'defaultParseMode'.+parseImportDecl :: String -> ParseResult (ImportDecl SrcSpanInfo)+parseImportDecl = parse++-- | Parse of a string containing a Haskell type, using an explicit 'ParseMode'.+parseImportDeclWithMode :: ParseMode -> String -> ParseResult (ImportDecl SrcSpanInfo)+parseImportDeclWithMode = parseWithMode++-- | Parse of a string containing a complete Haskell module, using an explicit 'ParseMode', retaining comments.+parseImportDeclWithComments :: ParseMode -> String -> ParseResult (ImportDecl SrcSpanInfo, [Comment])+parseImportDeclWithComments = parseWithComments++-- Non-greedy parsers (should use ng- prefixed parses exported by InternalParser)++-- | Non-greedy parse of a string starting with a series of top-level option pragmas.+getTopPragmas :: String -> ParseResult [ModulePragma SrcSpanInfo]+getTopPragmas = fmap (unListOf . unNonGreedy) . parse++instance Parseable (NonGreedy (ListOf (ModulePragma SrcSpanInfo))) where+ parser = nglistParserNoFixity ngparseModulePragmas++nglistParserNoFixity :: P ([a SrcSpanInfo], [SrcSpan], SrcSpanInfo) -> Maybe [Fixity] -> P (NonGreedy (ListOf (a SrcSpanInfo)))+nglistParserNoFixity f = fmap (NonGreedy . toListOf) . normalParserNoFixity f++-- | Type intended to be used with 'Parseable', with instances that implement a+-- non-greedy parse of the module name, including top-level pragmas. This+-- means that a parse error that comes after the module header won't be+-- returned. If the 'Maybe' value is 'Nothing', then this means that there was+-- no module header.+data PragmasAndModuleName l = PragmasAndModuleName l+ [ModulePragma l]+ (Maybe (ModuleName l))+ deriving (Eq,Ord,Show,Typeable,Data)++instance Parseable (NonGreedy (PragmasAndModuleName SrcSpanInfo)) where+ parser _ = do+ ((pragmas, pss, pl), mn) <- ngparsePragmasAndModuleName+ let l = combSpanMaybe (pl <** pss) (fmap ann mn)+ return $ NonGreedy $ PragmasAndModuleName l pragmas mn++-- Type intended to be used with 'Parseable', with instances that+-- implement a non-greedy parse of the module name, including+-- top-level pragmas. This means that a parse error that comes+-- after the module header won't be returned. If the 'Maybe' value+-- is 'Nothing', this means that there was no module head.+--+-- Note that the 'ParseMode' matters for this due to the 'MagicHash'+-- changing the lexing of identifiers to include \"#\".+data PragmasAndModuleHead l = PragmasAndModuleHead l+ [ModulePragma l]+ (Maybe (ModuleHead l))+ deriving (Eq,Ord,Show,Typeable,Data)++instance Parseable (NonGreedy (PragmasAndModuleHead SrcSpanInfo)) where+ parser _ = do+ ((pragmas, pss, pl), mh) <- ngparsePragmasAndModuleHead+ let l = combSpanMaybe (pl <** pss) (fmap ann mh)+ return $ NonGreedy $ PragmasAndModuleHead l pragmas mh++-- Type intended to be used with 'Parseable', with instances that+-- implement a non-greedy parse of the module head, including+-- top-level pragmas, module name, export list, and import+-- list. This means that if a parse error that comes after the+-- imports won't be returned. If the 'Maybe' value is 'Nothing',+-- this means that there was no module head.+--+-- Note that the 'ParseMode' matters for this due to the 'MagicHash'+-- changing the lexing of identifiers to include \"#\".+data ModuleHeadAndImports l = ModuleHeadAndImports l+ [ModulePragma l]+ (Maybe (ModuleHead l))+ [ImportDecl l]+ deriving (Eq,Ord,Show,Typeable,Data)++instance Parseable (NonGreedy (ModuleHeadAndImports SrcSpanInfo)) where+ parser _ = do+ ((pragmas, pss, pl), mh, mimps) <- ngparseModuleHeadAndImports+ let l = (pl <** pss) `combSpanMaybe`+ (fmap ann mh) `combSpanMaybe`+ (fmap (\(_, iss, il) -> il <** iss) mimps)+ imps = maybe [] (\(x, _, _) -> x) mimps+ return $ NonGreedy $ ModuleHeadAndImports l pragmas mh imps++-- | Instances of 'Parseable' for @NonGreedy a@ will only consume the input+-- until @a@ is fully parsed. This means that parse errors that come later+-- in the input will be ignored. It's also more efficient, as it's fully lazy+-- in the remainder of the input:+--+-- >>> parse (unlines ("module A where" : "main =" : repeat "blah")) :: ParseResult PragmasAndModuleHead+-- ParseOk (NonGreedy {unNonGreedy = PragmasAndModuleHead [] (ModuleName "A",Nothing,Nothing)})+--+-- (this example uses the simplified AST)+newtype NonGreedy a = NonGreedy { unNonGreedy :: a }+ deriving (Eq,Ord,Show,Typeable,Data)++instance Functor NonGreedy where+ fmap f (NonGreedy x) = NonGreedy (f x)++-- | @ListOf a@ stores lists of the AST type @a@, along with a 'SrcSpanInfo',+-- in order to provide 'Parseable' instances for lists. These instances are+-- provided when the type is used as a list in the syntax, and the same+-- delimiters are used in all of its usages. Some exceptions are made:+data ListOf a = ListOf SrcSpanInfo [a]+ deriving (Eq,Ord,Show,Typeable,Data,Functor)++unListOf :: ListOf a -> [a]+unListOf (ListOf _ xs) = xs++-- It's safe to forget about the previous SrcSpanInfo 'srcInfoPoints',+-- as long as they are created with (presently) are all created with+-- 'noInfoSpan' ('nIS'), '(<^^>)', or '(<++>)', all of which have+-- empty 'srcInfoPoints'. Ideally, the parsers would return better+-- types, but this works.+toListOf :: ([a], [SrcSpan], SrcSpanInfo) -> ListOf a+toListOf (xs, ss, l) = ListOf (infoSpan (srcInfoSpan l) ss) xs
src/Language/Haskell/Exts/Pretty.hs view
@@ -1,1649 +1,1717 @@--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Pretty--- Copyright : (c) Niklas Broberg 2004-2009,--- (c) The GHC Team, Noel Winstanley 1997-2000--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ Pretty printer for Haskell with extensions.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Pretty (- -- * Pretty printing- Pretty,- prettyPrintStyleMode, prettyPrintWithMode, prettyPrint,- -- * Pretty-printing styles (from "Text.PrettyPrint.HughesPJ")- P.Style(..), P.style, P.Mode(..),- -- * Haskell formatting modes- PPHsMode(..), Indent, PPLayout(..), defaultMode) where--import Language.Haskell.Exts.Syntax-import qualified Language.Haskell.Exts.Annotated.Syntax as A-import Language.Haskell.Exts.Annotated.Simplify-import qualified Language.Haskell.Exts.ParseSyntax as P--import Language.Haskell.Exts.SrcLoc--import qualified Text.PrettyPrint as P-import Data.List (intersperse)--infixl 5 $$$----------------------------------------------------------------------------------- | Varieties of layout we can use.-data PPLayout = PPOffsideRule -- ^ classical layout- | PPSemiColon -- ^ classical layout made explicit- | PPInLine -- ^ inline decls, with newlines between them- | PPNoLayout -- ^ everything on a single line- deriving Eq--type Indent = Int---- | Pretty-printing parameters.------ /Note:/ the 'onsideIndent' must be positive and less than all other indents.-data PPHsMode = PPHsMode {- -- | indentation of a class or instance- classIndent :: Indent,- -- | indentation of a @do@-expression- doIndent :: Indent,- -- | indentation of the body of a- -- @case@ expression- caseIndent :: Indent,- -- | indentation of the declarations in a- -- @let@ expression- letIndent :: Indent,- -- | indentation of the declarations in a- -- @where@ clause- whereIndent :: Indent,- -- | indentation added for continuation- -- lines that would otherwise be offside- onsideIndent :: Indent,- -- | blank lines between statements?- spacing :: Bool,- -- | Pretty-printing style to use- layout :: PPLayout,- -- | add GHC-style @LINE@ pragmas to output?- linePragmas :: Bool- }---- | The default mode: pretty-print using the offside rule and sensible--- defaults.-defaultMode :: PPHsMode-defaultMode = PPHsMode{- classIndent = 8,- doIndent = 3,- caseIndent = 4,- letIndent = 4,- whereIndent = 6,- onsideIndent = 2,- spacing = True,- layout = PPOffsideRule,- linePragmas = False- }---- | Pretty printing monad-newtype DocM s a = DocM (s -> a)--instance Functor (DocM s) where- fmap f xs = do x <- xs; return (f x)--instance Monad (DocM s) where- (>>=) = thenDocM- (>>) = then_DocM- return = retDocM--{-# INLINE thenDocM #-}-{-# INLINE then_DocM #-}-{-# INLINE retDocM #-}-{-# INLINE unDocM #-}-{-# INLINE getPPEnv #-}--thenDocM :: DocM s a -> (a -> DocM s b) -> DocM s b-thenDocM m k = DocM $ (\s -> case unDocM m $ s of a -> unDocM (k a) $ s)--then_DocM :: DocM s a -> DocM s b -> DocM s b-then_DocM m k = DocM $ (\s -> case unDocM m $ s of _ -> unDocM k $ s)--retDocM :: a -> DocM s a-retDocM a = DocM (\_s -> a)--unDocM :: DocM s a -> (s -> a)-unDocM (DocM f) = f---- all this extra stuff, just for this one function.-getPPEnv :: DocM s s-getPPEnv = DocM id---- So that pp code still looks the same--- this means we lose some generality though---- | The document type produced by these pretty printers uses a 'PPHsMode'--- environment.-type Doc = DocM PPHsMode P.Doc---- | Things that can be pretty-printed, including all the syntactic objects--- in "Language.Haskell.Exts.Syntax" and "Language.Haskell.Exts.Annotated.Syntax".-class Pretty a where- -- | Pretty-print something in isolation.- pretty :: a -> Doc- -- | Pretty-print something in a precedence context.- prettyPrec :: Int -> a -> Doc- pretty = prettyPrec 0- prettyPrec _ = pretty---- The pretty printing combinators--empty :: Doc-empty = return P.empty--nest :: Int -> Doc -> Doc-nest i m = m >>= return . P.nest i----- Literals--text, ptext :: String -> Doc-text = return . P.text-ptext = return . P.text--char :: Char -> Doc-char = return . P.char--int :: Int -> Doc-int = return . P.int--integer :: Integer -> Doc-integer = return . P.integer--float :: Float -> Doc-float = return . P.float--double :: Double -> Doc-double = return . P.double--rational :: Rational -> Doc-rational = return . P.rational---- Simple Combining Forms--parens, brackets, braces,quotes,doubleQuotes :: Doc -> Doc-parens d = d >>= return . P.parens-brackets d = d >>= return . P.brackets-braces d = d >>= return . P.braces-quotes d = d >>= return . P.quotes-doubleQuotes d = d >>= return . P.doubleQuotes--parensIf :: Bool -> Doc -> Doc-parensIf True = parens-parensIf False = id---- Constants--semi,comma,colon,space,equals :: Doc-semi = return P.semi-comma = return P.comma-colon = return P.colon-space = return P.space-equals = return P.equals--lparen,rparen,lbrack,rbrack,lbrace,rbrace :: Doc-lparen = return P.lparen-rparen = return P.rparen-lbrack = return P.lbrack-rbrack = return P.rbrack-lbrace = return P.lbrace-rbrace = return P.rbrace---- Combinators--(<>),(<+>),($$),($+$) :: Doc -> Doc -> Doc-aM <> bM = do{a<-aM;b<-bM;return (a P.<> b)}-aM <+> bM = do{a<-aM;b<-bM;return (a P.<+> b)}-aM $$ bM = do{a<-aM;b<-bM;return (a P.$$ b)}-aM $+$ bM = do{a<-aM;b<-bM;return (a P.$+$ b)}--hcat,hsep,vcat,sep,cat,fsep,fcat :: [Doc] -> Doc-hcat dl = sequence dl >>= return . P.hcat-hsep dl = sequence dl >>= return . P.hsep-vcat dl = sequence dl >>= return . P.vcat-sep dl = sequence dl >>= return . P.sep-cat dl = sequence dl >>= return . P.cat-fsep dl = sequence dl >>= return . P.fsep-fcat dl = sequence dl >>= return . P.fcat---- Some More--hang :: Doc -> Int -> Doc -> Doc-hang dM i rM = do{d<-dM;r<-rM;return $ P.hang d i r}---- Yuk, had to cut-n-paste this one from Pretty.hs-punctuate :: Doc -> [Doc] -> [Doc]-punctuate _ [] = []-punctuate p (d1:ds) = go d1 ds- where- go d [] = [d]- go d (e:es) = (d <> p) : go e es---- | render the document with a given style and mode.-renderStyleMode :: P.Style -> PPHsMode -> Doc -> String-renderStyleMode ppStyle ppMode d = P.renderStyle ppStyle . unDocM d $ ppMode---- | render the document with a given mode.-renderWithMode :: PPHsMode -> Doc -> String-renderWithMode = renderStyleMode P.style---- | render the document with 'defaultMode'.-render :: Doc -> String-render = renderWithMode defaultMode---- | pretty-print with a given style and mode.-prettyPrintStyleMode :: Pretty a => P.Style -> PPHsMode -> a -> String-prettyPrintStyleMode ppStyle ppMode = renderStyleMode ppStyle ppMode . pretty---- | pretty-print with the default style and a given mode.-prettyPrintWithMode :: Pretty a => PPHsMode -> a -> String-prettyPrintWithMode = prettyPrintStyleMode P.style---- | pretty-print with the default style and 'defaultMode'.-prettyPrint :: Pretty a => a -> String-prettyPrint = prettyPrintWithMode defaultMode--fullRenderWithMode :: PPHsMode -> P.Mode -> Int -> Float ->- (P.TextDetails -> a -> a) -> a -> Doc -> a-fullRenderWithMode ppMode m i f fn e mD =- P.fullRender m i f fn e $ (unDocM mD) ppMode---fullRender :: P.Mode -> Int -> Float -> (P.TextDetails -> a -> a)- -> a -> Doc -> a-fullRender = fullRenderWithMode defaultMode--------------------------- Pretty-Print a Module ---------------------instance Pretty Module where- pretty (Module pos m os mbWarn mbExports imp decls) =- markLine pos $- myVcat $ map pretty os ++- (if m == ModuleName "" then id- else \x -> [topLevel (ppModuleHeader m mbWarn mbExports) x])- (map pretty imp ++ map pretty decls)---------------------------- Module Header -------------------------------ppModuleHeader :: ModuleName -> Maybe WarningText -> Maybe [ExportSpec] -> Doc-ppModuleHeader m mbWarn mbExportList = mySep [- text "module",- pretty m,- maybePP ppWarnTxt mbWarn,- maybePP (parenList . map pretty) mbExportList,- text "where"]--ppWarnTxt :: WarningText -> Doc-ppWarnTxt (DeprText s) = mySep [text "{-# DEPRECATED", text s, text "#-}"]-ppWarnTxt (WarnText s) = mySep [text "{-# WARNING", text s, text "#-}"]--instance Pretty ModuleName where- pretty (ModuleName modName) = text modName--instance Pretty ExportSpec where- pretty (EVar name) = pretty name- pretty (EAbs name) = pretty name- pretty (EThingAll name) = pretty name <> text "(..)"- pretty (EThingWith name nameList) =- pretty name <> (parenList . map pretty $ nameList)- pretty (EModuleContents m) = text "module" <+> pretty m--instance Pretty ImportDecl where- pretty (ImportDecl pos m qual src mbPkg mbName mbSpecs) =- markLine pos $- mySep [text "import",- if src then text "{-# SOURCE #-}" else empty,- if qual then text "qualified" else empty,- maybePP (\s -> text (show s)) mbPkg,- pretty m,- maybePP (\m' -> text "as" <+> pretty m') mbName,- maybePP exports mbSpecs]- where- exports (b,specList) =- if b then text "hiding" <+> specs else specs- where specs = parenList . map pretty $ specList--instance Pretty ImportSpec where- pretty (IVar name) = pretty name- pretty (IAbs name) = pretty name- pretty (IThingAll name) = pretty name <> text "(..)"- pretty (IThingWith name nameList) =- pretty name <> (parenList . map pretty $ nameList)--------------------------- Declarations -------------------------------instance Pretty Decl where- pretty (TypeDecl loc name nameList htype) =- blankline $- markLine loc $- mySep ( [text "type", pretty name]- ++ map pretty nameList- ++ [equals, pretty htype])-- pretty (DataDecl loc don context name nameList constrList derives) =- blankline $- markLine loc $- mySep ( [pretty don, ppContext context, pretty name]- ++ map pretty nameList)- <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))- (map pretty constrList))- $$$ ppDeriving derives)-- pretty (GDataDecl loc don context name nameList optkind gadtList derives) =- blankline $- markLine loc $- mySep ( [pretty don, ppContext context, pretty name]- ++ map pretty nameList ++ ppOptKind optkind ++ [text "where"])- $$$ ppBody classIndent (map pretty gadtList)- $$$ ppBody letIndent [ppDeriving derives]-- pretty (TypeFamDecl loc name nameList optkind) =- blankline $- markLine loc $- mySep ([text "type", text "family", pretty name]- ++ map pretty nameList- ++ ppOptKind optkind)-- pretty (DataFamDecl loc context name nameList optkind) =- blankline $- markLine loc $- mySep ( [text "data", text "family", ppContext context, pretty name]- ++ map pretty nameList ++ ppOptKind optkind)-- pretty (TypeInsDecl loc ntype htype) =- blankline $- markLine loc $- mySep [text "type", text "instance", pretty ntype, equals, pretty htype]-- pretty (DataInsDecl loc don ntype constrList derives) =- blankline $- markLine loc $- mySep [pretty don, text "instance", pretty ntype]- <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))- (map pretty constrList))- $$$ ppDeriving derives)-- pretty (GDataInsDecl loc don ntype optkind gadtList derives) =- blankline $- markLine loc $- mySep ( [pretty don, text "instance", pretty ntype]- ++ ppOptKind optkind ++ [text "where"])- $$$ ppBody classIndent (map pretty gadtList)- $$$ ppDeriving derives-- --m{spacing=False}- -- special case for empty class declaration- pretty (ClassDecl pos context name nameList fundeps []) =- blankline $- markLine pos $- mySep ( [text "class", ppContext context, pretty name]- ++ map pretty nameList ++ [ppFunDeps fundeps])- pretty (ClassDecl pos context name nameList fundeps declList) =- blankline $- markLine pos $- mySep ( [text "class", ppContext context, pretty name]- ++ map pretty nameList ++ [ppFunDeps fundeps, text "where"])- $$$ ppBody classIndent (map pretty declList)-- -- m{spacing=False}- -- special case for empty instance declaration- pretty (InstDecl pos context name args []) =- blankline $- markLine pos $- mySep ( [text "instance", ppContext context, pretty name]- ++ map ppAType args)- pretty (InstDecl pos context name args declList) =- blankline $- markLine pos $- mySep ( [text "instance", ppContext context, pretty name]- ++ map ppAType args ++ [text "where"])- $$$ ppBody classIndent (map pretty declList)-- pretty (DerivDecl pos context name args) =- blankline $- markLine pos $- mySep ( [text "deriving", text "instance", ppContext context, pretty name]- ++ map ppAType args)- pretty (DefaultDecl pos htypes) =- blankline $- markLine pos $- text "default" <+> parenList (map pretty htypes)-- pretty (SpliceDecl pos splice) =- blankline $- markLine pos $- pretty splice-- pretty (TypeSig pos nameList qualType) =- blankline $- markLine pos $- mySep ((punctuate comma . map pretty $ nameList)- ++ [text "::", pretty qualType])-- pretty (FunBind matches) = do- e <- fmap layout getPPEnv- case e of PPOffsideRule -> foldr ($$$) empty (map pretty matches)- _ -> foldr (\x y -> x <> semi <> y) empty (map pretty matches)-- pretty (PatBind pos pat optsig rhs whereBinds) =- markLine pos $- myFsep [pretty pat, maybePP ppSig optsig, pretty rhs] $$$ ppWhere whereBinds-- pretty (InfixDecl pos assoc prec opList) =- blankline $- markLine pos $- mySep ([pretty assoc, int prec]- ++ (punctuate comma . map pretty $ opList))-- pretty (ForImp pos cconv saf str name typ) =- blankline $- markLine pos $- mySep [text "foreign import", pretty cconv, pretty saf,- text (show str), pretty name, text "::", pretty typ]-- pretty (ForExp pos cconv str name typ) =- blankline $- markLine pos $- mySep [text "foreign export", pretty cconv,- text (show str), pretty name, text "::", pretty typ]-- pretty (RulePragmaDecl pos rules) =- blankline $- markLine pos $- myVcat $ text "{-# RULES" : map pretty rules ++ [text " #-}"]-- pretty (DeprPragmaDecl pos deprs) =- blankline $- markLine pos $- myVcat $ text "{-# DEPRECATED" : map ppWarnDepr deprs ++ [text " #-}"]-- pretty (WarnPragmaDecl pos deprs) =- blankline $- markLine pos $- myVcat $ text "{-# WARNING" : map ppWarnDepr deprs ++ [text " #-}"]-- pretty (InlineSig pos inl activ name) =- blankline $- markLine pos $- mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), pretty activ, pretty name, text "#-}"]-- pretty (InlineConlikeSig pos activ name) =- blankline $- markLine pos $- mySep [text "{-# INLINE_CONLIKE", pretty activ, pretty name, text "#-}"]-- pretty (SpecSig pos name types) =- blankline $- markLine pos $- mySep $ [text "{-# SPECIALISE", pretty name, text "::"]- ++ punctuate comma (map pretty types) ++ [text "#-}"]-- pretty (SpecInlineSig pos inl activ name types) =- blankline $- markLine pos $- mySep $ [text "{-# SPECIALISE", text (if inl then "INLINE" else "NOINLINE"),- pretty activ, pretty name, text "::"]- ++ (punctuate comma $ map pretty types) ++ [text "#-}"]-- pretty (InstSig pos context name args) =- blankline $- markLine pos $- mySep $ [text "{-# SPECIALISE", text "instance", ppContext context, pretty name]- ++ map ppAType args ++ [text "#-}"]-- pretty (AnnPragma pos ann) =- blankline $- markLine pos $- mySep $ [text "{-# ANN", pretty ann, text "#-}"]--instance Pretty Annotation where- pretty (Ann n e) = myFsep [pretty n, pretty e]- pretty (TypeAnn n e) = myFsep [text "type", pretty n, pretty e]- pretty (ModuleAnn e) = myFsep [text "module", pretty e]--instance Pretty DataOrNew where- pretty DataType = text "data"- pretty NewType = text "newtype"--instance Pretty Assoc where- pretty AssocNone = text "infix"- pretty AssocLeft = text "infixl"- pretty AssocRight = text "infixr"--instance Pretty Match where- pretty (Match pos f ps optsig rhs whereBinds) =- markLine pos $- myFsep (lhs ++ [maybePP ppSig optsig, pretty rhs])- $$$ ppWhere whereBinds- where- lhs = case ps of- l:r:ps' | isSymbolName f ->- let hd = [pretty l, ppName f, pretty r] in- if null ps' then hd- else parens (myFsep hd) : map (prettyPrec 2) ps'- _ -> pretty f : map (prettyPrec 2) ps--ppWhere :: Binds -> Doc-ppWhere (BDecls []) = empty-ppWhere (BDecls l) = nest 2 (text "where" $$$ ppBody whereIndent (map pretty l))-ppWhere (IPBinds b) = nest 2 (text "where" $$$ ppBody whereIndent (map pretty b))--ppSig :: Type -> Doc-ppSig t = text "::" <+> pretty t--instance Pretty ClassDecl where- pretty (ClsDecl decl) = pretty decl-- pretty (ClsDataFam loc context name nameList optkind) =- markLine loc $- mySep ( [text "data", ppContext context, pretty name]- ++ map pretty nameList ++ ppOptKind optkind)-- pretty (ClsTyFam loc name nameList optkind) =- markLine loc $- mySep ( [text "type", pretty name]- ++ map pretty nameList ++ ppOptKind optkind)-- pretty (ClsTyDef loc ntype htype) =- markLine loc $- mySep [text "type", pretty ntype, equals, pretty htype]--instance Pretty InstDecl where- pretty (InsDecl decl) = pretty decl-- pretty (InsType loc ntype htype) =- markLine loc $- mySep [text "type", pretty ntype, equals, pretty htype]-- pretty (InsData loc don ntype constrList derives) =- markLine loc $- mySep [pretty don, pretty ntype]- <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))- (map pretty constrList))- $$$ ppDeriving derives)-- pretty (InsGData loc don ntype optkind gadtList derives) =- markLine loc $- mySep ( [pretty don, pretty ntype]- ++ ppOptKind optkind ++ [text "where"])- $$$ ppBody classIndent (map pretty gadtList)- $$$ ppDeriving derives---- pretty (InsInline loc inl activ name) =--- markLine loc $--- mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), pretty activ, pretty name, text "#-}"]---------------------------- FFI stuff --------------------------------------instance Pretty Safety where- pretty PlayRisky = text "unsafe"- pretty (PlaySafe b) = text $ if b then "threadsafe" else "safe"--instance Pretty CallConv where- pretty StdCall = text "stdcall"- pretty CCall = text "ccall"--------------------------- Pragmas ----------------------------------------ppWarnDepr :: ([Name], String) -> Doc-ppWarnDepr (names, txt) = mySep $ (punctuate comma $ map pretty names) ++ [text $ show txt]--instance Pretty Rule where- pretty (Rule tag activ rvs rhs lhs) =- mySep $ [text $ show tag, pretty activ,- maybePP ppRuleVars rvs,- pretty rhs, char '=', pretty lhs]--ppRuleVars :: [RuleVar] -> Doc-ppRuleVars [] = empty-ppRuleVars rvs = mySep $ text "forall" : map pretty rvs ++ [char '.']--instance Pretty Activation where- pretty AlwaysActive = empty- pretty (ActiveFrom i) = char '[' <> int i <> char ']'- pretty (ActiveUntil i) = text "[~" <> int i <> char ']'--instance Pretty RuleVar where- pretty (RuleVar n) = pretty n- pretty (TypedRuleVar n t) = parens $ mySep [pretty n, text "::", pretty t]--instance Pretty ModulePragma where- pretty (LanguagePragma _ ns) =- myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]- pretty (OptionsPragma _ (Just tool) s) =- myFsep $ [text "{-# OPTIONS_" <> pretty tool, text s, text "#-}"]- pretty (OptionsPragma _ _ s) =- myFsep $ [text "{-# OPTIONS", text s, text "#-}"]- pretty (AnnModulePragma _ ann) =- myFsep $ [text "{-# ANN", pretty ann, text "#-}"]- --instance Pretty Tool where- pretty (UnknownTool s) = text s- pretty t = text $ show t--------------------------- Data & Newtype Bodies --------------------------instance Pretty QualConDecl where- pretty (QualConDecl _pos tvs ctxt con) =- myFsep [ppForall (Just tvs), ppContext ctxt, pretty con]--instance Pretty GadtDecl where- pretty (GadtDecl _pos name ty) =- myFsep [pretty name, text "::", pretty ty]--instance Pretty ConDecl where- pretty (RecDecl name fieldList) =- pretty name <> (braceList . map ppField $ fieldList)--{- pretty (ConDecl name@(Symbol _) [l, r]) =- myFsep [prettyPrec prec_btype l, ppName name,- prettyPrec prec_btype r] -}- pretty (ConDecl name typeList) =- mySep $ ppName name : map (prettyPrec prec_atype) typeList- pretty (InfixConDecl l name r) =- myFsep [prettyPrec prec_btype l, ppNameInfix name,- prettyPrec prec_btype r]--ppField :: ([Name],BangType) -> Doc-ppField (names, ty) =- myFsepSimple $ (punctuate comma . map pretty $ names) ++- [text "::", pretty ty]--instance Pretty BangType where- prettyPrec _ (BangedTy ty) = char '!' <> ppAType ty- prettyPrec p (UnBangedTy ty) = prettyPrec p ty- prettyPrec p (UnpackedTy ty) = text "{-# UNPACK #-}" <+> char '!' <> prettyPrec p ty--ppDeriving :: [Deriving] -> Doc-ppDeriving [] = empty-ppDeriving [(d, [])] = text "deriving" <+> ppQName d-ppDeriving ds = text "deriving" <+> parenList (map ppDer ds)- where ppDer :: (QName, [Type]) -> Doc- ppDer (n, ts) = mySep (pretty n : map pretty ts)--------------------------- Types --------------------------ppBType :: Type -> Doc-ppBType = prettyPrec prec_btype--ppAType :: Type -> Doc-ppAType = prettyPrec prec_atype---- precedences for types-prec_btype, prec_atype :: Int-prec_btype = 1 -- left argument of ->,- -- or either argument of an infix data constructor-prec_atype = 2 -- argument of type or data constructor, or of a class--instance Pretty Type where- prettyPrec p (TyForall mtvs ctxt htype) = parensIf (p > 0) $- myFsep [ppForall mtvs, ppContext ctxt, pretty htype]- prettyPrec p (TyFun a b) = parensIf (p > 0) $- myFsep [ppBType a, text "->", pretty b]- prettyPrec _ (TyTuple bxd l) =- let ds = map pretty l- in case bxd of- Boxed -> parenList ds- Unboxed -> hashParenList ds- prettyPrec _ (TyList t) = brackets $ pretty t- prettyPrec p (TyApp a b) =- {-- | a == list_tycon = brackets $ pretty b -- special case- | otherwise = -} parensIf (p > prec_btype) $- myFsep [pretty a, ppAType b]- prettyPrec _ (TyVar name) = pretty name- prettyPrec _ (TyCon name) = pretty name- prettyPrec _ (TyParen t) = parens (pretty t)--- prettyPrec _ (TyPred asst) = pretty asst- prettyPrec _ (TyInfix a op b) = myFsep [pretty a, ppQNameInfix op, pretty b]- prettyPrec _ (TyKind t k) = parens (myFsep [pretty t, text "::", pretty k])---instance Pretty TyVarBind where- pretty (KindedVar var kind) = parens $ myFsep [pretty var, text "::", pretty kind]- pretty (UnkindedVar var) = pretty var--ppForall :: Maybe [TyVarBind] -> Doc-ppForall Nothing = empty-ppForall (Just []) = empty-ppForall (Just vs) = myFsep (text "forall" : map pretty vs ++ [char '.'])------------------------------ Kinds ------------------------------instance Pretty Kind where- prettyPrec _ KindStar = text "*"- prettyPrec _ KindBang = text "!"- prettyPrec n (KindFn a b) = parensIf (n > 0) $ myFsep [prettyPrec 1 a, text "->", pretty b]- prettyPrec _ (KindParen k) = parens $ pretty k- prettyPrec _ (KindVar n) = pretty n--ppOptKind :: Maybe Kind -> [Doc]-ppOptKind Nothing = []-ppOptKind (Just k) = [text "::", pretty k]--------------------- Functional Dependencies --------------------instance Pretty FunDep where- pretty (FunDep from to) =- myFsep $ map pretty from ++ [text "->"] ++ map pretty to---ppFunDeps :: [FunDep] -> Doc-ppFunDeps [] = empty-ppFunDeps fds = myFsep $ (char '|':) . punctuate comma . map pretty $ fds--------------------------- Expressions --------------------------instance Pretty Rhs where- pretty (UnGuardedRhs e) = equals <+> pretty e- pretty (GuardedRhss guardList) = myVcat . map pretty $ guardList--instance Pretty GuardedRhs where- pretty (GuardedRhs _pos guards ppBody) =- myFsep $ [char '|'] ++ (punctuate comma . map pretty $ guards) ++ [equals, pretty ppBody]--instance Pretty Literal where- pretty (Int i) = integer i- pretty (Char c) = text (show c)- pretty (String s) = text (show s)- pretty (Frac r) = double (fromRational r)- -- GHC unboxed literals:- pretty (PrimChar c) = text (show c) <> char '#'- pretty (PrimString s) = text (show s) <> char '#'- pretty (PrimInt i) = integer i <> char '#'- pretty (PrimWord w) = integer w <> text "##"- pretty (PrimFloat r) = float (fromRational r) <> char '#'- pretty (PrimDouble r) = double (fromRational r) <> text "##"--instance Pretty Exp where- prettyPrec _ (Lit l) = pretty l- -- lambda stuff- prettyPrec p (InfixApp a op b) = parensIf (p > 2) $ myFsep [prettyPrec 2 a, pretty op, prettyPrec 1 b]- prettyPrec p (NegApp e) = parensIf (p > 0) $ char '-' <> prettyPrec 4 e- prettyPrec p (App a b) = parensIf (p > 3) $ myFsep [prettyPrec 3 a, prettyPrec 4 b]- prettyPrec p (Lambda _loc patList ppBody) = parensIf (p > 1) $ myFsep $- char '\\' : map pretty patList ++ [text "->", pretty ppBody]- -- keywords- -- two cases for lets- prettyPrec p (Let (BDecls declList) letBody) =- parensIf (p > 1) $ ppLetExp declList letBody- prettyPrec p (Let (IPBinds bindList) letBody) =- parensIf (p > 1) $ ppLetExp bindList letBody-- prettyPrec p (If cond thenexp elsexp) = parensIf (p > 1) $- myFsep [text "if", pretty cond,- text "then", pretty thenexp,- text "else", pretty elsexp]- prettyPrec p (Case cond altList) = parensIf (p > 1) $- myFsep [text "case", pretty cond, text "of"]- $$$ ppBody caseIndent (map pretty altList)- prettyPrec p (Do stmtList) = parensIf (p > 1) $ - text "do" $$$ ppBody doIndent (map pretty stmtList)- prettyPrec p (MDo stmtList) = parensIf (p > 1) $ - text "mdo" $$$ ppBody doIndent (map pretty stmtList)- -- Constructors & Vars- prettyPrec _ (Var name) = pretty name- prettyPrec _ (IPVar ipname) = pretty ipname- prettyPrec _ (Con name) = pretty name- prettyPrec _ (Tuple expList) = parenList . map pretty $ expList- prettyPrec _ (TupleSection mExpList) = parenList . map (maybePP pretty) $ mExpList- -- weird stuff- prettyPrec _ (Paren e) = parens . pretty $ e- prettyPrec _ (LeftSection e op) = parens (pretty e <+> pretty op)- prettyPrec _ (RightSection op e) = parens (pretty op <+> pretty e)- prettyPrec _ (RecConstr c fieldList) =- pretty c <> (braceList . map pretty $ fieldList)- prettyPrec _ (RecUpdate e fieldList) =- pretty e <> (braceList . map pretty $ fieldList)- -- Lists- prettyPrec _ (List list) =- bracketList . punctuate comma . map pretty $ list- prettyPrec _ (EnumFrom e) =- bracketList [pretty e, text ".."]- prettyPrec _ (EnumFromTo from to) =- bracketList [pretty from, text "..", pretty to]- prettyPrec _ (EnumFromThen from thenE) =- bracketList [pretty from <> comma, pretty thenE, text ".."]- prettyPrec _ (EnumFromThenTo from thenE to) =- bracketList [pretty from <> comma, pretty thenE,- text "..", pretty to]- prettyPrec _ (ListComp e qualList) =- bracketList ([pretty e, char '|']- ++ (punctuate comma . map pretty $ qualList))- prettyPrec _ (ParComp e qualLists) =- bracketList (intersperse (char '|') $- pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))- prettyPrec p (ExpTypeSig _pos e ty) = parensIf (p > 0) $ - myFsep [pretty e, text "::", pretty ty]- -- Template Haskell- prettyPrec _ (BracketExp b) = pretty b- prettyPrec _ (SpliceExp s) = pretty s- prettyPrec _ (TypQuote t) = text "\'\'" <> pretty t- prettyPrec _ (VarQuote x) = text "\'" <> pretty x- prettyPrec _ (QuasiQuote n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")- -- Hsx- prettyPrec _ (XTag _ n attrs mattr cs) =- let ax = maybe [] (return . pretty) mattr- in hcat $- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):- map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]- prettyPrec _ (XETag _ n attrs mattr) =- let ax = maybe [] (return . pretty) mattr- in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]- prettyPrec _ (XPcdata s) = text s- prettyPrec _ (XExpTag e) =- myFsep $ [text "<%", pretty e, text "%>"]- prettyPrec _ (XChildTag _ cs) =- myFsep $ text "<%>" : map pretty cs ++ [text "</%>"]- - -- Pragmas- prettyPrec p (CorePragma s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]- prettyPrec _ (SCCPragma s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e]- prettyPrec _ (GenPragma s (a,b) (c,d) e) =- myFsep $ [text "{-# GENERATED", text $ show s,- int a, char ':', int b, char '-',- int c, char ':', int d, text "#-}", pretty e]- -- Arrows- prettyPrec p (Proc _ pat e) = parensIf (p > 1) $ myFsep $ [text "proc", pretty pat, text "->", pretty e]- prettyPrec p (LeftArrApp l r) = parensIf (p > 0) $ myFsep $ [pretty l, text "-<", pretty r]- 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]---instance Pretty XAttr where- pretty (XAttr n v) =- myFsep [pretty n, char '=', pretty v]--instance Pretty XName where- pretty (XName n) = text n- pretty (XDomName d n) = text d <> char ':' <> text n----ppLetExp :: [Decl] -> Exp -> Doc-ppLetExp l b = myFsep [text "let" <+> ppBody letIndent (map pretty l),- text "in", pretty b]--ppWith binds = nest 2 (text "with" $$$ ppBody withIndent (map pretty binds))-withIndent = whereIndent----------------------- Template Haskell ---------------------------instance Pretty Bracket where- pretty (ExpBracket e) = ppBracket "[|" e- pretty (PatBracket p) = ppBracket "[p|" p- pretty (TypeBracket t) = ppBracket "[t|" t- pretty (DeclBracket d) =- myFsep $ text "[d|" : map pretty d ++ [text "|]"]--ppBracket o x = myFsep [text o, pretty x, text "|]"]--instance Pretty Splice where- pretty (IdSplice s) = char '$' <> text s- pretty (ParenSplice e) =- myFsep [text "$(", pretty e, char ')']--------------------------- Patterns -------------------------------instance Pretty Pat where- prettyPrec _ (PVar name) = pretty name- prettyPrec _ (PLit lit) = pretty lit- prettyPrec p (PNeg pat) = parensIf (p > 0) $ myFsep [char '-', pretty pat]- prettyPrec p (PInfixApp a op b) = parensIf (p > 0) $- myFsep [prettyPrec 1 a, pretty (QConOp op), prettyPrec 1 b]- prettyPrec p (PApp n ps) = parensIf (p > 1 && not (null ps)) $- myFsep (pretty n : map (prettyPrec 2) ps)- prettyPrec _ (PTuple ps) = parenList . map pretty $ ps- prettyPrec _ (PList ps) =- bracketList . punctuate comma . map pretty $ ps- prettyPrec _ (PParen pat) = parens . pretty $ pat- prettyPrec _ (PRec c fields) =- pretty c <> (braceList . map pretty $ fields)- -- special case that would otherwise be buggy- prettyPrec _ (PAsPat name (PIrrPat pat)) =- myFsep [pretty name <> char '@', char '~' <> prettyPrec 2 pat]- prettyPrec _ (PAsPat name pat) =- hcat [pretty name, char '@', prettyPrec 2 pat]- prettyPrec _ PWildCard = char '_'- prettyPrec _ (PIrrPat pat) = char '~' <> prettyPrec 2 pat- prettyPrec p (PatTypeSig _pos pat ty) = parensIf (p > 0) $- myFsep [pretty pat, text "::", pretty ty]- prettyPrec p (PViewPat e pat) = parensIf (p > 0) $- myFsep [pretty e, text "->", pretty pat]- prettyPrec p (PNPlusK n k) = parensIf (p > 0) $- myFsep [pretty n, text "+", text $ show k]- -- HaRP- prettyPrec _ (PRPat rs) =- bracketList . punctuate comma . map pretty $ rs- -- Hsx- prettyPrec _ (PXTag _ n attrs mattr cp) =- let ap = maybe [] (return . pretty) mattr- in hcat $ -- TODO: should not introduce blanks- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [char '>']):- map pretty cp ++ [myFsep $ [text "</" <> pretty n, char '>']]- prettyPrec _ (PXETag _ n attrs mattr) =- let ap = maybe [] (return . pretty) mattr- in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [text "/>"]- prettyPrec _ (PXPcdata s) = text s- prettyPrec _ (PXPatTag p) =- myFsep $ [text "<%", pretty p, text "%>"]- prettyPrec _ (PXRPats ps) =- myFsep $ text "<[" : map pretty ps ++ [text "%>"]- -- Generics- prettyPrec _ (PExplTypeArg qn t) =- myFsep [pretty qn, text "{|", pretty t, text "|}"]- -- BangPatterns- prettyPrec _ (PBangPat pat) = text "!" <> prettyPrec 2 pat--instance Pretty PXAttr where- pretty (PXAttr n p) =- myFsep [pretty n, char '=', pretty p]--instance Pretty PatField where- pretty (PFieldPat name pat) =- myFsep [pretty name, equals, pretty pat]- pretty (PFieldPun name) = pretty name- pretty (PFieldWildcard) = text ".."----------------------- Regular Patterns ---------------------------instance Pretty RPat where- pretty (RPOp r op) = pretty r <> pretty op- pretty (RPEither r1 r2) = parens . myFsep $- [pretty r1, char '|', pretty r2]- pretty (RPSeq rs) =- myFsep $ text "(/" : map pretty rs ++ [text "/)"]- pretty (RPGuard r gs) =- myFsep $ text "(|" : pretty r : char '|' : map pretty gs ++ [text "|)"]- -- special case that would otherwise be buggy- pretty (RPCAs n (RPPat (PIrrPat p))) =- myFsep [pretty n <> text "@:", char '~' <> pretty p]- pretty (RPCAs n r) = hcat [pretty n, text "@:", pretty r]- -- special case that would otherwise be buggy- pretty (RPAs n (RPPat (PIrrPat p))) =- myFsep [pretty n <> text "@:", char '~' <> pretty p]- pretty (RPAs n r) = hcat [pretty n, char '@', pretty r]- pretty (RPPat p) = pretty p- pretty (RPParen rp) = parens . pretty $ rp--instance Pretty RPatOp where- pretty RPStar = char '*'- pretty RPStarG = text "*!"- pretty RPPlus = char '+'- pretty RPPlusG = text "+!"- pretty RPOpt = char '?'- pretty RPOptG = text "?!"--------------------------- Case bodies --------------------------instance Pretty Alt where- pretty (Alt _pos e gAlts binds) =- pretty e <+> pretty gAlts $$$ ppWhere binds--instance Pretty GuardedAlts where- pretty (UnGuardedAlt e) = text "->" <+> pretty e- pretty (GuardedAlts altList) = myVcat . map pretty $ altList--instance Pretty GuardedAlt where- pretty (GuardedAlt _pos guards body) =- myFsep $ char '|': (punctuate comma . map pretty $ guards) ++ [text "->", pretty body]--------------------------- Statements in monads, guards & list comprehensions ------instance Pretty Stmt where- pretty (Generator _loc e from) =- pretty e <+> text "<-" <+> pretty from- pretty (Qualifier e) = pretty e- -- two cases for lets- pretty (LetStmt (BDecls declList)) =- ppLetStmt declList- pretty (LetStmt (IPBinds bindList)) =- ppLetStmt bindList- pretty (RecStmt stmtList) =- text "rec" $$$ ppBody letIndent (map pretty stmtList)--ppLetStmt l = text "let" $$$ ppBody letIndent (map pretty l)--instance Pretty QualStmt where- pretty (QualStmt s) = pretty s- pretty (ThenTrans f) = myFsep $ [text "then", pretty f]- pretty (ThenBy f e) = myFsep $ [text "then", pretty f, text "by", pretty e]- pretty (GroupBy e) = myFsep $ [text "then", text "group", text "by", pretty e]- pretty (GroupUsing f) = myFsep $ [text "then", text "group", text "using", pretty f]- pretty (GroupByUsing e f) = myFsep $ [text "then", text "group", text "by",- pretty e, text "using", pretty f]----------------------------- Record updates-instance Pretty FieldUpdate where- pretty (FieldUpdate name e) =- myFsep [pretty name, equals, pretty e]- pretty (FieldPun name) = pretty name- pretty (FieldWildcard) = text ".."--------------------------- Names --------------------------instance Pretty QOp where- pretty (QVarOp n) = ppQNameInfix n- pretty (QConOp n) = ppQNameInfix n--ppQNameInfix :: QName -> Doc-ppQNameInfix name- | isSymbolName (getName name) = ppQName name- | otherwise = char '`' <> ppQName name <> char '`'--instance Pretty QName where- pretty name = case name of- UnQual (Symbol ('#':_)) -> char '(' <+> ppQName name <+> char ')'- _ -> parensIf (isSymbolName (getName name)) (ppQName name)--ppQName :: QName -> Doc-ppQName (UnQual name) = ppName name-ppQName (Qual m name) = pretty m <> char '.' <> ppName name-ppQName (Special sym) = text (specialName sym)--instance Pretty Op where- pretty (VarOp n) = ppNameInfix n- pretty (ConOp n) = ppNameInfix n--ppNameInfix :: Name -> Doc-ppNameInfix name- | isSymbolName name = ppName name- | otherwise = char '`' <> ppName name <> char '`'--instance Pretty Name where- pretty name = case name of- Symbol ('#':_) -> char '(' <+> ppName name <+> char ')'- _ -> parensIf (isSymbolName name) (ppName name)--ppName :: Name -> Doc-ppName (Ident s) = text s-ppName (Symbol s) = text s--instance Pretty IPName where- pretty (IPDup s) = char '?' <> text s- pretty (IPLin s) = char '%' <> text s--instance Pretty IPBind where- pretty (IPBind _loc ipname exp) =- myFsep [pretty ipname, equals, pretty exp]--instance Pretty CName where- pretty (VarName n) = pretty n- pretty (ConName n) = pretty n--instance Pretty SpecialCon where- pretty sc = text $ specialName sc--isSymbolName :: Name -> Bool-isSymbolName (Symbol _) = True-isSymbolName _ = False--getName :: QName -> Name-getName (UnQual s) = s-getName (Qual _ s) = s-getName (Special Cons) = Symbol ":"-getName (Special FunCon) = Symbol "->"-getName (Special s) = Ident (specialName s)--specialName :: SpecialCon -> String-specialName UnitCon = "()"-specialName ListCon = "[]"-specialName FunCon = "->"-specialName (TupleCon b n) = "(" ++ hash ++ replicate (n-1) ',' ++ hash ++ ")"- where hash = if b == Unboxed then "#" else ""-specialName Cons = ":"--ppContext :: Context -> Doc-ppContext [] = empty-ppContext context = mySep [parenList (map pretty context), text "=>"]---- hacked for multi-parameter type classes-instance Pretty Asst where- pretty (ClassA a ts) = myFsep $ ppQName a : map ppAType ts- pretty (InfixA a op b) = myFsep $ [pretty a, ppQNameInfix op, pretty b]- pretty (IParam i t) = myFsep $ [pretty i, text "::", pretty t]- pretty (EqualP t1 t2) = myFsep $ [pretty t1, text "~", pretty t2]---- Pretty print a source location, useful for printing out error messages-instance Pretty SrcLoc where- pretty srcLoc =- return $ P.hsep [ colonFollow (P.text $ srcFilename srcLoc)- , colonFollow (P.int $ srcLine srcLoc)- , P.int $ srcColumn srcLoc- ]--colonFollow p = P.hcat [ p, P.colon ]---instance Pretty SrcSpan where- pretty srcSpan =- return $ P.hsep [ colonFollow (P.text $ srcSpanFilename srcSpan)- , P.hcat [ P.text "("- , P.int $ srcSpanStartLine srcSpan- , P.colon- , P.int $ srcSpanStartColumn srcSpan- , P.text ")"- ]- , P.text "-"- , P.hcat [ P.text "("- , P.int $ srcSpanEndLine srcSpan- , P.colon- , P.int $ srcSpanEndColumn srcSpan- , P.text ")"- ]- ]-------------------------------------------------------------------------- Annotated version--------------------------- Pretty-Print a Module ---------------------instance SrcInfo pos => Pretty (A.Module pos) where- pretty (A.Module pos mbHead os imp decls) =- markLine pos $- myVcat $ map pretty os ++- (case mbHead of- Nothing -> id- Just h -> \x -> [topLevel (pretty h) x])- (map pretty imp ++ map pretty decls)- pretty (A.XmlPage pos _mn os n attrs mattr cs) =- markLine pos $- myVcat $ map pretty os ++- [let ax = maybe [] (return . pretty) mattr- in hcat $- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):- map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]]- pretty (A.XmlHybrid pos mbHead os imp decls n attrs mattr cs) =- markLine pos $- myVcat $ map pretty os ++ [text "<%"] ++- (case mbHead of- Nothing -> id- Just h -> \x -> [topLevel (pretty h) x])- (map pretty imp ++ map pretty decls ++- [let ax = maybe [] (return . pretty) mattr- in hcat $- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):- map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]])------------------------------ Module Header -------------------------------instance Pretty (A.ModuleHead l) where- pretty (A.ModuleHead _ m mbWarn mbExportList) = mySep [- text "module",- pretty m,- maybePP pretty mbWarn,- maybePP pretty mbExportList,- text "where"]--instance Pretty (A.WarningText l) where- pretty = ppWarnTxt. sWarningText--instance Pretty (A.ModuleName l) where- pretty = pretty . sModuleName--instance Pretty (A.ExportSpecList l) where- pretty (A.ExportSpecList _ especs) = parenList $ map pretty especs--instance Pretty (A.ExportSpec l) where- pretty = pretty . sExportSpec--instance SrcInfo pos => Pretty (A.ImportDecl pos) where- pretty = pretty . sImportDecl--instance Pretty (A.ImportSpecList l) where- pretty (A.ImportSpecList _ b ispecs) =- (if b then text "hiding" else empty)- <+> parenList (map pretty ispecs)--instance Pretty (A.ImportSpec l) where- pretty = pretty . sImportSpec--------------------------- Declarations -------------------------------instance SrcInfo pos => Pretty (A.Decl pos) where- pretty = pretty . sDecl--instance Pretty (A.DeclHead l) where- pretty (A.DHead l n tvs) = mySep (pretty n : map pretty tvs)- pretty (A.DHInfix l tva n tvb) = mySep [pretty tva, pretty n, pretty tvb]- pretty (A.DHParen l dh) = parens (pretty dh)--instance Pretty (A.InstHead l) where- pretty (A.IHead l qn ts) = mySep (pretty qn : map pretty ts)- pretty (A.IHInfix l ta qn tb) = mySep [pretty ta, pretty qn, pretty tb]- pretty (A.IHParen l ih) = parens (pretty ih)--instance Pretty (A.DataOrNew l) where- pretty = pretty . sDataOrNew--instance Pretty (A.Assoc l) where- pretty = pretty . sAssoc--instance SrcInfo pos => Pretty (A.Match pos) where- pretty = pretty . sMatch--instance SrcInfo loc => Pretty (A.ClassDecl loc) where- pretty = pretty . sClassDecl--instance SrcInfo loc => Pretty (A.InstDecl loc) where- pretty = pretty . sInstDecl--------------------------- FFI stuff --------------------------------------instance Pretty (A.Safety l) where- pretty = pretty . sSafety--instance Pretty (A.CallConv l) where- pretty = pretty . sCallConv--------------------------- Pragmas ----------------------------------------instance SrcInfo loc => Pretty (A.Rule loc) where- pretty = pretty . sRule--instance Pretty (A.Activation l) where- pretty = pretty . sActivation--instance Pretty (A.RuleVar l) where- pretty = pretty . sRuleVar--instance SrcInfo loc => Pretty (A.ModulePragma loc) where- pretty (A.LanguagePragma _ ns) =- myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]- pretty (A.OptionsPragma _ (Just tool) s) =- myFsep $ [text "{-# OPTIONS_" <> pretty tool, text s, text "#-}"]- pretty (A.OptionsPragma _ _ s) =- myFsep $ [text "{-# OPTIONS", text s, text "#-}"]- pretty (A.AnnModulePragma _ ann) =- myFsep $ [text "{-# ANN", pretty ann, text "#-}"]--instance SrcInfo loc => Pretty (A.Annotation loc) where- pretty = pretty . sAnnotation--------------------------- Data & Newtype Bodies --------------------------instance Pretty (A.QualConDecl l) where- pretty (A.QualConDecl _pos mtvs ctxt con) =- myFsep [ppForall (fmap (map sTyVarBind) mtvs), ppContext $ maybe [] sContext ctxt, pretty con]--instance Pretty (A.GadtDecl l) where- pretty (A.GadtDecl _pos name ty) =- myFsep [pretty name, text "::", pretty ty]--instance Pretty (A.ConDecl l) where- pretty = pretty . sConDecl--instance Pretty (A.FieldDecl l) where- pretty (A.FieldDecl _ names ty) =- myFsepSimple $ (punctuate comma . map pretty $ names) ++- [text "::", pretty ty]---instance Pretty (A.BangType l) where- pretty = pretty . sBangType--instance Pretty (A.Deriving l) where- pretty (A.Deriving _ []) = text "deriving" <+> parenList []- pretty (A.Deriving _ [A.IHead _ d []]) = text "deriving" <+> pretty d- pretty (A.Deriving _ ihs) = text "deriving" <+> parenList (map pretty ihs)--------------------------- Types --------------------------instance Pretty (A.Type l) where- pretty = pretty . sType--instance Pretty (A.TyVarBind l) where- pretty = pretty . sTyVarBind------------------------------ Kinds ------------------------------instance Pretty (A.Kind l) where- pretty = pretty . sKind--------------------- Functional Dependencies --------------------instance Pretty (A.FunDep l) where- pretty = pretty . sFunDep--------------------------- Expressions --------------------------instance SrcInfo loc => Pretty (A.Rhs loc) where- pretty = pretty . sRhs--instance SrcInfo loc => Pretty (A.GuardedRhs loc) where- pretty = pretty . sGuardedRhs--instance Pretty (A.Literal l) where- pretty = pretty . sLiteral--instance SrcInfo loc => Pretty (A.Exp loc) where- pretty = pretty . sExp--instance SrcInfo loc => Pretty (A.XAttr loc) where- pretty = pretty . sXAttr--instance Pretty (A.XName l) where- pretty = pretty . sXName----------------------- Template Haskell ---------------------------instance SrcInfo loc => Pretty (A.Bracket loc) where- pretty = pretty . sBracket--instance SrcInfo loc => Pretty (A.Splice loc) where- pretty = pretty . sSplice--------------------------- Patterns -------------------------------instance SrcInfo loc => Pretty (A.Pat loc) where- pretty = pretty . sPat--instance SrcInfo loc => Pretty (A.PXAttr loc) where- pretty = pretty . sPXAttr--instance SrcInfo loc => Pretty (A.PatField loc) where- pretty = pretty . sPatField----------------------- Regular Patterns ---------------------------instance SrcInfo loc => Pretty (A.RPat loc) where- pretty = pretty . sRPat--instance Pretty (A.RPatOp l) where- pretty = pretty . sRPatOp--------------------------- Case bodies --------------------------instance SrcInfo loc => Pretty (A.Alt loc) where- pretty = pretty . sAlt--instance SrcInfo loc => Pretty (A.GuardedAlts loc) where- pretty = pretty . sGuardedAlts--instance SrcInfo loc => Pretty (A.GuardedAlt loc) where- pretty = pretty . sGuardedAlt--------------------------- Statements in monads, guards & list comprehensions ------instance SrcInfo loc => Pretty (A.Stmt loc) where- pretty = pretty . sStmt--instance SrcInfo loc => Pretty (A.QualStmt loc) where- pretty = pretty . sQualStmt--------------------------- Record updates-instance SrcInfo loc => Pretty (A.FieldUpdate loc) where- pretty = pretty . sFieldUpdate--------------------------- Names --------------------------instance Pretty (A.QOp l) where- pretty = pretty . sQOp--instance Pretty (A.QName l) where- pretty = pretty . sQName--instance Pretty (A.Op l) where- pretty = pretty . sOp--instance Pretty (A.Name l) where- pretty = pretty . sName--instance Pretty (A.IPName l) where- pretty = pretty . sIPName--instance SrcInfo loc => Pretty (A.IPBind loc) where- pretty = pretty . sIPBind--instance Pretty (A.CName l) where- pretty = pretty . sCName--instance Pretty (A.Context l) where- pretty (A.CxEmpty _) = mySep [text "()", text "=>"]- pretty (A.CxSingle _ asst) = mySep [pretty asst, text "=>"]- pretty (A.CxTuple _ assts) = myFsep $ [parenList (map pretty assts), text "=>"]- pretty (A.CxParen _ asst) = parens (pretty asst)---- hacked for multi-parameter type classes-instance Pretty (A.Asst l) where- pretty = pretty . sAsst--------------------------- pp utils --------------------------maybePP :: (a -> Doc) -> Maybe a -> Doc-maybePP pp Nothing = empty-maybePP pp (Just a) = pp a--parenList :: [Doc] -> Doc-parenList = parens . myFsepSimple . punctuate comma--hashParenList :: [Doc] -> Doc-hashParenList = hashParens . myFsepSimple . punctuate comma- where hashParens = parens . hashes- hashes = \doc -> char '#' <> doc <> char '#'--braceList :: [Doc] -> Doc-braceList = braces . myFsepSimple . punctuate comma--bracketList :: [Doc] -> Doc-bracketList = brackets . myFsepSimple---- Wrap in braces and semicolons, with an extra space at the start in--- case the first doc begins with "-", which would be scanned as {--flatBlock :: [Doc] -> Doc-flatBlock = braces . (space <>) . hsep . punctuate semi---- Same, but put each thing on a separate line-prettyBlock :: [Doc] -> Doc-prettyBlock = braces . (space <>) . vcat . punctuate semi---- Monadic PP Combinators -- these examine the env--blankline :: Doc -> Doc-blankline dl = do{e<-getPPEnv;if spacing e && layout e /= PPNoLayout- then space $$ dl else dl}-topLevel :: Doc -> [Doc] -> Doc-topLevel header dl = do- e <- fmap layout getPPEnv- case e of- PPOffsideRule -> header $$ vcat dl- PPSemiColon -> header $$ prettyBlock dl- PPInLine -> header $$ prettyBlock dl- PPNoLayout -> header <+> flatBlock dl--ppBody :: (PPHsMode -> Int) -> [Doc] -> Doc-ppBody f dl = do- e <- fmap layout getPPEnv- case e of PPOffsideRule -> indent- PPSemiColon -> indentExplicit- _ -> flatBlock dl- where- indent = do{i <-fmap f getPPEnv;nest i . vcat $ dl}- indentExplicit = do {i <- fmap f getPPEnv;- nest i . prettyBlock $ dl}--($$$) :: Doc -> Doc -> Doc-a $$$ b = layoutChoice (a $$) (a <+>) b--mySep :: [Doc] -> Doc-mySep = layoutChoice mySep' hsep- where- -- ensure paragraph fills with indentation.- mySep' [x] = x- mySep' (x:xs) = x <+> fsep xs- mySep' [] = error "Internal error: mySep"--myVcat :: [Doc] -> Doc-myVcat = layoutChoice vcat hsep--myFsepSimple :: [Doc] -> Doc-myFsepSimple = layoutChoice fsep hsep---- same, except that continuation lines are indented,--- which is necessary to avoid triggering the offside rule.-myFsep :: [Doc] -> Doc-myFsep = layoutChoice fsep' hsep- where fsep' [] = empty- fsep' (d:ds) = do- e <- getPPEnv- let n = onsideIndent e- nest n (fsep (nest (-n) d:ds))--layoutChoice :: (a -> Doc) -> (a -> Doc) -> a -> Doc-layoutChoice a b dl = do e <- getPPEnv- if layout e == PPOffsideRule ||- layout e == PPSemiColon- then a dl else b dl---- Prefix something with a LINE pragma, if requested.--- GHC's LINE pragma actually sets the current line number to n-1, so--- that the following line is line n. But if there's no newline before--- the line we're talking about, we need to compensate by adding 1.--markLine :: SrcInfo s => s -> Doc -> Doc-markLine loc doc = do- e <- getPPEnv- let y = startLine loc- let line l =- text ("{-# LINE " ++ show l ++ " \"" ++ fileName loc ++ "\" #-}")- if linePragmas e then layoutChoice (line y $$) (line (y+1) <+>) doc- else doc------------------------------------------------------------------------------------- Pretty-printing of internal constructs, for error messages while parsing--instance SrcInfo loc => Pretty (P.PExp loc) where- pretty (P.Lit _ l) = pretty l- pretty (P.InfixApp _ a op b) = myFsep [pretty a, pretty op, pretty b]- pretty (P.NegApp _ e) = myFsep [char '-', pretty e]- pretty (P.App _ a b) = myFsep [pretty a, pretty b]- pretty (P.Lambda _loc expList ppBody) = myFsep $- char '\\' : map pretty expList ++ [text "->", pretty ppBody]- pretty (P.Let _ (A.BDecls _ declList) letBody) =- ppLetExp declList letBody- pretty (P.Let _ (A.IPBinds _ bindList) letBody) =- ppLetExp bindList letBody- pretty (P.If _ cond thenexp elsexp) =- myFsep [text "if", pretty cond,- text "then", pretty thenexp,- text "else", pretty elsexp]- pretty (P.Case _ cond altList) =- myFsep [text "case", pretty cond, text "of"]- $$$ ppBody caseIndent (map pretty altList)- pretty (P.Do _ stmtList) =- text "do" $$$ ppBody doIndent (map pretty stmtList)- pretty (P.MDo _ stmtList) =- text "mdo" $$$ ppBody doIndent (map pretty stmtList)- pretty (P.Var _ name) = pretty name- pretty (P.IPVar _ ipname) = pretty ipname- pretty (P.Con _ name) = pretty name- pretty (P.TupleSection _ mExpList) = parenList . map (maybePP pretty) $ mExpList- pretty (P.Paren _ e) = parens . pretty $ e- pretty (P.RecConstr _ c fieldList) =- pretty c <> (braceList . map pretty $ fieldList)- pretty (P.RecUpdate _ e fieldList) =- pretty e <> (braceList . map pretty $ fieldList)- pretty (P.List _ list) =- bracketList . punctuate comma . map pretty $ list- pretty (P.EnumFrom _ e) =- bracketList [pretty e, text ".."]- pretty (P.EnumFromTo _ from to) =- bracketList [pretty from, text "..", pretty to]- pretty (P.EnumFromThen _ from thenE) =- bracketList [pretty from <> comma, pretty thenE, text ".."]- pretty (P.EnumFromThenTo _ from thenE to) =- bracketList [pretty from <> comma, pretty thenE,- text "..", pretty to]- pretty (P.ParComp _ e qualLists) =- bracketList (intersperse (char '|') $- pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))- pretty (P.ExpTypeSig _pos e ty) =- myFsep [pretty e, text "::", pretty ty]- pretty (P.BracketExp _ b) = pretty b- pretty (P.SpliceExp _ s) = pretty s- pretty (P.TypQuote _ t) = text "\'\'" <> pretty t- pretty (P.VarQuote _ x) = text "\'" <> pretty x- pretty (P.QuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")- pretty (P.XTag _ n attrs mattr cs) =- let ax = maybe [] (return . pretty) mattr- in hcat $- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):- map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]- pretty (P.XETag _ n attrs mattr) =- let ax = maybe [] (return . pretty) mattr- in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]- pretty (P.XPcdata _ s) = text s- pretty (P.XExpTag _ e) =- myFsep $ [text "<%", pretty e, text "%>"]- pretty (P.XChildTag _ es) =- myFsep $ text "<%>" : map pretty es ++ [text "</%>"]- pretty (P.CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]- pretty (P.SCCPragma _ s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e]- pretty (P.GenPragma _ s (a,b) (c,d) e) =- myFsep $ [text "{-# GENERATED", text $ show s,- int a, char ':', int b, char '-',- int c, char ':', int d, text "#-}", pretty e]- pretty (P.Proc _ p e) = myFsep $ [text "proc", pretty p, text "->", pretty e]- pretty (P.LeftArrApp _ l r) = myFsep $ [pretty l, text "-<", pretty r]- 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.AsPat _ name (P.IrrPat _ pat)) =- myFsep [pretty name <> char '@', char '~' <> pretty pat]- pretty (P.AsPat _ name pat) =- hcat [pretty name, char '@', pretty pat]- pretty (P.WildCard _) = char '_'- pretty (P.IrrPat _ pat) = char '~' <> pretty pat- pretty (P.PostOp _ e op) = pretty e <+> pretty op- pretty (P.PreOp _ op e) = pretty op <+> pretty e- pretty (P.ViewPat _ e p) =- myFsep [pretty e, text "->", pretty p]- pretty (P.SeqRP _ rs) = myFsep $ text "(/" : map pretty rs ++ [text "/)"]- pretty (P.GuardRP _ r gs) =- myFsep $ text "(|" : pretty r : char '|' : map pretty gs ++ [text "|)"]- pretty (P.EitherRP _ r1 r2) = parens . myFsep $ [pretty r1, char '|', pretty r2]- pretty (P.CAsRP _ n (P.IrrPat _ e)) =- myFsep [pretty n <> text "@:", char '~' <> pretty e]- pretty (P.CAsRP _ n r) = hcat [pretty n, text "@:", pretty r]- pretty (P.XRPats _ ps) =- myFsep $ text "<[" : map pretty ps ++ [text "%>"]- pretty (P.ExplTypeArg _ qn t) =- myFsep [pretty qn, text "{|", pretty t, text "|}"]- pretty (P.BangPat _ e) = text "!" <> pretty e--instance SrcInfo loc => Pretty (P.PFieldUpdate loc) where- pretty (P.FieldUpdate _ name e) =- myFsep [pretty name, equals, pretty e]- pretty (P.FieldPun _ name) = pretty name- pretty (P.FieldWildcard _) = text ".."--instance SrcInfo loc => Pretty (P.ParseXAttr loc) where- pretty (P.XAttr _ n v) =- myFsep [pretty n, char '=', pretty v]--instance SrcInfo loc => Pretty (P.PContext loc) where- pretty (P.CxEmpty _) = mySep [text "()", text "=>"]- pretty (P.CxSingle _ asst) = mySep [pretty asst, text "=>"]- pretty (P.CxTuple _ assts) = myFsep $ [parenList (map pretty assts), text "=>"]- pretty (P.CxParen _ asst) = parens (pretty asst)--instance SrcInfo loc => Pretty (P.PAsst loc) where- pretty (P.ClassA _ a ts) = myFsep $ ppQName (sQName a) : map (prettyPrec prec_atype) ts- pretty (P.InfixA _ a op b) = myFsep $ [pretty a, ppQNameInfix (sQName op), pretty b]- pretty (P.IParam _ i t) = myFsep $ [pretty i, text "::", pretty t]- pretty (P.EqualP _ t1 t2) = myFsep $ [pretty t1, text "~", pretty t2]--instance SrcInfo loc => Pretty (P.PType loc) where- prettyPrec p (P.TyForall _ mtvs ctxt htype) = parensIf (p > 0) $- myFsep [ppForall (fmap (map sTyVarBind) mtvs), maybePP pretty ctxt, pretty htype]- prettyPrec p (P.TyFun _ a b) = parensIf (p > 0) $- myFsep [prettyPrec prec_btype a, text "->", pretty b]- prettyPrec _ (P.TyTuple _ bxd l) =- let ds = map pretty l- in case bxd of- Boxed -> parenList ds- Unboxed -> hashParenList ds- prettyPrec _ (P.TyList _ t) = brackets $ pretty t- prettyPrec p (P.TyApp _ a b) =- {-- | a == list_tycon = brackets $ pretty b -- special case- | otherwise = -} parensIf (p > prec_btype) $- myFsep [pretty a, prettyPrec prec_atype b]- prettyPrec _ (P.TyVar _ name) = pretty name- prettyPrec _ (P.TyCon _ name) = pretty name- prettyPrec _ (P.TyParen _ t) = parens (pretty t)- prettyPrec _ (P.TyPred _ asst) = pretty asst- prettyPrec _ (P.TyInfix _ a op b) = myFsep [pretty a, ppQNameInfix (sQName op), pretty b]- prettyPrec _ (P.TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])+{-# LANGUAGE CPP #-}+-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Pretty+-- Copyright : (c) Niklas Broberg 2004-2009,+-- (c) The GHC Team, Noel Winstanley 1997-2000+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Pretty printer for Haskell with extensions.+--+-----------------------------------------------------------------------------++module Language.Haskell.Exts.Pretty (+ -- * Pretty printing+ Pretty,+ prettyPrintStyleMode, prettyPrintWithMode, prettyPrint,+ -- * Pretty-printing styles (from "Text.PrettyPrint.HughesPJ")+ P.Style(..), P.style, P.Mode(..),+ -- * Haskell formatting modes+ PPHsMode(..), Indent, PPLayout(..), defaultMode+ -- * Primitive Printers+ , prettyPrim, prettyPrimWithMode+ ) where++import Language.Haskell.Exts.Syntax+import qualified Language.Haskell.Exts.ParseSyntax as P++import Language.Haskell.Exts.SrcLoc hiding (loc)++import Prelude hiding ( exp+#if MIN_VERSION_base(4,11,0)+ , (<>)+#endif+ )+import qualified Text.PrettyPrint as P+import Data.List (intersperse)+import Data.Maybe (isJust , fromMaybe)+#if __GLASGOW_HASKELL__ < 710+import Control.Applicative (Applicative(..), (<$>))+#endif+import qualified Control.Monad as M (ap)++infixl 5 $$$++-----------------------------------------------------------------------------++-- | Varieties of layout we can use.+data PPLayout = PPOffsideRule -- ^ classical layout+ | PPSemiColon -- ^ classical layout made explicit+ | PPInLine -- ^ inline decls, with newlines between them+ | PPNoLayout -- ^ everything on a single line+ deriving Eq++type Indent = Int++-- | Pretty-printing parameters.+--+-- /Note:/ the 'onsideIndent' must be positive and less than all other indents.+data PPHsMode = PPHsMode {+ -- | indentation of a class or instance+ classIndent :: Indent,+ -- | indentation of a @do@-expression+ doIndent :: Indent,+ -- | indentation of the body of a+ -- @case@ expression+ multiIfIndent :: Indent,+ -- | indentation of the body of a+ -- multi-@if@ expression+ caseIndent :: Indent,+ -- | indentation of the declarations in a+ -- @let@ expression+ letIndent :: Indent,+ -- | indentation of the declarations in a+ -- @where@ clause+ whereIndent :: Indent,+ -- | indentation added for continuation+ -- lines that would otherwise be offside+ onsideIndent :: Indent,+ -- | blank lines between statements?+ spacing :: Bool,+ -- | Pretty-printing style to use+ layout :: PPLayout,+ -- | add GHC-style @LINE@ pragmas to output?+ linePragmas :: Bool+ }++-- | The default mode: pretty-print using the offside rule and sensible+-- defaults.+defaultMode :: PPHsMode+defaultMode = PPHsMode{+ classIndent = 8,+ doIndent = 3,+ multiIfIndent = 3,+ caseIndent = 4,+ letIndent = 4,+ whereIndent = 6,+ onsideIndent = 2,+ spacing = True,+ layout = PPOffsideRule,+ linePragmas = False+ }++-- | Pretty printing monad+newtype DocM s a = DocM (s -> a)++instance Functor (DocM s) where+ fmap f xs = do x <- xs; return (f x)++instance Applicative (DocM s) where+ pure = retDocM+ (<*>) = M.ap++instance Monad (DocM s) where+ (>>=) = thenDocM+ (>>) = then_DocM++{-# INLINE thenDocM #-}+{-# INLINE then_DocM #-}+{-# INLINE retDocM #-}+{-# INLINE unDocM #-}+{-# INLINE getPPEnv #-}++thenDocM :: DocM s a -> (a -> DocM s b) -> DocM s b+thenDocM m k = DocM $ \s -> case unDocM m s of a -> unDocM (k a) s++then_DocM :: DocM s a -> DocM s b -> DocM s b+then_DocM m k = DocM $ \s -> case unDocM m s of _ -> unDocM k s++retDocM :: a -> DocM s a+retDocM a = DocM $ const a++unDocM :: DocM s a -> s -> a+unDocM (DocM f) = f++-- all this extra stuff, just for this one function.+getPPEnv :: DocM s s+getPPEnv = DocM id++-- So that pp code still looks the same+-- this means we lose some generality though++-- | The document type produced by these pretty printers uses a 'PPHsMode'+-- environment.+type Doc = DocM PPHsMode P.Doc++-- | Things that can be pretty-printed, including all the syntactic objects+-- in "Language.Haskell.Exts.Syntax".+class Pretty a where+ -- | Pretty-print something in isolation.+ pretty :: a -> Doc+ -- | Pretty-print something in a precedence context.+ prettyPrec :: Int -> a -> Doc+ pretty = prettyPrec 0+ prettyPrec _ = pretty++-- The pretty printing combinators++empty :: Doc+empty = return P.empty++nest :: Int -> Doc -> Doc+nest i m = m >>= return . P.nest i+++-- Literals++text :: String -> Doc+text = return . P.text++char :: Char -> Doc+char = return . P.char++int :: Int -> Doc+int = return . P.int++integer :: Integer -> Doc+integer = return . P.integer++float :: Float -> Doc+float = return . P.float++double :: Double -> Doc+double = return . P.double++-- rational :: Rational -> Doc+-- rational = return . P.rational++-- Simple Combining Forms++parens, brackets, braces, doubleQuotes :: Doc -> Doc+parens d = d >>= return . P.parens+brackets d = d >>= return . P.brackets+braces d = d >>= return . P.braces+-- quotes :: Doc -> Doc+-- quotes d = d >>= return . P.quotes+doubleQuotes d = d >>= return . P.doubleQuotes++parensIf :: Bool -> Doc -> Doc+parensIf True = parens+parensIf False = id++-- Constants++semi,comma,space,equals :: Doc+semi = return P.semi+comma = return P.comma+-- colon :: Doc+-- colon = return P.colon+space = return P.space+equals = return P.equals++{-+lparen,rparen,lbrack,rbrack,lbrace,rbrace :: Doc+lparen = return P.lparen+rparen = return P.rparen+lbrack = return P.lbrack+rbrack = return P.rbrack+lbrace = return P.lbrace+rbrace = return P.rbrace+-}++-- Combinators++(<>),(<+>),($$) :: Doc -> Doc -> Doc+aM <> bM = do{a<-aM;b<-bM;return (a P.<> b)}+aM <+> bM = do{a<-aM;b<-bM;return (a P.<+> b)}+aM $$ bM = do{a<-aM;b<-bM;return (a P.$$ b)}+($+$) :: Doc -> Doc -> Doc+aM $+$ bM = do{a<-aM;b<-bM;return (a P.$+$ b)}++hcat,hsep,vcat,fsep :: [Doc] -> Doc+hcat dl = sequence dl >>= return . P.hcat+hsep dl = sequence dl >>= return . P.hsep+vcat dl = sequence dl >>= return . P.vcat+-- sep, cat, fcat :: [Doc] -> Doc+-- sep dl = sequence dl >>= return . P.sep+-- cat dl = sequence dl >>= return . P.cat+fsep dl = sequence dl >>= return . P.fsep+-- fcat dl = sequence dl >>= return . P.fcat++-- Some More++-- hang :: Doc -> Int -> Doc -> Doc+-- hang dM i rM = do{d<-dM;r<-rM;return $ P.hang d i r}++-- Yuk, had to cut-n-paste this one from Pretty.hs+punctuate :: Doc -> [Doc] -> [Doc]+punctuate _ [] = []+punctuate p (d1:ds) = go d1 ds+ where+ go d [] = [d]+ go d (e:es) = (d <> p) : go e es++-- | render the document with a given style and mode.+renderStyleMode :: P.Style -> PPHsMode -> Doc -> String+renderStyleMode ppStyle ppMode d = P.renderStyle ppStyle . unDocM d $ ppMode++-- | render the document with a given mode.+-- renderWithMode :: PPHsMode -> Doc -> String+-- renderWithMode = renderStyleMode P.style++-- | render the document with 'defaultMode'.+-- render :: Doc -> String+-- render = renderWithMode defaultMode++-- | pretty-print with a given style and mode.+prettyPrintStyleMode :: Pretty a => P.Style -> PPHsMode -> a -> String+prettyPrintStyleMode ppStyle ppMode = renderStyleMode ppStyle ppMode . pretty++-- | pretty-print with the default style and a given mode.+prettyPrintWithMode :: Pretty a => PPHsMode -> a -> String+prettyPrintWithMode = prettyPrintStyleMode P.style++-- | pretty-print with the default style and 'defaultMode'.+prettyPrint :: Pretty a => a -> String+prettyPrint = prettyPrintWithMode defaultMode++-- fullRenderWithMode :: PPHsMode -> P.Mode -> Int -> Float ->+-- (P.TextDetails -> a -> a) -> a -> Doc -> a+-- fullRenderWithMode ppMode m i f fn e mD =+-- P.fullRender m i f fn e $ (unDocM mD) ppMode+++-- fullRender :: P.Mode -> Int -> Float -> (P.TextDetails -> a -> a)+-- -> a -> Doc -> a+-- fullRender = fullRenderWithMode defaultMode++-- | pretty-print with the default style and 'defaultMode'.+prettyPrim :: Pretty a => a -> P.Doc+prettyPrim = prettyPrimWithMode defaultMode++-- | pretty-print with the default style and a given mode.+prettyPrimWithMode :: Pretty a => PPHsMode -> a -> P.Doc+prettyPrimWithMode pphs doc = unDocM (pretty doc) pphs+++------------------------- Pretty-Print a Module --------------------+{-+instance Pretty (Module l) where+ pretty (Module pos m os mbWarn mbExports imp decls) =+ markLine pos $ (myVcat $ map pretty os) $$+ myVcat (+ (if m == ModuleName "" then id+ else \x -> [topLevel (ppModuleHeader m mbWarn mbExports) x])+ (map pretty imp +++ ppDecls (m /= ModuleName "" ||+ not (null imp) ||+ not (null os))+ decls]-}++-------------------------- Module Header ------------------------------+instance Pretty (ModuleHead l) where+ pretty (ModuleHead _ m mbWarn mbExportList) =+ mySep [+ text "module",+ pretty m,+ maybePP ppWarnTxt mbWarn,+ maybePP pretty mbExportList,+ text "where"]++instance Pretty (ExportSpecList l) where+ pretty (ExportSpecList _ especs) = parenList $ map pretty especs++ppWarnTxt :: WarningText l -> Doc+ppWarnTxt (DeprText _ s) = mySep [text "{-# DEPRECATED", text (show s), text "#-}"]+ppWarnTxt (WarnText _ s) = mySep [text "{-# WARNING", text (show s), text "#-}"]++instance Pretty (ModuleName l) where+ pretty (ModuleName _ modName) = text modName++instance Pretty (Namespace l) where+ pretty NoNamespace {} = empty+ pretty TypeNamespace {} = text "type"+ pretty PatternNamespace {} = text "pattern"++instance Pretty (ExportSpec l) where+ pretty (EVar _ name) = pretty name+ pretty (EAbs _ ns name) = pretty ns <+> pretty name+ pretty (EThingWith _ wc name nameList) =+ let prettyNames = map pretty nameList+ names = case wc of+ NoWildcard {} -> prettyNames+ EWildcard _ n ->+ let (before,after) = splitAt n prettyNames+ in before ++ [text ".."] ++ after+ in pretty name <> (parenList names)+ pretty (EModuleContents _ m) = text "module" <+> pretty m++instance Pretty (ImportDecl l) where+ pretty (ImportDecl _ m qual src safe mbPkg mbName mbSpecs) =+ mySep [text "import",+ if src then text "{-# SOURCE #-}" else empty,+ if safe then text "safe" else empty,+ if qual then text "qualified" else empty,+ maybePP (\s -> text (show s)) mbPkg,+ pretty m,+ maybePP (\m' -> text "as" <+> pretty m') mbName,+ maybePP pretty mbSpecs]++instance Pretty (ImportSpecList l) where+ pretty (ImportSpecList _ b ispecs) =+ (if b then text "hiding" else empty)+ <+> parenList (map pretty ispecs)++instance Pretty (ImportSpec l) where+ pretty (IVar _ name ) = pretty name+ pretty (IAbs _ ns name) = pretty ns <+> pretty name+ pretty (IThingAll _ name) = pretty name <> text "(..)"+ pretty (IThingWith _ name nameList) =+ pretty name <> (parenList . map pretty $ nameList)++instance Pretty (TypeEqn l) where+ pretty (TypeEqn _ pat eqn) = mySep [pretty pat, equals, pretty eqn]++------------------------- Declarations ------------------------------+class Pretty a => PrettyDeclLike a where+ wantsBlankline :: a -> Bool++instance PrettyDeclLike (Decl l) where+ wantsBlankline (FunBind {}) = False+ wantsBlankline (PatBind {}) = False+ wantsBlankline _ = True++condBlankline :: PrettyDeclLike a => a -> Doc+condBlankline d = (if wantsBlankline d then blankline else id) $ pretty d++ppDecls :: PrettyDeclLike a => Bool -> [a] -> [Doc]+ppDecls True ds = map condBlankline ds+ppDecls False (d:ds) = pretty d : map condBlankline ds+ppDecls _ _ = []+--ppDecls = map condBlankline++instance Pretty (InjectivityInfo l) where+ pretty (InjectivityInfo _ from to) =+ char '|' <+> pretty from <+> text "->" <+> hsep (map pretty to)++instance Pretty (ResultSig l) where+ pretty (KindSig _ kind) = text "::" <+> pretty kind+ pretty (TyVarSig _ tv) = char '=' <+> pretty tv++instance Pretty (Decl l) where+ pretty (TypeDecl _ dHead htype) =+ mySep ( [text "type", pretty dHead]+ ++ [equals, pretty htype])++ pretty (DataDecl _ don context dHead constrList derives) =+ mySep ( [pretty don, maybePP pretty context, pretty dHead])++ <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))+ (map pretty constrList))+ $$$ ppIndent letIndent (map pretty derives))++ pretty (GDataDecl _ don context dHead optkind gadtList derives) =+ mySep ( [pretty don, maybePP pretty context, pretty dHead]+ ++ ppOptKind optkind ++ [text "where"])+ $$$ ppBody classIndent (map pretty gadtList)+ $$$ ppIndent letIndent (map pretty derives)++ pretty (TypeFamDecl _ dHead optkind optinj) =+ mySep ([text "type", text "family", pretty dHead+ , maybePP pretty optkind, maybePP pretty optinj])++ pretty (ClosedTypeFamDecl _ dHead optkind optinj eqns) =+ mySep ([text "type", text "family", pretty dHead+ , maybePP pretty optkind ,maybePP pretty optinj+ , text "where"]) $$$ ppBody classIndent (map pretty eqns)++ pretty (DataFamDecl _ context dHead optkind) =+ mySep ( [text "data", text "family", maybePP pretty context, pretty dHead+ , maybePP pretty optkind])++ pretty (TypeInsDecl _ ntype htype) =+ mySep [text "type", text "instance", pretty ntype, equals, pretty htype]++ pretty (DataInsDecl _ don ntype constrList derives) =+ mySep [pretty don, text "instance ", pretty ntype]+ <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))+ (map pretty constrList))+ $$$ ppIndent letIndent (map pretty derives))++ pretty (GDataInsDecl _ don ntype optkind gadtList derives) =+ mySep ( [pretty don, text "instance ", pretty ntype]+ ++ ppOptKind optkind ++ [text "where"])+ $$$ ppBody classIndent (map pretty gadtList)+ $$$ ppIndent letIndent (map pretty derives)++ --m{spacing=False}+ -- special case for empty class declaration+ pretty (ClassDecl _ context dHead fundeps Nothing) =+ mySep ( [text "class", maybePP pretty context, pretty dHead+ , ppFunDeps fundeps])+ pretty (ClassDecl _ context dHead fundeps declList) =+ mySep ( [text "class", maybePP pretty context, pretty dHead+ , ppFunDeps fundeps, text "where"])+ $$$ ppBody classIndent (fromMaybe [] ((ppDecls False) <$> declList))++ -- m{spacing=False}+ -- special case for empty instance declaration+ pretty (InstDecl _ moverlap iHead Nothing) =+ mySep ( [text "instance", maybePP pretty moverlap, pretty iHead])+ pretty (InstDecl _ overlap iHead declList) =+ mySep ( [ text "instance", maybePP pretty overlap+ , pretty iHead, text "where"])+ $$$ ppBody classIndent (fromMaybe [] ((ppDecls False) <$> declList))++ pretty (DerivDecl _ mds overlap irule) =+ mySep ( [ text "deriving"+ , maybePP pretty mds+ , text "instance"+ , maybePP pretty overlap+ , pretty irule])+ pretty (DefaultDecl _ htypes) =+ text "default" <+> parenList (map pretty htypes)++ pretty (SpliceDecl _ splice) =+ pretty splice++ pretty (TSpliceDecl _ splice) =+ pretty splice++ pretty (TypeSig _ nameList qualType) =+ mySep ((punctuate comma . map pretty $ nameList)+ ++ [text "::", pretty qualType])++ -- Req can be ommitted if it is empty+ -- We must print prov if req is nonempty+ pretty (PatSynSig _ ns mtvs prov mtvs2 req t) =+ let contexts = [maybePP pretty prov, ppForall mtvs2, maybePP pretty req]+ in+ mySep ( [text "pattern" ]+ ++ punctuate comma (map pretty ns)+ ++ [ text "::", ppForall mtvs] +++ contexts ++ [pretty t] )+++ pretty (FunBind _ matches) = do+ e <- fmap layout getPPEnv+ case e of PPOffsideRule -> foldr ($$$) empty (map pretty matches)+ _ -> hsep $ punctuate semi (map pretty matches)++ pretty (PatBind _ pat rhs whereBinds) =+ myFsep [pretty pat, pretty rhs] $$$ ppWhere whereBinds++ pretty (InfixDecl _ assoc prec opList) =+ mySep ([pretty assoc, maybePP int prec]+ ++ (punctuate comma . map pretty $ opList))++ pretty (PatSyn _ pat rhs dir) =+ let sep = case dir of+ ImplicitBidirectional {} -> "="+ ExplicitBidirectional {} -> "<-"+ Unidirectional {} -> "<-"+ in+ (mySep ([text "pattern", pretty pat, text sep, pretty rhs])) $$$+ (case dir of+ ExplicitBidirectional _ ds ->+ nest 2 (text "where" $$$ ppBody whereIndent (ppDecls False ds))+ _ -> empty)++ pretty (ForImp _ cconv saf str name typ) =+ mySep [text "foreign import", pretty cconv, maybePP pretty saf,+ maybe empty (text . show) str, pretty name, text "::", pretty typ]++ pretty (ForExp _ cconv str name typ) =+ mySep [text "foreign export", pretty cconv,+ text (show str), pretty name, text "::", pretty typ]++ pretty (RulePragmaDecl _ rules) =+ myVcat $ text "{-# RULES" : map pretty rules ++ [text " #-}"]++ pretty (DeprPragmaDecl _ deprs) =+ myVcat $ text "{-# DEPRECATED" : map ppWarnDepr deprs ++ [text " #-}"]++ pretty (WarnPragmaDecl _ deprs) =+ myVcat $ text "{-# WARNING" : map ppWarnDepr deprs ++ [text " #-}"]++ pretty (InlineSig _ inl activ name) =+ mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE")+ , maybePP pretty activ, pretty name, text "#-}"]++ pretty (InlineConlikeSig _ activ name) =+ mySep [ text "{-# INLINE CONLIKE", maybePP pretty activ+ , pretty name, text "#-}"]++ pretty (SpecSig _ activ name types) =+ mySep $ [text "{-# SPECIALISE", maybePP pretty activ+ , pretty name, text "::"]+ ++ punctuate comma (map pretty types) ++ [text "#-}"]++ pretty (SpecInlineSig _ inl activ name types) =+ mySep $ [text "{-# SPECIALISE", text (if inl then "INLINE" else "NOINLINE"),+ maybePP pretty activ, pretty name, text "::"]+ ++ (punctuate comma $ map pretty types) ++ [text "#-}"]++ pretty (InstSig _ irule) =+ mySep $ [ text "{-# SPECIALISE", text "instance", pretty irule+ , text "#-}"]++ pretty (AnnPragma _ annp) =+ mySep [text "{-# ANN", pretty annp, text "#-}"]++ pretty (MinimalPragma _ b) =+ let bs = case b of { Just b' -> pretty b'; _ -> empty }+ in myFsep [text "{-# MINIMAL", bs, text "#-}"]++ pretty (RoleAnnotDecl _ qn rs) =+ mySep ( [text "type", text "role", pretty qn]+ ++ map pretty rs )+ pretty (CompletePragma _ cls opt_ts) =+ let cls_p = punctuate comma $ map pretty cls+ ts_p = maybe empty (\tc -> text "::" <+> pretty tc) opt_ts+ in myFsep $ [text "{-# COMPLETE"] ++ cls_p ++ [ts_p, text "#-}"]++instance Pretty (InstRule l) where+ pretty (IRule _ tvs mctxt qn) =+ mySep [ppForall tvs+ , maybePP pretty mctxt, pretty qn]+ pretty (IParen _ ih) = parens (pretty ih)++instance Pretty (InstHead l) where+ pretty (IHCon _ qn) = pretty qn+ pretty (IHInfix _ ta qn) = mySep [pretty ta, pretty qn]+ pretty (IHParen _ ih) = parens (pretty ih)+ pretty (IHApp _ ih t) = myFsep [pretty ih, pretty t]+++instance Pretty (Annotation l) where+ pretty (Ann _ n e) = myFsep [pretty n, pretty e]+ pretty (TypeAnn _ n e) = myFsep [text "type", pretty n, pretty e]+ pretty (ModuleAnn _ e) = myFsep [text "module", pretty e]++instance Pretty (BooleanFormula l) where+ pretty (VarFormula _ n) = pretty n+ pretty (AndFormula _ bs) = myFsep $ punctuate (text " ,") $ map pretty bs+ pretty (OrFormula _ bs) = myFsep $ punctuate (text " |") $ map pretty bs+ pretty (ParenFormula _ b) = parens $ pretty b++instance Pretty (Role l) where+ pretty RoleWildcard{} = char '_'+ pretty Nominal{} = text "nominal"+ pretty Representational{} = text "representational"+ pretty Phantom{} = text "phantom"++instance Pretty (DataOrNew l) where+ pretty DataType{} = text "data"+ pretty NewType{} = text "newtype"++instance Pretty (Assoc l) where+ pretty AssocNone{} = text "infix"+ pretty AssocLeft{} = text "infixl"+ pretty AssocRight{} = text "infixr"++instance Pretty (Match l) where+ pretty (InfixMatch _ l op rs rhs wbinds) =+ let+ lhs = case rs of+ [] -> [] -- Should never reach+ (r:rs') ->+ let hd = [prettyPrec 2 l, ppNameInfix op, prettyPrec 2 r]+ in if null rs'+ then hd+ else parens (myFsep hd) : map (prettyPrec 3) rs'++ in myFsep (lhs ++ [pretty rhs]) $$$ ppWhere wbinds+ pretty (Match _ f ps rhs whereBinds) =+ myFsep (pretty f : map (prettyPrec 3) ps ++ [pretty rhs])+ $$$ ppWhere whereBinds++ppWhere :: Maybe (Binds l) -> Doc+ppWhere Nothing = empty+ppWhere (Just (BDecls _ l)) = nest 2 (text "where" $$$ ppBody whereIndent (ppDecls False l))+ppWhere (Just (IPBinds _ b)) = nest 2 (text "where" $$$ ppBody whereIndent (ppDecls False b))++instance PrettyDeclLike (ClassDecl l) where+ wantsBlankline (ClsDecl _ d) = wantsBlankline d+ wantsBlankline (ClsDefSig {}) = True+ wantsBlankline _ = False++instance Pretty (ClassDecl l) where+ pretty (ClsDecl _ decl) = pretty decl++ pretty (ClsDataFam _ context declHead optkind) =+ mySep ( [text "data", maybePP pretty context, pretty declHead+ , maybePP pretty optkind])++ pretty (ClsTyFam _ declHead optkind optinj) =+ mySep ( [text "type", pretty declHead+ , maybePP pretty optkind, maybePP pretty optinj])++ pretty (ClsTyDef _ ntype) =+ mySep [text "type", pretty ntype]++ pretty (ClsDefSig _ name typ) =+ mySep [+ text "default",+ pretty name,+ text "::",+ pretty typ]++instance Pretty (DeclHead l) where+ pretty (DHead _ n) = pretty n+ pretty (DHInfix _ tv n) = pretty tv <+> ppNameInfix n+ pretty (DHParen _ d) = parens (pretty d)+ pretty (DHApp _ dh tv) = pretty dh <+> pretty tv++++instance PrettyDeclLike (InstDecl l) where+ wantsBlankline (InsDecl _ d) = wantsBlankline d+ wantsBlankline _ = False++instance Pretty (InstDecl l) where+ pretty (InsDecl _ decl) = pretty decl++ pretty (InsType _ ntype htype) =+ mySep [text "type", pretty ntype, equals, pretty htype]++ pretty (InsData _ don ntype constrList derives) =+ mySep [pretty don, pretty ntype]+ <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))+ (map pretty constrList))+ $$$ ppIndent letIndent (map pretty derives))++ pretty (InsGData _ don ntype optkind gadtList derives) =+ mySep ( [pretty don, pretty ntype]+ ++ ppOptKind optkind ++ [text "where"])+ $$$ ppBody classIndent (map pretty gadtList)+ $$$ ppIndent letIndent (map pretty derives)++-- pretty (InsInline loc inl activ name) =+-- markLine loc $+-- mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), pretty activ, pretty name, text "#-}"]+++------------------------- FFI stuff -------------------------------------+instance Pretty (Safety l) where+ pretty PlayRisky {} = text "unsafe"+ pretty (PlaySafe _ b) = text $ if b then "threadsafe" else "safe"+ pretty PlayInterruptible {} = text "interruptible"++instance Pretty (CallConv l) where+ pretty StdCall {} = text "stdcall"+ pretty CCall {} = text "ccall"+ pretty CPlusPlus {} = text "cplusplus"+ pretty DotNet {} = text "dotnet"+ pretty Jvm {} = text "jvm"+ pretty Js {} = text "js"+ pretty JavaScript {} = text "javascript"+ pretty CApi {} = text "capi"++------------------------- Pragmas ---------------------------------------+ppWarnDepr :: ([Name l], String) -> Doc+ppWarnDepr (names, txt) = mySep $ punctuate comma (map pretty names) ++ [text $ show txt]++instance Pretty (Rule l) where+ pretty (Rule _ tag activ rvs rhs lhs) =+ mySep [text $ show tag, maybePP pretty activ,+ maybePP ppRuleVars rvs,+ pretty rhs, char '=', pretty lhs]++ppRuleVars :: [RuleVar l] -> Doc+ppRuleVars [] = empty+ppRuleVars rvs = mySep $ text "forall" : map pretty rvs ++ [char '.']++instance Pretty (Activation l) where+ pretty (ActiveFrom _ i) = char '[' <> int i <> char ']'+ pretty (ActiveUntil _ i) = text "[~" <> int i <> char ']'++instance Pretty (Overlap l) where+ pretty Overlap {} = text "{-# OVERLAP #-}"+ pretty Overlaps {} = text "{-# OVERLAPS #-}"+ pretty Overlapping {} = text "{-# OVERLAPPING #-}"+ pretty Overlappable {} = text "{-# OVERLAPPABLE #-}"+ pretty NoOverlap {} = text "{-# NO_OVERLAP #-}"+ pretty Incoherent {} = text "{-# INCOHERENT #-}"++instance Pretty (RuleVar l) where+ pretty (RuleVar _ n) = pretty n+ pretty (TypedRuleVar _ n t) = parens $ mySep [pretty n, text "::", pretty t]++-- Spaces are stripped from the pragma text but other whitespace+-- is not.+ppOptionsPragma :: Doc -> String -> Doc+ppOptionsPragma opt s =+ case s of+ ('\n':_) -> opt <> text s <> text "#-}"+ _ -> myFsep [opt, text s <> text "#-}"]++instance Pretty (ModulePragma l) where+ pretty (LanguagePragma _ ns) =+ myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]+ pretty (OptionsPragma _ (Just tool) s) =+ ppOptionsPragma (text "{-# OPTIONS_" <> pretty tool) s+ pretty (OptionsPragma _ _ s) =+ ppOptionsPragma (text "{-# OPTIONS") s+ pretty (AnnModulePragma _ mann) =+ myFsep [text "{-# ANN", pretty mann, text "#-}"]+++instance Pretty Tool where+ pretty (UnknownTool s) = text s+ pretty t = text $ show t++------------------------- Data & Newtype Bodies -------------------------+instance Pretty (QualConDecl l) where+ pretty (QualConDecl _pos tvs ctxt con) =+ myFsep [ppForall tvs, maybePP pretty ctxt, pretty con]++instance Pretty (GadtDecl l) where+ pretty (GadtDecl _pos name tvs ctxt names ty) =+ case names of+ Nothing ->+ myFsep [pretty name, text "::", pretty ty]+ Just ts' ->+ myFsep [pretty name, text "::" , ppForall tvs, maybePP pretty ctxt,+ braceList . map pretty $ ts', text "->", pretty ty]++instance Pretty (ConDecl l) where+ pretty (RecDecl _ name fieldList) =+ pretty name <> braceList (map pretty fieldList)++{- pretty (ConDecl name@(Symbol _) [l, r]) =+ myFsep [prettyPrec prec_btype l, ppName name,+ prettyPrec prec_btype r] -}+ pretty (ConDecl _ name typeList) =+ mySep $ pretty name : map (prettyPrec prec_atype) typeList+ pretty (InfixConDecl _ l name r) =+ myFsep [prettyPrec prec_btype l, ppNameInfix name,+ prettyPrec prec_btype r]+++instance Pretty (FieldDecl l) where+ pretty (FieldDecl _ names ty) =+ myFsepSimple $ (punctuate comma . map pretty $ names) +++ [text "::", pretty ty]++instance Pretty (BangType l) where+ pretty BangedTy {} = char '!'+ pretty LazyTy {} = char '~'+ pretty NoStrictAnnot {} = empty++instance Pretty (Unpackedness l) where+ pretty Unpack {} = text "{-# UNPACK #-} "+ pretty NoUnpack {} = text "{-# NOUNPACK #-} "+ pretty NoUnpackPragma {} = empty++instance Pretty (Deriving l) where+ pretty (Deriving _ mds d) =+ hsep [ text "deriving"+ , pp_strat_before+ , pp_dct+ , pp_strat_after ]+ where+ pp_dct =+ case d of+ [d'] -> pretty d'+ _ -> parenList (map pretty d)++ -- @via@ is unique in that in comes /after/ the class being derived,+ -- so we must special-case it.+ (pp_strat_before, pp_strat_after) =+ case mds of+ Just (via@DerivVia{}) -> (empty, pretty via)+ _ -> (maybePP pretty mds, empty)++instance Pretty (DerivStrategy l) where+ pretty ds =+ case ds of+ DerivStock _ -> text "stock"+ DerivAnyclass _ -> text "anyclass"+ DerivNewtype _ -> text "newtype"+ DerivVia _ ty -> text "via" <+> pretty ty++------------------------- Types -------------------------+ppBType :: Type l -> Doc+ppBType = prettyPrec prec_btype++ppAType :: Type l -> Doc+ppAType = prettyPrec prec_atype++-- precedences for types+prec_btype, prec_atype :: Int+prec_btype = 1 -- left argument of ->,+ -- or either argument of an infix data constructor+prec_atype = 2 -- argument of type or data constructor, or of a class++instance Pretty (Type l) where+ prettyPrec p (TyForall _ mtvs ctxt htype) = parensIf (p > 0) $+ myFsep [ppForall mtvs, maybePP pretty ctxt, pretty htype]+ prettyPrec _ (TyStar _) = text "*"+ prettyPrec p (TyFun _ a b) = parensIf (p > 0) $+ myFsep [ppBType a, text "->", pretty b]+ prettyPrec _ (TyTuple _ bxd l) =+ let ds = map pretty l+ in case bxd of+ Boxed -> parenList ds+ Unboxed -> hashParenList ds+ prettyPrec _ (TyUnboxedSum _ es) = unboxedSumType (map pretty es)++ prettyPrec _ (TyList _ t) = brackets $ pretty t+ prettyPrec _ (TyParArray _ t) = bracketColonList [pretty t]+ prettyPrec p (TyApp _ a b) =+ {-+ | a == list_tycon = brackets $ pretty b -- special case+ | otherwise = -} parensIf (p > prec_btype) $+ myFsep [pretty a, ppAType b]+ prettyPrec _ (TyVar _ name) = pretty name+ prettyPrec _ (TyCon _ name) = pretty name+ prettyPrec _ (TyParen _ t) = parens (pretty t)+ prettyPrec _ (TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]+ prettyPrec _ (TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])+ prettyPrec _ (TyPromoted _ p) = pretty p+ prettyPrec p (TyEquals _ a b) = parensIf (p > 0) (myFsep [pretty a, text "~", pretty b])+ prettyPrec _ (TySplice _ s) = pretty s+ prettyPrec _ (TyBang _ b u t) = pretty u <> pretty b <> prettyPrec prec_atype t+ prettyPrec _ (TyWildCard _ mn) = char '_' <> maybePP pretty mn+ prettyPrec _ (TyQuasiQuote _ n qt) = text ("[" ++ n ++ "|" ++ qt ++ "|]")++instance Pretty (MaybePromotedName l) where+ pretty (PromotedName _ q) = char '\'' <> ppQNameInfix q+ pretty (UnpromotedName _ q) = ppQNameInfix q+++instance Pretty (Promoted l) where+ pretty p =+ case p of+ PromotedInteger _ n _ -> integer n+ PromotedString _ s _ -> doubleQuotes $ text s+ PromotedCon _ hasQuote qn ->+ addQuote hasQuote (pretty qn)+ PromotedList _ hasQuote list ->+ addQuote hasQuote $ brackets . addSpace list . prettyList $ list+ PromotedTuple _ list ->+ addQuote True $ parens . addSpace list . prettyList $ list+ PromotedUnit {} -> addQuote True $ text "()"+ where+ addQuote True doc = char '\'' <> doc+ addQuote False doc = doc++ checkQuote (PromotedCon _ q _) = q+ checkQuote (PromotedList _ q _) = q+ checkQuote (PromotedTuple _ _) = True+ checkQuote _ = False++ addSpace (TyPromoted _ l0:_) | checkQuote l0 = (space <>)+ addSpace _ = id++ prettyList = myFsepSimple . punctuate comma . map pretty+++instance Pretty (TyVarBind l) where+ pretty (KindedVar _ var kind) = parens $ myFsep [pretty var, text "::", pretty kind]+ pretty (UnkindedVar _ var) = pretty var++ppForall :: Maybe [TyVarBind l] -> Doc+ppForall Nothing = empty+ppForall (Just []) = empty+ppForall (Just vs) = myFsep (text "forall" : map pretty vs ++ [char '.'])++---------------------------- Kinds ----------------------------++ppOptKind :: Maybe (Kind l) -> [Doc]+ppOptKind Nothing = []+ppOptKind (Just k) = [text "::", pretty k]++------------------- Functional Dependencies -------------------+instance Pretty (FunDep l) where+ pretty (FunDep _ from to) =+ myFsep $ map pretty from ++ [text "->"] ++ map pretty to+++ppFunDeps :: [FunDep l] -> Doc+ppFunDeps [] = empty+ppFunDeps fds = myFsep $ (char '|':) . punctuate comma . map pretty $ fds++------------------------- Expressions -------------------------+instance Pretty (Rhs l) where+ pretty (UnGuardedRhs _ e) = equals <+> pretty e+ pretty (GuardedRhss _ guardList) = myVcat . map pretty $ guardList++instance Pretty (GuardedRhs l) where+ pretty (GuardedRhs _pos guards ppBody') =+ myFsep $ [char '|'] ++ (punctuate comma . map pretty $ guards) ++ [equals, pretty ppBody']++newtype GuardedAlts l = GuardedAlts (Rhs l)+newtype GuardedAlt l = GuardedAlt (GuardedRhs l)++instance Pretty (GuardedAlts l) where+ pretty (GuardedAlts (UnGuardedRhs _ e)) = text "->" <+> pretty e+ pretty (GuardedAlts (GuardedRhss _ guardList)) = myVcat . map (pretty . GuardedAlt) $ guardList++instance Pretty (GuardedAlt l) where+ pretty (GuardedAlt (GuardedRhs _pos guards ppBody')) =+ myFsep $ [char '|'] ++ (punctuate comma . map pretty $ guards) ++ [text "->", pretty ppBody']++instance Pretty (Literal l) where+ pretty (Int _ i _) = integer i+ pretty (Char _ c _) = text (show c)+ pretty (String _ s _) = text (show s)+ pretty (Frac _ r _) = double (fromRational r)+ -- GHC unboxed literals:+ pretty (PrimChar _ c _) = text (show c) <> char '#'+ pretty (PrimString _ s _) = text (show s) <> char '#'+ pretty (PrimInt _ i _) = integer i <> char '#'+ pretty (PrimWord _ w _) = integer w <> text "##"+ pretty (PrimFloat _ r _) = float (fromRational r) <> char '#'+ pretty (PrimDouble _ r _) = double (fromRational r) <> text "##"++instance Pretty (Exp l) where+ prettyPrec _ (Lit _ l) = pretty l+ -- lambda stuff+ -- WARNING: This stuff is fragile. See #152 for one example of how+ -- things can break.+ prettyPrec p (InfixApp _ a op b) = parensIf (p > 2) $ myFsep [prettyPrec 1 a, pretty op, prettyPrec 1 b]+ prettyPrec p (NegApp _ e) = parensIf (p > 0) $ char '-' <> prettyPrec 2 e+ prettyPrec p (App _ a b) = parensIf (p > 3) $ myFsep [prettyPrec 3 a, prettyPrec 4 b]+ prettyPrec p (Lambda _loc patList ppBody') = parensIf (p > 1) $ myFsep $+ char '\\' : map (prettyPrec 3) patList ++ [text "->", pretty ppBody']+ -- keywords+ -- two cases for lets+ prettyPrec p (Let _ (BDecls _ declList) letBody) =+ parensIf (p > 1) $ ppLetExp declList letBody+ prettyPrec p (Let _ (IPBinds _ bindList) letBody) =+ parensIf (p > 1) $ ppLetExp bindList letBody++ prettyPrec p (If _ cond thenexp elsexp) = parensIf (p > 1) $+ myFsep [text "if", pretty cond,+ text "then", pretty thenexp,+ text "else", pretty elsexp]+ prettyPrec p (MultiIf _ alts) = parensIf (p > 1) $+ text "if"+ $$$ ppBody multiIfIndent (map (pretty . GuardedAlt) alts)+ prettyPrec p (Case _ cond altList) = parensIf (p > 1) $+ myFsep ([text "case", pretty cond, text "of"] +++ if null altList then [text "{", text "}"] else [])+ $$$ ppBody caseIndent (map pretty altList)+ prettyPrec p (Do _ stmtList) = parensIf (p > 1) $+ text "do" $$$ ppBody doIndent (map pretty stmtList)+ prettyPrec p (MDo _ stmtList) = parensIf (p > 1) $+ text "mdo" $$$ ppBody doIndent (map pretty stmtList)+ -- Constructors & Vars+ prettyPrec _ (Var _ name) = pretty name+ prettyPrec _ (OverloadedLabel _ name) = text ('#':name)+ prettyPrec _ (IPVar _ ipname) = pretty ipname+ prettyPrec _ (Con _ name) = pretty name+ prettyPrec _ (Tuple _ bxd expList) =+ let ds = map pretty expList+ in case bxd of+ Boxed -> parenList ds+ Unboxed -> hashParenList ds+ prettyPrec _ (UnboxedSum _ before after exp) =+ printUnboxedSum before after exp+ prettyPrec _ (TupleSection _ bxd mExpList) =+ let ds = map (maybePP pretty) mExpList+ in case bxd of+ Boxed -> parenList ds+ Unboxed -> hashParenList ds+ -- weird stuff+ prettyPrec _ (Paren _ e) = parens . pretty $ e+ prettyPrec _ (LeftSection _ e op) = parens (pretty e <+> pretty op)+ prettyPrec _ (RightSection _ op e) = parens (pretty op <+> pretty e)+ prettyPrec _ (RecConstr _ c fieldList) =+ pretty c <> (braceList . map pretty $ fieldList)+ prettyPrec _ (RecUpdate _ e fieldList) =+ pretty e <> (braceList . map pretty $ fieldList)+ -- Lists and parallel arrays+ prettyPrec _ (List _ list) =+ bracketList . punctuate comma . map pretty $ list+ prettyPrec _ (ParArray _ arr) =+ bracketColonList . map pretty $ arr+ prettyPrec _ (EnumFrom _ e) =+ bracketList [pretty e, text ".."]+ prettyPrec _ (EnumFromTo _ from to) =+ bracketList [pretty from, text "..", pretty to]+ prettyPrec _ (EnumFromThen _ from thenE) =+ bracketList [pretty from <> comma, pretty thenE, text ".."]+ prettyPrec _ (EnumFromThenTo _ from thenE to) =+ bracketList [pretty from <> comma, pretty thenE,+ text "..", pretty to]+ prettyPrec _ (ParArrayFromTo _ from to) =+ bracketColonList [pretty from, text "..", pretty to]+ prettyPrec _ (ParArrayFromThenTo _ from thenE to) =+ bracketColonList [pretty from <> comma, pretty thenE,+ text "..", pretty to]+ prettyPrec _ (ListComp _ e qualList) =+ bracketList ([pretty e, char '|']+ ++ (punctuate comma . map pretty $ qualList))+ prettyPrec _ (ParComp _ e qualLists) =+ bracketList (punctuate (char '|') $+ pretty e : map (hsep . punctuate comma . map pretty) qualLists)+ prettyPrec _ (ParArrayComp _ e qualArrs) =+ bracketColonList (punctuate (char '|') $+ pretty e : map (hsep . punctuate comma . map pretty) qualArrs)+ prettyPrec p (ExpTypeSig _pos e ty) = parensIf (p > 0) $+ myFsep [pretty e, text "::", pretty ty]+ -- Template Haskell+ prettyPrec _ (BracketExp _ b) = pretty b+ prettyPrec _ (SpliceExp _ s) = pretty s+ prettyPrec _ (TypQuote _ t) = text "\'\'" <> pretty t+ prettyPrec _ (VarQuote _ x) = text "\'" <> pretty x+ prettyPrec _ (QuasiQuote _ n qt) = text ("[" ++ n ++ "|" ++ qt ++ "|]")+ -- Hsx+ prettyPrec _ (XTag _ n attrs mattr cs) =+ let ax = maybe [] (return . pretty) mattr+ in hcat $+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+ map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]+ prettyPrec _ (XETag _ n attrs mattr) =+ let ax = maybe [] (return . pretty) mattr+ in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]+ prettyPrec _ (XPcdata _ s) = text s+ prettyPrec _ (XExpTag _ e) =+ myFsep [text "<%", pretty e, text "%>"]+ prettyPrec _ (XChildTag _ cs) =+ myFsep $ text "<%>" : map pretty cs ++ [text "</%>"]++ -- Pragmas+ prettyPrec _ (CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]+ prettyPrec _ (SCCPragma _ s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e]+ prettyPrec _ (GenPragma _ s (a,b) (c,d) e) =+ myFsep [text "{-# GENERATED", text $ show s,+ int a, char ':', int b, char '-',+ int c, char ':', int d, text "#-}", pretty e]+ -- Arrows+ prettyPrec p (Proc _ pat e) = parensIf (p > 1) $ myFsep [text "proc", pretty pat, text "->", pretty e]+ prettyPrec p (LeftArrApp _ l r) = parensIf (p > 0) $ myFsep [pretty l, text "-<", pretty r]+ 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) $+ myFsep (text "\\case":+ if null altList then [text "{", text "}"] else [])+ $$$ ppBody caseIndent (map pretty altList)+ prettyPrec _ (TypeApp _ ty) = char '@' <> pretty ty++printUnboxedSum :: Pretty e => Int -> Int -> e -> Doc+printUnboxedSum before after exp =+ hashParens . myFsep $ (replicate before (text "|")+ ++ [pretty exp]+ ++ (replicate after (text "|")))+++instance Pretty (XAttr l) where+ pretty (XAttr _ n v) =+ myFsep [pretty n, char '=', pretty v]++instance Pretty (XName l) where+ pretty (XName _ n) = text n+ pretty (XDomName _ d n) = text d <> char ':' <> text n++ppLetExp :: (PrettyDeclLike a, Pretty b) => [a] -> b -> Doc+ppLetExp l b = myFsep [text "let" <+> ppBody letIndent (ppDecls False l),+ text "in", pretty b]++--------------------- Template Haskell -------------------------++instance Pretty (Bracket l) where+ pretty (ExpBracket _ e) = ppBracket "[|" e+ pretty (TExpBracket _ e) = myFsep [text "[||", pretty e, text "||]"]+ pretty (PatBracket _ p) = ppBracket "[p|" p+ pretty (TypeBracket _ t) = ppBracket "[t|" t+ pretty (DeclBracket _ d) =+ myFsep $ text "[d|" : ppDecls True d ++ [text "|]"]++ppBracket :: Pretty a => String -> a -> Doc+ppBracket o x = myFsep [text o, pretty x, text "|]"]++instance Pretty (Splice l) where+ pretty (IdSplice _ s) = char '$' <> text s+ pretty (TIdSplice _ s) = char '$' <> char '$' <> text s+ pretty (TParenSplice _ e) =+ myFsep [text "$$(", pretty e, char ')']+ pretty (ParenSplice _ e) =+ myFsep [text "$(", pretty e, char ')']++------------------------- Patterns -----------------------------++instance Pretty (Pat l) where+ prettyPrec _ (PVar _ name) = pretty name+ prettyPrec _ (PLit _ (Signless {}) lit) = pretty lit+ prettyPrec p (PLit _ (Negative{}) lit) = parensIf (p > 1) $ char '-' <> pretty lit+ prettyPrec p (PInfixApp l a op b) = parensIf (p > 0) $+ myFsep [prettyPrec 1 a, pretty (QConOp l op), prettyPrec 1 b]+ prettyPrec p (PApp _ n ps) = parensIf (p > 2 && not (null ps)) $+ myFsep (pretty n : map (prettyPrec 3) ps)+ prettyPrec _ (PTuple _ bxd ps) =+ let ds = map pretty ps+ in case bxd of+ Boxed -> parenList ds+ Unboxed -> hashParenList ds+ prettyPrec _ (PUnboxedSum _ before after exp) =+ printUnboxedSum before after exp+ prettyPrec _ (PList _ ps) =+ bracketList . punctuate comma . map pretty $ ps+ prettyPrec _ (PParen _ pat) = parens . pretty $ pat+ prettyPrec _ (PRec _ c fields) =+ pretty c <> (braceList . map pretty $ fields)+ -- special case that would otherwise be buggy+ prettyPrec _ (PAsPat _ name (PIrrPat _ pat)) =+ myFsep [pretty name <> char '@', char '~' <> prettyPrec 3 pat]+ prettyPrec _ (PAsPat _ name pat) =+ hcat [pretty name, char '@', prettyPrec 3 pat]+ prettyPrec _ PWildCard {} = char '_'+ prettyPrec _ (PIrrPat _ pat) = char '~' <> prettyPrec 3 pat+ prettyPrec p (PatTypeSig _pos pat ty) = parensIf (p > 0) $+ myFsep [pretty pat, text "::", pretty ty]+ prettyPrec p (PViewPat _ e pat) = parensIf (p > 0) $+ myFsep [pretty e, text "->", pretty pat]+ prettyPrec p (PNPlusK _ n k) = parensIf (p > 0) $+ myFsep [pretty n, text "+", text $ show k]+ -- HaRP+ prettyPrec _ (PRPat _ rs) =+ bracketList . punctuate comma . map pretty $ rs+ -- Hsx+ prettyPrec _ (PXTag _ n attrs mattr cp) =+ let ap = maybe [] (return . pretty) mattr+ in hcat $ -- TODO: should not introduce blanks+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [char '>']):+ map pretty cp ++ [myFsep [text "</" <> pretty n, char '>']]+ prettyPrec _ (PXETag _ n attrs mattr) =+ let ap = maybe [] (return . pretty) mattr+ in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [text "/>"]+ prettyPrec _ (PXPcdata _ s) = text s+ prettyPrec _ (PXPatTag _ p) =+ myFsep [text "<%", pretty p, text "%>"]+ prettyPrec _ (PXRPats _ ps) =+ myFsep $ text "<[" : map pretty ps ++ [text "%>"]+ -- BangPatterns+ prettyPrec _ (PBangPat _ pat) = text "!" <> prettyPrec 3 pat+ prettyPrec _ (PSplice _ s) = pretty s+ prettyPrec _ (PQuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")++instance Pretty (PXAttr l) where+ pretty (PXAttr _ n p) =+ myFsep [pretty n, char '=', pretty p]++instance Pretty (PatField l) where+ pretty (PFieldPat _ name pat) =+ myFsep [pretty name, equals, pretty pat]+ pretty (PFieldPun _ name) = pretty name+ pretty (PFieldWildcard{}) = text ".."++--------------------- Regular Patterns -------------------------++instance Pretty (RPat l) where+ pretty (RPOp _ r op) = pretty r <> pretty op+ pretty (RPEither _ r1 r2) = parens . myFsep $+ [pretty r1, char '|', pretty r2]+ pretty (RPSeq _ rs) =+ myFsep $ text "(|" : (punctuate comma . map pretty $ rs)+ ++ [text "|)"]+ pretty (RPGuard _ r gs) =+ myFsep $ text "(|" : pretty r : char '|' :+ (punctuate comma . map pretty $ gs) ++ [text "|)"]+ -- special case that would otherwise be buggy+ pretty (RPCAs _ n (RPPat _ (PIrrPat _ p))) =+ myFsep [pretty n <> text "@:", char '~' <> pretty p]+ pretty (RPCAs _ n r) = hcat [pretty n, text "@:", pretty r]+ -- special case that would otherwise be buggy+ pretty (RPAs _ n (RPPat _ (PIrrPat _ p))) =+ myFsep [pretty n <> text "@:", char '~' <> pretty p]+ pretty (RPAs _ n r) = hcat [pretty n, char '@', pretty r]+ pretty (RPPat _ p) = pretty p+ pretty (RPParen _ rp) = parens . pretty $ rp++instance Pretty (RPatOp l) where+ pretty RPStar{} = char '*'+ pretty RPStarG{} = text "*!"+ pretty RPPlus{} = char '+'+ pretty RPPlusG{} = text "+!"+ pretty RPOpt{} = char '?'+ pretty RPOptG{} = text "?!"++------------------------- Case bodies -------------------------+instance Pretty (Alt l) where+ pretty (Alt _pos e gAlts binds) =+ pretty e <+> pretty (GuardedAlts gAlts) $$$ ppWhere binds++------------------------- Statements in monads, guards & list comprehensions -----+instance Pretty (Stmt l) where+ pretty (Generator _loc e from) =+ pretty e <+> text "<-" <+> pretty from+ pretty (Qualifier _ e) = pretty e+ -- two cases for lets+ pretty (LetStmt _ (BDecls _ declList)) =+ ppLetStmt declList+ pretty (LetStmt _ (IPBinds _ bindList)) =+ ppLetStmt bindList+ pretty (RecStmt _ stmtList) =+ text "rec" $$$ ppBody letIndent (map pretty stmtList)++ppLetStmt :: Pretty a => [a] -> Doc+ppLetStmt l = text "let" $$$ ppBody letIndent (map pretty l)++instance Pretty (QualStmt l) where+ pretty (QualStmt _ s) = pretty s+ pretty (ThenTrans _ f) = myFsep [text "then", pretty f]+ pretty (ThenBy _ f e) = myFsep [text "then", pretty f, text "by", pretty e]+ pretty (GroupBy _ e) = myFsep [text "then", text "group", text "by", pretty e]+ pretty (GroupUsing _ f) = myFsep [text "then", text "group", text "using", pretty f]+ pretty (GroupByUsing _ e f) = myFsep [text "then", text "group", text "by",+ pretty e, text "using", pretty f]++++------------------------- Record updates+instance Pretty (FieldUpdate l) where+ pretty (FieldUpdate _ name e) =+ myFsep [pretty name, equals, pretty e]+ pretty (FieldPun _ name) = pretty name+ pretty (FieldWildcard {}) = text ".."++------------------------- Names -------------------------+instance Pretty (QOp l) where+ pretty (QVarOp _ n) = ppQNameInfix n+ pretty (QConOp _ n) = ppQNameInfix n++ppQNameInfix :: QName l -> Doc+ppQNameInfix name+ | isSymbolQName name = ppQName name+ | otherwise = char '`' <> ppQName name <> char '`'++instance Pretty (QName l) where+ pretty name = case name of+ UnQual _ (Symbol _ ('#':_)) -> char '(' <+> ppQName name <+> char ')'+ _ -> parensIf (isSymbolQName name) (ppQName name)++ppQName :: QName l -> Doc+ppQName (UnQual _ name) = ppName name+ppQName (Qual _ m name) = pretty m <> char '.' <> ppName name+ppQName (Special _ sym) = pretty sym++instance Pretty (Op l) where+ pretty (VarOp _ n) = ppNameInfix n+ pretty (ConOp _ n) = ppNameInfix n++ppNameInfix :: Name l -> Doc+ppNameInfix name+ | isSymbolName name = ppName name+ | otherwise = char '`' <> ppName name <> char '`'++instance Pretty (Name l) where+ pretty name = case name of+ Symbol _ ('#':_) -> char '(' <+> ppName name <+> char ')'+ _ -> parensIf (isSymbolName name) (ppName name)++ppName :: Name l -> Doc+ppName (Ident _ s) = text s+ppName (Symbol _ s) = text s++instance Pretty (IPName l) where+ pretty (IPDup _ s) = char '?' <> text s+ pretty (IPLin _ s) = char '%' <> text s++instance PrettyDeclLike (IPBind l) where+ wantsBlankline _ = False++instance Pretty (IPBind l) where+ pretty (IPBind _loc ipname exp) =+ myFsep [pretty ipname, equals, pretty exp]++instance Pretty (CName l) where+ pretty (VarName _ n) = pretty n+ pretty (ConName _ n) = pretty n++instance Pretty (SpecialCon l) where+ pretty (UnitCon {}) = text "()"+ pretty (ListCon {}) = text "[]"+ pretty (FunCon {}) = text "->"+ pretty (TupleCon _ b n) = listFun $ foldr (<>) empty (replicate (n-1) comma)+ where listFun = if b == Unboxed then hashParens else parens+ pretty (Cons {}) = text ":"+ pretty (UnboxedSingleCon {}) = text "(# #)"+ pretty (ExprHole {}) = text "_"++isSymbolName :: Name l -> Bool+isSymbolName (Symbol {}) = True+isSymbolName _ = False++isSymbolQName :: QName l -> Bool+isSymbolQName (UnQual _ n) = isSymbolName n+isSymbolQName (Qual _ _ n) = isSymbolName n+isSymbolQName (Special _ (Cons {})) = True+isSymbolQName (Special _ (FunCon {})) = True+isSymbolQName _ = False++--getSpecialName :: QName l -> Maybe (SpecialCon l)+--getSpecialName (Special _ n) = Just n+--getSpecialName _ = Nothing++-- Contexts are "sets" of assertions. Several members really means it's a+-- CxTuple, but we can't represent that in our list of assertions.+-- Therefore: print single member contexts without parenthesis, and treat+-- larger contexts as tuples.+instance (Pretty (Context l)) where+ pretty (CxEmpty _) = text "()" <+> text "=>"+ pretty (CxSingle _ ctxt) = pretty ctxt <+> text "=>"+ pretty (CxTuple _ context) = mySep [parenList (map pretty context), text "=>"]++instance Pretty (Asst l) where+ pretty (TypeA _ t) = pretty t+ pretty (IParam _ i t) = myFsep [pretty i, text "::", pretty t]+ pretty (ParenA _ a) = parens (pretty a)++-- Pretty print a source location, useful for printing out error messages+instance Pretty SrcLoc where+ pretty srcLoc =+ return $ P.hcat [ colonFollow (P.text $ srcFilename srcLoc)+ , colonFollow (P.int $ srcLine srcLoc)+ , P.int $ srcColumn srcLoc+ ]++colonFollow :: P.Doc -> P.Doc+colonFollow p = P.hcat [ p, P.colon ]+++instance Pretty SrcSpan where+ pretty srcSpan =+ return $ P.hsep [ colonFollow (P.text $ srcSpanFilename srcSpan)+ , P.hcat [ P.text "("+ , P.int $ srcSpanStartLine srcSpan+ , P.colon+ , P.int $ srcSpanStartColumn srcSpan+ , P.text ")"+ ]+ , P.text "-"+ , P.hcat [ P.text "("+ , P.int $ srcSpanEndLine srcSpan+ , P.colon+ , P.int $ srcSpanEndColumn srcSpan+ , P.text ")"+ ]+ ]++---------------------------------------------------------------------+-- Annotated version+++------------------------- Pretty-Print a Module --------------------+instance Pretty (Module pos) where+ pretty (Module _ mbHead os imp decls) =+ myVcat $ map pretty os +++ (case mbHead of+ Nothing -> id+ Just h -> \x -> [topLevel (pretty h) x])+ (map pretty imp +++ ppDecls (isJust mbHead ||+ not (null imp) ||+ not (null os))+ decls)+ pretty (XmlPage _ _mn os n attrs mattr cs) =+ myVcat $ map pretty os +++ [let ax = maybe [] (return . pretty) mattr+ in hcat $+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+ map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]]+ pretty (XmlHybrid _ mbHead os imp decls n attrs mattr cs) =+ myVcat $ map pretty os ++ [text "<%"] +++ (case mbHead of+ Nothing -> id+ Just h -> \x -> [topLevel (pretty h) x])+ (map pretty imp +++ ppDecls (isJust mbHead || not (null imp) || not (null os)) decls +++ [let ax = maybe [] (return . pretty) mattr+ in hcat $+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+ map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]])++++------------------------- pp utils -------------------------+maybePP :: (a -> Doc) -> Maybe a -> Doc+maybePP _ Nothing = empty+maybePP pp (Just a) = pp a++parenList :: [Doc] -> Doc+parenList = parens . myFsepSimple . punctuate comma++hashParenList :: [Doc] -> Doc+hashParenList = hashParens . myFsepSimple . punctuate comma++unboxedSumType :: [Doc] -> Doc+unboxedSumType = hashParens . myFsepSimple . punctuate (text " |")++hashParens :: Doc -> Doc+hashParens = parens . hashes+ where+ hashes doc = char '#' <+> doc <+> char '#'++braceList :: [Doc] -> Doc+braceList = braces . myFsepSimple . punctuate comma++bracketList :: [Doc] -> Doc+bracketList = brackets . myFsepSimple++bracketColonList :: [Doc] -> Doc+bracketColonList = bracketColons . myFsepSimple+ where bracketColons = brackets . colons+ colons doc = char ':' <> doc <> char ':'++-- Wrap in braces and semicolons, with an extra space at the start in+-- case the first doc begins with "-", which would be scanned as {-+flatBlock :: [Doc] -> Doc+flatBlock = braces . (space <>) . hsep . punctuate semi++-- Same, but put each thing on a separate line+prettyBlock :: [Doc] -> Doc+prettyBlock = braces . (space <>) . vcat . punctuate semi++-- Monadic PP Combinators -- these examine the env++blankline :: Doc -> Doc+blankline dl = do{e<-getPPEnv;if spacing e && layout e /= PPNoLayout+ then text "" $+$ dl else dl}+topLevel :: Doc -> [Doc] -> Doc+topLevel header dl = do+ e <- fmap layout getPPEnv+ case e of+ PPOffsideRule -> header $$ vcat dl+ PPSemiColon -> header $$ prettyBlock dl+ PPInLine -> header $$ prettyBlock dl+ PPNoLayout -> header <+> flatBlock dl++ppBody :: (PPHsMode -> Int) -> [Doc] -> Doc+ppBody f dl = do+ e <- fmap layout getPPEnv+ case e of PPOffsideRule -> indent+ PPSemiColon -> indentExplicit+ _ -> flatBlock dl+ where+ indent = do{i <-fmap f getPPEnv;nest i . vcat $ dl}+ indentExplicit = do {i <- fmap f getPPEnv;+ nest i . prettyBlock $ dl}++-- | Indent without braces. Useful for deriving clauses etc.+ppIndent :: (PPHsMode -> Int) -> [Doc] -> Doc+ppIndent f dl = do+ i <- fmap f getPPEnv+ nest i . vcat $ dl++($$$) :: Doc -> Doc -> Doc+a $$$ b = layoutChoice (a $$) (a <+>) b++mySep :: [Doc] -> Doc+mySep = layoutChoice mySep' hsep+ where+ -- ensure paragraph fills with indentation.+ mySep' [x] = x+ mySep' (x:xs) = x <+> fsep xs+ mySep' [] = error "Internal error: mySep"++myVcat :: [Doc] -> Doc+myVcat = layoutChoice vcat hsep++myFsepSimple :: [Doc] -> Doc+myFsepSimple = layoutChoice fsep hsep++-- same, except that continuation lines are indented,+-- which is necessary to avoid triggering the offside rule.+myFsep :: [Doc] -> Doc+myFsep = layoutChoice fsep' hsep+ where fsep' [] = empty+ fsep' (d:ds) = do+ e <- getPPEnv+ let n = onsideIndent e+ nest n (fsep (nest (-n) d:ds))++layoutChoice :: (a -> Doc) -> (a -> Doc) -> a -> Doc+layoutChoice a b dl = do e <- getPPEnv+ if layout e == PPOffsideRule ||+ layout e == PPSemiColon+ then a dl else b dl++--------------------------------------------------------------------------------+-- Pretty-printing of internal constructs, for error messages while parsing++instance SrcInfo loc => Pretty (P.PExp loc) where+ pretty (P.Lit _ l) = pretty l+ pretty (P.InfixApp _ a op b) = myFsep [pretty a, pretty op, pretty b]+ pretty (P.NegApp _ e) = myFsep [char '-', pretty e]+ pretty (P.App _ a b) = myFsep [pretty a, pretty b]+ pretty (P.Lambda _loc expList ppBody') = myFsep $+ char '\\' : map pretty expList ++ [text "->", pretty ppBody']+ pretty (P.Let _ (BDecls _ declList) letBody) =+ ppLetExp declList letBody+ pretty (P.Let _ (IPBinds _ bindList) letBody) =+ ppLetExp bindList letBody+ pretty (P.If _ cond thenexp elsexp) =+ myFsep [text "if", pretty cond,+ text "then", pretty thenexp,+ text "else", pretty elsexp]+ pretty (P.MultiIf _ alts) =+ text "if"+ $$$ ppBody caseIndent (map pretty alts)+ pretty (P.Case _ cond altList) =+ myFsep [text "case", pretty cond, text "of"]+ $$$ ppBody caseIndent (map pretty altList)+ pretty (P.Do _ stmtList) =+ text "do" $$$ ppBody doIndent (map pretty stmtList)+ pretty (P.MDo _ stmtList) =+ text "mdo" $$$ ppBody doIndent (map pretty stmtList)+ pretty (P.Var _ name) = pretty name+ pretty (P.OverloadedLabel _ name) = text name+ pretty (P.IPVar _ ipname) = pretty ipname+ pretty (P.Con _ name) = pretty name+ pretty (P.TupleSection _ bxd mExpList) =+ let ds = map (maybePP pretty) mExpList+ in case bxd of+ Boxed -> parenList ds+ Unboxed -> hashParenList ds+ pretty (P.UnboxedSum _ before after exp) =+ printUnboxedSum before after exp+ pretty (P.Paren _ e) = parens . pretty $ e+ pretty (P.RecConstr _ c fieldList) =+ pretty c <> (braceList . map pretty $ fieldList)+ pretty (P.RecUpdate _ e fieldList) =+ pretty e <> (braceList . map pretty $ fieldList)+ pretty (P.List _ list) =+ bracketList . punctuate comma . map pretty $ list+ pretty (P.ParArray _ arr) =+ bracketColonList . punctuate comma . map pretty $ arr+ pretty (P.EnumFrom _ e) =+ bracketList [pretty e, text ".."]+ pretty (P.EnumFromTo _ from to) =+ bracketList [pretty from, text "..", pretty to]+ pretty (P.EnumFromThen _ from thenE) =+ bracketList [pretty from <> comma, pretty thenE, text ".."]+ pretty (P.EnumFromThenTo _ from thenE to) =+ bracketList [pretty from <> comma, pretty thenE,+ text "..", pretty to]+ pretty (P.ParArrayFromTo _ from to) =+ bracketColonList [pretty from, text "..", pretty to]+ pretty (P.ParArrayFromThenTo _ from thenE to) =+ bracketColonList [pretty from <> comma, pretty thenE,+ text "..", pretty to]+ pretty (P.ParComp _ e qualLists) =+ bracketList (intersperse (char '|') $+ pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))+ pretty (P.ParArrayComp _ e qualArrs) =+ bracketColonList (intersperse (char '|') $+ pretty e : (punctuate comma . concatMap (map pretty) $ qualArrs))+ pretty (P.ExpTypeSig _pos e ty) =+ myFsep [pretty e, text "::", pretty ty]+ pretty (P.BracketExp _ b) = pretty b+ pretty (P.SpliceExp _ s) = pretty s+ pretty (P.TypQuote _ t) = text "\'\'" <> pretty t+ pretty (P.VarQuote _ x) = text "\'" <> pretty x+ pretty (P.QuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")+ pretty (P.XTag _ n attrs mattr cs) =+ let ax = maybe [] (return . pretty) mattr+ in hcat $+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+ map pretty cs ++ [myFsep [text "</" <> pretty n, char '>']]+ pretty (P.XETag _ n attrs mattr) =+ let ax = maybe [] (return . pretty) mattr+ in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]+ pretty (P.XPcdata _ s) = text s+ pretty (P.XExpTag _ e) =+ myFsep [text "<%", pretty e, text "%>"]+ pretty (P.XChildTag _ es) =+ myFsep $ text "<%>" : map pretty es ++ [text "</%>"]+ pretty (P.CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]+ pretty (P.SCCPragma _ s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e]+ pretty (P.GenPragma _ s (a,b) (c,d) e) =+ myFsep [text "{-# GENERATED", text $ show s,+ int a, char ':', int b, char '-',+ int c, char ':', int d, text "#-}", pretty e]+ pretty (P.Proc _ p e) = myFsep [text "proc", pretty p, text "->", pretty e]+ pretty (P.LeftArrApp _ l r) = myFsep [pretty l, text "-<", pretty r]+ 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) =+ hcat [pretty name, char '@', pretty pat]+ pretty (P.WildCard _) = char '_'+ pretty (P.IrrPat _ pat) = char '~' <> pretty pat+ pretty (P.PostOp _ e op) = pretty e <+> pretty op+ pretty (P.PreOp _ op e) = pretty op <+> pretty e+ pretty (P.ViewPat _ e p) =+ myFsep [pretty e, text "->", pretty p]+ pretty (P.SeqRP _ rs) =+ myFsep $ text "(|" : (punctuate comma . map pretty $ rs) ++ [text "|)"]+ pretty (P.GuardRP _ r gs) =+ myFsep $ text "(|" : pretty r : char '|' :+ (punctuate comma . map pretty $ gs) ++ [text "|)"]+ pretty (P.EitherRP _ r1 r2) = parens . myFsep $ [pretty r1, char '|', pretty r2]+ pretty (P.CAsRP _ n (P.IrrPat _ e)) =+ myFsep [pretty n <> text "@:", char '~' <> pretty e]+ pretty (P.CAsRP _ n r) = hcat [pretty n, text "@:", pretty r]+ pretty (P.XRPats _ ps) =+ myFsep $ text "<[" : map pretty ps ++ [text "%>"]+ pretty (P.BangPat _ e) = text "!" <> pretty e+ pretty (P.LCase _ altList) = text "\\case" $$$ ppBody caseIndent (map pretty altList)+ pretty (P.TypeApp _ ty) = char '@' <> pretty ty++instance SrcInfo loc => Pretty (P.PFieldUpdate loc) where+ pretty (P.FieldUpdate _ name e) =+ myFsep [pretty name, equals, pretty e]+ pretty (P.FieldPun _ name) = pretty name+ pretty (P.FieldWildcard _) = text ".."++instance SrcInfo loc => Pretty (P.ParseXAttr loc) where+ pretty (P.XAttr _ n v) =+ myFsep [pretty n, char '=', pretty v]++instance SrcInfo loc => Pretty (P.PContext loc) where+ pretty (P.CxEmpty _) = mySep [text "()", text "=>"]+ pretty (P.CxSingle _ asst) = mySep [pretty asst, text "=>"]+ pretty (P.CxTuple _ assts) = myFsep [parenList (map pretty assts), text "=>"]++instance SrcInfo loc => Pretty (P.PAsst loc) where+ pretty (P.TypeA _ t) = pretty t+ pretty (P.IParam _ i t) = myFsep [pretty i, text "::", pretty t]+ pretty (P.ParenA _ a) = parens (pretty a)++instance SrcInfo loc => Pretty (P.PType loc) where+ prettyPrec p (P.TyForall _ mtvs ctxt htype) = parensIf (p > 0) $+ myFsep [ppForall mtvs, maybePP pretty ctxt, pretty htype]+ prettyPrec _ (P.TyStar _) = text "*"+ prettyPrec p (P.TyFun _ a b) = parensIf (p > 0) $+ myFsep [prettyPrec prec_btype a, text "->", pretty b]+ prettyPrec _ (P.TyTuple _ bxd l) =+ let ds = map pretty l+ in case bxd of+ Boxed -> parenList ds+ Unboxed -> hashParenList ds+ prettyPrec _ (P.TyUnboxedSum _ es) =+ unboxedSumType (map pretty es)+ prettyPrec _ (P.TyList _ t) = brackets $ pretty t+ prettyPrec _ (P.TyParArray _ t) = bracketColonList [pretty t]+ prettyPrec p (P.TyApp _ a b) =+ {-+ | a == list_tycon = brackets $ pretty b -- special case+ | otherwise = -} parensIf (p > prec_btype) $+ myFsep [pretty a, prettyPrec prec_atype b]+ prettyPrec _ (P.TyVar _ name) = pretty name+ prettyPrec _ (P.TyCon _ name) = pretty name+ prettyPrec _ (P.TyParen _ t) = parens (pretty t)+ prettyPrec _ (P.TyPred _ asst) = pretty asst+ prettyPrec _ (P.TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]+ prettyPrec _ (P.TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])+ prettyPrec _ (P.TyPromoted _ p) = pretty p+ prettyPrec _ (P.TyEquals _ a b) = myFsep [pretty a, text "~", pretty b]+ prettyPrec _ (P.TySplice _ s) = pretty s+ prettyPrec _ (P.TyBang _ b u t) = pretty u <+> pretty b <> prettyPrec prec_atype t+ prettyPrec _ (P.TyWildCard _ mn) = char '_' <> maybePP pretty mn+ prettyPrec _ (P.TyQuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")
src/Language/Haskell/Exts/SrcLoc.hs view
@@ -1,173 +1,194 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-} ------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.SrcLoc --- Copyright : (c) Niklas Broberg 2009 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- This module defines various data types representing source location --- information, of varying degree of preciseness. --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.SrcLoc where - -#ifdef __GLASGOW_HASKELL__ -#ifdef BASE4 -import Data.Data -#else -import Data.Generics (Data(..),Typeable(..)) -#endif -#endif - --- | A single position in the source. -data SrcLoc = SrcLoc - { srcFilename :: String - , srcLine :: Int - , srcColumn :: Int - } -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Ord,Show,Typeable,Data) -#else - deriving (Eq,Ord,Show) -#endif - - --- | A portion of the source, spanning one or more lines and zero or more columns. -data SrcSpan = SrcSpan - { srcSpanFilename :: String - , srcSpanStartLine :: Int - , srcSpanStartColumn :: Int - , srcSpanEndLine :: Int - , srcSpanEndColumn :: Int - } -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Ord,Show,Typeable,Data) -#else - deriving (Eq,Ord,Show) -#endif - - --- | Returns 'srcSpanStartLine' and 'srcSpanStartColumn' in a pair. -srcSpanStart :: SrcSpan -> (Int,Int) -srcSpanStart x = (srcSpanStartLine x, srcSpanStartColumn x) - --- | Returns 'srcSpanEndLine' and 'srcSpanEndColumn' in a pair. -srcSpanEnd :: SrcSpan -> (Int,Int) -srcSpanEnd x = (srcSpanEndLine x, srcSpanEndColumn x) - - --- | Combine two locations in the source to denote a span. -mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan -mkSrcSpan (SrcLoc fn sl sc) (SrcLoc _ el ec) = SrcSpan fn sl sc el ec - --- | Merge two source spans into a single span from the start of the first --- to the end of the second. Assumes that the two spans relate to the --- same source file. -mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan -mergeSrcSpan (SrcSpan fn sl1 sc1 el1 ec1) (SrcSpan _ sl2 sc2 el2 ec2) = - let (sl,sc) = min (sl1,sc1) (sl2,sc2) - (el,ec) = max (el1,ec1) (el2,ec2) - in SrcSpan fn sl sc el ec - --- | Test if a given span starts and ends at the same location. -isNullSpan :: SrcSpan -> Bool -isNullSpan ss = srcSpanStartLine ss == srcSpanEndLine ss && - srcSpanStartColumn ss >= srcSpanEndColumn ss - --- | An entity located in the source. -data Loc a = Loc - { loc :: SrcSpan - , unLoc :: a - } - deriving (Eq,Ord,Show) - - --- | A portion of the source, extended with information on the position of entities within the span. -data SrcSpanInfo = SrcSpanInfo - { srcInfoSpan :: SrcSpan --- , explLayout :: Bool - , srcInfoPoints :: [SrcSpan] -- Marks the location of specific entities inside the span - } -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Ord,Show,Typeable,Data) -#else - deriving (Eq,Ord,Show) -#endif - --- | Generate a 'SrcSpanInfo' with no positional information for entities. -noInfoSpan :: SrcSpan -> SrcSpanInfo -noInfoSpan ss = SrcSpanInfo ss [] - --- | Generate a 'SrcSpanInfo' with the supplied positional information for entities. -infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo -infoSpan = SrcSpanInfo - --- | Combine two 'SrcSpanInfo's into one that spans the combined source area of --- the two arguments, leaving positional information blank. -combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo -combSpanInfo s1 s2 = SrcSpanInfo - (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2)) - [] - --- | Short name for 'combSpanInfo' -(<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo -(<++>) = combSpanInfo - --- | Optionally combine the first argument with the second, --- or return it unchanged if the second argument is 'Nothing'. -(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo -a <+?> b = case b of {Nothing -> a; Just b -> a <++> b} - --- | Optionally combine the second argument with the first, --- or return it unchanged if the first argument is 'Nothing'. -(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo -a <?+> b = case a of {Nothing -> b; Just a -> a <++> b} - --- | Add more positional information for entities of a span. -(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo -ss@(SrcSpanInfo {srcInfoPoints = ps}) <** xs = ss {srcInfoPoints = ps ++ xs} - --- | Merge two 'SrcSpan's and lift them to a 'SrcInfoSpan' with --- no positional information for entities. -(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo -a <^^> b = noInfoSpan (mergeSrcSpan a b) - -infixl 6 <^^> -infixl 5 <++> -infixl 4 <**, <+?>, <?+> - --- | A class to work over all kinds of source location information. -class SrcInfo si where - toSrcInfo :: SrcLoc -> [SrcSpan] -> SrcLoc -> si - fromSrcInfo :: SrcSpanInfo -> si - getPointLoc :: si -> SrcLoc - fileName :: si -> String - startLine :: si -> Int - startColumn :: si -> Int - - getPointLoc si = SrcLoc (fileName si) (startLine si) (startColumn si) - -instance SrcInfo SrcLoc where - toSrcInfo s _ _ = s - fromSrcInfo si = SrcLoc (fileName si) (startLine si) (startColumn si) - fileName = srcFilename - startLine = srcLine - startColumn = srcColumn - -instance SrcInfo SrcSpan where - toSrcInfo st _ end = mkSrcSpan st end - fromSrcInfo = srcInfoSpan - fileName = srcSpanFilename - startLine = srcSpanStartLine - startColumn = srcSpanStartColumn - -instance SrcInfo SrcSpanInfo where - toSrcInfo st pts end = SrcSpanInfo (mkSrcSpan st end) pts - fromSrcInfo = id - fileName = fileName . srcInfoSpan - startLine = startLine . srcInfoSpan - startColumn = startColumn . srcInfoSpan +{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-}+-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.SrcLoc+-- Copyright : (c) Niklas Broberg 2009+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- This module defines various data types representing source location+-- information, of varying degree of preciseness.+--+-----------------------------------------------------------------------------+module Language.Haskell.Exts.SrcLoc where++import Data.Data+import GHC.Generics (Generic)++showInt :: Int -> String+showInt i | i < 0 = "(" ++ show i ++ ")"+showInt i = show i++-- | A single position in the source.+data SrcLoc = SrcLoc+ { srcFilename :: String+ , srcLine :: Int+ , srcColumn :: Int+ }+ deriving (Eq,Ord,Typeable,Data,Generic)++instance Show SrcLoc where+ showsPrec n (SrcLoc fn sl sc) =+ showParen (n >= 11) $+ showString $ "SrcLoc " ++ show fn ++ " " ++ unwords (map showInt [sl,sc])++noLoc :: SrcLoc+noLoc = SrcLoc "" (-1) (-1)++-- | A portion of the source, spanning one or more lines and zero or more columns.+data SrcSpan = SrcSpan+ { srcSpanFilename :: String+ , srcSpanStartLine :: Int+ , srcSpanStartColumn :: Int+ , srcSpanEndLine :: Int+ , srcSpanEndColumn :: Int+ }+ deriving (Eq,Ord,Typeable,Data,Generic)++instance Show SrcSpan where+ showsPrec n (SrcSpan fn sl sc el ec) =+ showParen (n >= 11) $+ showString $ "SrcSpan " ++ show fn ++ " " ++ unwords (map showInt [sl,sc,el,ec])+++-- | Returns 'srcSpanStartLine' and 'srcSpanStartColumn' in a pair.+srcSpanStart :: SrcSpan -> (Int,Int)+srcSpanStart x = (srcSpanStartLine x, srcSpanStartColumn x)++-- | Returns 'srcSpanEndLine' and 'srcSpanEndColumn' in a pair.+srcSpanEnd :: SrcSpan -> (Int,Int)+srcSpanEnd x = (srcSpanEndLine x, srcSpanEndColumn x)+++-- | Combine two locations in the source to denote a span.+mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan+mkSrcSpan (SrcLoc fn sl sc) (SrcLoc _ el ec) = SrcSpan fn sl sc el ec++-- | Merge two source spans into a single span from the start of the first+-- to the end of the second. Assumes that the two spans relate to the+-- same source file.+mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan+mergeSrcSpan (SrcSpan fn sl1 sc1 el1 ec1) (SrcSpan _ sl2 sc2 el2 ec2) =+ let (sl,sc) = min (sl1,sc1) (sl2,sc2)+ (el,ec) = max (el1,ec1) (el2,ec2)+ in SrcSpan fn sl sc el ec++-- | Test if a given span starts and ends at the same location.+isNullSpan :: SrcSpan -> Bool+isNullSpan ss = spanSize ss == (0,0)+{- isNullSpan ss = srcSpanStartLine ss == srcSpanEndLine ss &&+ srcSpanStartColumn ss >= srcSpanEndColumn ss+-}++spanSize :: SrcSpan -> (Int, Int)+spanSize ss = (srcSpanEndLine ss - srcSpanStartLine ss, max 0 (srcSpanEndColumn ss - srcSpanStartColumn ss))++-- | An entity located in the source.+data Loc a = Loc+ { loc :: SrcSpan+ , unLoc :: a+ }+ deriving (Eq,Ord,Show,Generic)+++-- | A portion of the source, extended with information on the position of entities within the span.+data SrcSpanInfo = SrcSpanInfo+ { srcInfoSpan :: SrcSpan+-- , explLayout :: Bool+ , srcInfoPoints :: [SrcSpan] -- Marks the location of specific entities inside the span+ }+ deriving (Eq,Ord,Typeable,Data,Generic)++-- Identical output to the derived show instance for GHC 7.10 and earlier.+instance Show SrcSpanInfo where+ showsPrec n (SrcSpanInfo s pts) = showParen (n >= 11) . showString $+ "SrcSpanInfo {srcInfoSpan = " ++ show s ++ ", srcInfoPoints = " ++ show pts ++ "}"++-- | Generate a 'SrcSpanInfo' with no positional information for entities.+noInfoSpan :: SrcSpan -> SrcSpanInfo+noInfoSpan ss = SrcSpanInfo ss []++-- | A bogus `SrcSpanInfo`, the location is @noLoc@.+-- `noSrcSpan = noInfoSpan (mkSrcSpan noLoc noLoc)`+noSrcSpan :: SrcSpanInfo+noSrcSpan = noInfoSpan (mkSrcSpan noLoc noLoc)++-- | Generate a 'SrcSpanInfo' with the supplied positional information for entities.+infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo+infoSpan = SrcSpanInfo++-- | Combine two 'SrcSpanInfo's into one that spans the combined source area of+-- the two arguments, leaving positional information blank.+combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo+combSpanInfo s1 s2 = SrcSpanInfo+ (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2))+ []++-- | Like '(<+?>)', but it also concatenates the 'srcInfoPoints'.+combSpanMaybe :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo+combSpanMaybe s1 Nothing = s1+combSpanMaybe s1 (Just s2) = SrcSpanInfo+ (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2))+ (srcInfoPoints s1 ++ srcInfoPoints s2)++-- | Short name for 'combSpanInfo'+(<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo+(<++>) = combSpanInfo++-- | Optionally combine the first argument with the second,+-- or return it unchanged if the second argument is 'Nothing'.+(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo+a <+?> b = case b of {Nothing -> a; Just b' -> a <++> b'}++-- | Optionally combine the second argument with the first,+-- or return it unchanged if the first argument is 'Nothing'.+(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo+a <?+> b = case a of {Nothing -> b; Just a' -> a' <++> b}++-- | Add more positional information for entities of a span.+(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo+ss@(SrcSpanInfo {srcInfoPoints = ps}) <** xs = ss {srcInfoPoints = ps ++ xs}++-- | Merge two 'SrcSpan's and lift them to a 'SrcInfoSpan' with+-- no positional information for entities.+(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo+a <^^> b = noInfoSpan (mergeSrcSpan a b)++infixl 6 <^^>+infixl 5 <++>+infixl 4 <**, <+?>, <?+>++-- | A class to work over all kinds of source location information.+class SrcInfo si where+ toSrcInfo :: SrcLoc -> [SrcSpan] -> SrcLoc -> si+ fromSrcInfo :: SrcSpanInfo -> si+ getPointLoc :: si -> SrcLoc+ fileName :: si -> String+ startLine :: si -> Int+ startColumn :: si -> Int++ getPointLoc si = SrcLoc (fileName si) (startLine si) (startColumn si)++instance SrcInfo SrcLoc where+ toSrcInfo s _ _ = s+ fromSrcInfo si = SrcLoc (fileName si) (startLine si) (startColumn si)+ fileName = srcFilename+ startLine = srcLine+ startColumn = srcColumn++instance SrcInfo SrcSpan where+ toSrcInfo st _ end = mkSrcSpan st end+ fromSrcInfo = srcInfoSpan+ fileName = srcSpanFilename+ startLine = srcSpanStartLine+ startColumn = srcSpanStartColumn++instance SrcInfo SrcSpanInfo where+ toSrcInfo st pts end = SrcSpanInfo (mkSrcSpan st end) pts+ fromSrcInfo = id+ fileName = fileName . srcInfoSpan+ startLine = startLine . srcInfoSpan+ startColumn = startColumn . srcInfoSpan
src/Language/Haskell/Exts/Syntax.hs view
@@ -1,1000 +1,1952 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Syntax--- Copyright : (c) Niklas Broberg 2004-2009,--- (c) The GHC Team, 1997-2000--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ A suite of datatypes describing the abstract syntax of Haskell 98--- <http://www.haskell.org/onlinereport/> plus registered extensions, including:------ * multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)------ * parameters of type class assertions are unrestricted (FlexibleContexts)------ * 'forall' types as universal and existential quantification (RankNTypes, ExistentialQuantification, etc)------ * pattern guards (PatternGuards)------ * implicit parameters (ImplicitParameters)------ * generalised algebraic data types (GADTs)------ * template haskell (TemplateHaskell)------ * empty data type declarations (EmptyDataDecls)------ * unboxed tuples (UnboxedTuples)------ * regular patterns (RegularPatterns)------ * HSP-style XML expressions and patterns (XmlSyntax)-----------------------------------------------------------------------------------module Language.Haskell.Exts.Syntax (- -- * Modules- Module(..), WarningText(..), ExportSpec(..),- ImportDecl(..), ImportSpec(..), Assoc(..),- -- * Declarations- Decl(..), Binds(..), IPBind(..),- -- ** Type classes and instances- ClassDecl(..), InstDecl(..), Deriving,- -- ** Data type declarations- DataOrNew(..), ConDecl(..), QualConDecl(..), GadtDecl(..), BangType(..),- -- ** Function bindings- Match(..), Rhs(..), GuardedRhs(..),- -- * Class Assertions and Contexts- Context, FunDep(..), Asst(..),- -- * Types- Type(..), Boxed(..), Kind(..), TyVarBind(..),- -- * Expressions- Exp(..), Stmt(..), QualStmt(..), FieldUpdate(..),- Alt(..), GuardedAlts(..), GuardedAlt(..), XAttr(..),- -- * Patterns- Pat(..), PatField(..), PXAttr(..), RPat(..), RPatOp(..),- -- * Literals- Literal(..),- -- * Variables, Constructors and Operators- ModuleName(..), QName(..), Name(..), QOp(..), Op(..),- SpecialCon(..), CName(..), IPName(..), XName(..),-- -- * Template Haskell- Bracket(..), Splice(..),-- -- * FFI- Safety(..), CallConv(..),-- -- * Pragmas- ModulePragma(..), Tool(..),- Rule(..), RuleVar(..), Activation(..),- Annotation(..),-- -- * Builtin names-- -- ** Modules- prelude_mod, main_mod,- -- ** Main function of a program- main_name,- -- ** Constructors- unit_con_name, tuple_con_name, list_cons_name, unboxed_singleton_con_name,- unit_con, tuple_con, unboxed_singleton_con,- -- ** Special identifiers- as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name,- export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name,- -- ** Type constructors- unit_tycon_name, fun_tycon_name, list_tycon_name, tuple_tycon_name, unboxed_singleton_tycon_name,- unit_tycon, fun_tycon, list_tycon, tuple_tycon, unboxed_singleton_tycon,-- -- * Source coordinates- SrcLoc(..),- ) where---#ifdef __GLASGOW_HASKELL__-#ifdef BASE4-import Data.Data-#else-import Data.Generics (Data(..),Typeable(..))-#endif-#endif--import Language.Haskell.Exts.SrcLoc (SrcLoc(..))--import Language.Haskell.Exts.Annotated.Syntax (Boxed(..), Tool(..))----- | The name of a Haskell module.-newtype ModuleName = ModuleName String-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Constructors with special syntax.--- These names are never qualified, and always refer to builtin type or--- data constructors.-data SpecialCon- = UnitCon -- ^ unit type and data constructor @()@- | ListCon -- ^ list type constructor @[]@- | FunCon -- ^ function type constructor @->@- | TupleCon Boxed Int -- ^ /n/-ary tuple type and data- -- constructors @(,)@ etc, possibly boxed @(\#,\#)@- | Cons -- ^ list data constructor @(:)@- | UnboxedSingleCon -- ^ unboxed singleton tuple constructor @(\# \#)@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | This type is used to represent qualified variables, and also--- qualified constructors.-data QName- = Qual ModuleName Name -- ^ name qualified with a module name- | UnQual Name -- ^ unqualified local name- | Special SpecialCon -- ^ built-in constructor with special syntax-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | This type is used to represent variables, and also constructors.-data Name- = Ident String -- ^ /varid/ or /conid/.- | Symbol String -- ^ /varsym/ or /consym/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An implicit parameter name.-data IPName- = IPDup String -- ^ ?/ident/, non-linear implicit parameter- | IPLin String -- ^ %/ident/, linear implicit parameter-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Possibly qualified infix operators (/qop/), appearing in expressions.-data QOp- = QVarOp QName -- ^ variable operator (/qvarop/)- | QConOp QName -- ^ constructor operator (/qconop/)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Operators appearing in @infix@ declarations are never qualified.-data Op- = VarOp Name -- ^ variable operator (/varop/)- | ConOp Name -- ^ constructor operator (/conop/)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A name (/cname/) of a component of a class or data type in an @import@--- or export specification.-data CName- = VarName Name -- ^ name of a method or field- | ConName Name -- ^ name of a data constructor-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A complete Haskell source module.-data Module = Module SrcLoc ModuleName [ModulePragma] (Maybe WarningText)- (Maybe [ExportSpec]) [ImportDecl] [Decl]-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An item in a module's export specification.-data ExportSpec- = EVar QName -- ^ variable- | EAbs QName -- ^ @T@:- -- a class or datatype exported abstractly,- -- or a type synonym.- | EThingAll QName -- ^ @T(..)@:- -- a class exported with all of its methods, or- -- a datatype exported with all of its constructors.- | EThingWith QName [CName] -- ^ @T(C_1,...,C_n)@:- -- a class exported with some of its methods, or- -- a datatype exported with some of its constructors.- | EModuleContents ModuleName -- ^ @module M@:- -- re-export a module.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An import declaration.-data ImportDecl = ImportDecl- { importLoc :: SrcLoc -- ^ position of the @import@ keyword.- , importModule :: ModuleName -- ^ name of the module imported.- , importQualified :: Bool -- ^ imported @qualified@?- , importSrc :: Bool -- ^ imported with @{-\# SOURCE \#-}@?- , importPkg :: Maybe String -- ^ imported with explicit package name- , importAs :: Maybe ModuleName -- ^ optional alias name in an @as@ clause.- , importSpecs :: Maybe (Bool,[ImportSpec])- -- ^ optional list of import specifications.- -- The 'Bool' is 'True' if the names are excluded- -- by @hiding@.- }-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An import specification, representing a single explicit item imported--- (or hidden) from a module.-data ImportSpec- = IVar Name -- ^ variable- | IAbs Name -- ^ @T@:- -- the name of a class, datatype or type synonym.- | IThingAll Name -- ^ @T(..)@:- -- a class imported with all of its methods, or- -- a datatype imported with all of its constructors.- | IThingWith Name [CName] -- ^ @T(C_1,...,C_n)@:- -- a class imported with some of its methods, or- -- a datatype imported with some of its constructors.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Associativity of an operator.-data Assoc- = AssocNone -- ^ non-associative operator (declared with @infix@)- | AssocLeft -- ^ left-associative operator (declared with @infixl@).- | AssocRight -- ^ right-associative operator (declared with @infixr@)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A single derived instance, which may have arguments since it may be a MPTC.-type Deriving = (QName, [Type])---- | A top-level declaration.-data Decl- = TypeDecl SrcLoc Name [TyVarBind] Type- -- ^ A type declaration- | TypeFamDecl SrcLoc Name [TyVarBind] (Maybe Kind)- -- ^ A type family declaration- | DataDecl SrcLoc DataOrNew Context Name [TyVarBind] [QualConDecl] [Deriving]- -- ^ A data OR newtype declaration- | GDataDecl SrcLoc DataOrNew Context Name [TyVarBind] (Maybe Kind) [GadtDecl] [Deriving]- -- ^ A data OR newtype declaration, GADT style- | DataFamDecl SrcLoc {-data-} Context Name [TyVarBind] (Maybe Kind)- -- ^ A data family declaration- | TypeInsDecl SrcLoc Type Type- -- ^ A type family instance declaration- | DataInsDecl SrcLoc DataOrNew Type [QualConDecl] [Deriving]- -- ^ A data family instance declaration- | GDataInsDecl SrcLoc DataOrNew Type (Maybe Kind) [GadtDecl] [Deriving]- -- ^ A data family instance declaration, GADT style- | ClassDecl SrcLoc Context Name [TyVarBind] [FunDep] [ClassDecl]- -- ^ A declaration of a type class- | InstDecl SrcLoc Context QName [Type] [InstDecl]- -- ^ An declaration of a type class instance- | DerivDecl SrcLoc Context QName [Type]- -- ^ A standalone deriving declaration- | InfixDecl SrcLoc Assoc Int [Op]- -- ^ A declaration of operator fixity- | DefaultDecl SrcLoc [Type]- -- ^ A declaration of default types- | SpliceDecl SrcLoc Exp- -- ^ A Template Haskell splicing declaration- | TypeSig SrcLoc [Name] Type- -- ^ A type signature declaration- | FunBind [Match]- -- ^ A set of function binding clauses- | PatBind SrcLoc Pat (Maybe Type) Rhs {-where-} Binds- -- ^ A pattern binding- | ForImp SrcLoc CallConv Safety String Name Type- -- ^ A foreign import declaration- | ForExp SrcLoc CallConv String Name Type- -- ^ A foreign export declaration-- | RulePragmaDecl SrcLoc [Rule]- -- ^ A RULES pragma- | DeprPragmaDecl SrcLoc [([Name], String)]- -- ^ A DEPRECATED pragma- | WarnPragmaDecl SrcLoc [([Name], String)]- -- ^ A WARNING pragma- | InlineSig SrcLoc Bool Activation QName- -- ^ An INLINE pragma- | InlineConlikeSig SrcLoc Activation QName- -- ^ An INLINE CONLIKE pragma- | SpecSig SrcLoc QName [Type]- -- ^ A SPECIALISE pragma- | SpecInlineSig SrcLoc Bool Activation QName [Type]- -- ^ A SPECIALISE INLINE pragma- | InstSig SrcLoc Context QName [Type]- -- ^ A SPECIALISE instance pragma- | AnnPragma SrcLoc Annotation- -- ^ An ANN pragma-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An annotation through an ANN pragma.-data Annotation- = Ann Name Exp- -- ^ An annotation for a declared name.- | TypeAnn Name Exp- -- ^ An annotation for a declared type.- | ModuleAnn Exp- -- ^ An annotation for the defining module.-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A flag stating whether a declaration is a data or newtype declaration.-data DataOrNew = DataType | NewType-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A binding group inside a @let@ or @where@ clause.-data Binds- = BDecls [Decl] -- ^ An ordinary binding group- | IPBinds [IPBind] -- ^ A binding group for implicit parameters-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A binding of an implicit parameter.-data IPBind = IPBind SrcLoc IPName Exp-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Clauses of a function binding.-data Match- = Match SrcLoc Name [Pat] (Maybe Type) Rhs {-where-} Binds-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A single constructor declaration within a data type declaration,--- which may have an existential quantification binding.-data QualConDecl- = QualConDecl SrcLoc- {-forall-} [TyVarBind] {- . -} Context- {- => -} ConDecl-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Declaration of an ordinary data constructor.-data ConDecl- = ConDecl Name [BangType]- -- ^ ordinary data constructor- | InfixConDecl BangType Name BangType- -- ^ infix data constructor- | RecDecl Name [([Name],BangType)]- -- ^ record constructor-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A single constructor declaration in a GADT data type declaration.-data GadtDecl- = GadtDecl SrcLoc Name Type-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Declarations inside a class declaration.-data ClassDecl- = ClsDecl Decl- -- ^ ordinary declaration- | ClsDataFam SrcLoc Context Name [TyVarBind] (Maybe Kind)- -- ^ declaration of an associated data type- | ClsTyFam SrcLoc Name [TyVarBind] (Maybe Kind)- -- ^ declaration of an associated type synonym- | ClsTyDef SrcLoc Type Type- -- ^ default choice for an associated type synonym-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Declarations inside an instance declaration.-data InstDecl- = InsDecl Decl- -- ^ ordinary declaration- | InsType SrcLoc Type Type- -- ^ an associated type definition- | InsData SrcLoc DataOrNew Type [QualConDecl] [Deriving]- -- ^ an associated data type implementation- | InsGData SrcLoc DataOrNew Type (Maybe Kind) [GadtDecl] [Deriving]- -- ^ an associated data type implemented using GADT style-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The type of a constructor argument or field, optionally including--- a strictness annotation.-data BangType- = BangedTy Type -- ^ strict component, marked with \"@!@\"- | UnBangedTy Type -- ^ non-strict component- | UnpackedTy Type -- ^ unboxed component, marked with an UNPACK pragma-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The right hand side of a function or pattern binding.-data Rhs- = UnGuardedRhs Exp -- ^ unguarded right hand side (/exp/)- | GuardedRhss [GuardedRhs]- -- ^ guarded right hand side (/gdrhs/)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A guarded right hand side @|@ /stmts/ @=@ /exp/.--- The guard is a series of statements when using pattern guards,--- otherwise it will be a single qualifier expression.-data GuardedRhs- = GuardedRhs SrcLoc [Stmt] Exp-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A type qualified with a context.--- An unqualified type has an empty context.-data Type- = TyForall- (Maybe [TyVarBind])- Context- Type -- ^ qualified type- | TyFun Type Type -- ^ function type- | TyTuple Boxed [Type] -- ^ tuple type, possibly boxed- | TyList Type -- ^ list syntax, e.g. [a], as opposed to [] a- | TyApp Type Type -- ^ application of a type constructor- | TyVar Name -- ^ type variable- | TyCon QName -- ^ named type or type constructor- | TyParen Type -- ^ type surrounded by parentheses- | TyInfix Type QName Type -- ^ infix type constructor- | TyKind Type Kind -- ^ type with explicit kind signature-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A type variable declaration, optionally with an explicit kind annotation.-data TyVarBind- = KindedVar Name Kind -- ^ variable binding with kind annotation- | UnkindedVar Name -- ^ ordinary variable binding-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An explicit kind annotation.-data Kind- = KindStar -- ^ @*@, the kind of types- | KindBang -- ^ @!@, the kind of unboxed types- | KindFn Kind Kind -- ^ @->@, the kind of a type constructor- | KindParen Kind -- ^ a kind surrounded by parentheses- | KindVar Name -- ^ a kind variable (as of yet unsupported by compilers)-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif----- | A functional dependency, given on the form--- l1 l2 ... ln -> r2 r3 .. rn-data FunDep- = FunDep [Name] [Name]-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A context is a set of assertions-type Context = [Asst]---- | Class assertions.--- In Haskell 98, the argument would be a /tyvar/, but this definition--- allows multiple parameters, and allows them to be /type/s.--- Also extended with support for implicit parameters and equality constraints.-data Asst = ClassA QName [Type] -- ^ ordinary class assertion- | InfixA Type QName Type -- ^ class assertion where the class name is given infix- | IParam IPName Type -- ^ implicit parameter assertion- | EqualP Type Type -- ^ type equality constraint-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | /literal/--- Values of this type hold the abstract value of the literal, not the--- precise string representation used. For example, @10@, @0o12@ and @0xa@--- have the same representation.-data Literal- = Char Char -- ^ character literal- | String String -- ^ string literal- | Int Integer -- ^ integer literal- | Frac Rational -- ^ floating point literal- | PrimInt Integer -- ^ unboxed integer literal- | PrimWord Integer -- ^ unboxed word literal- | PrimFloat Rational -- ^ unboxed float literal- | PrimDouble Rational -- ^ unboxed double literal- | PrimChar Char -- ^ unboxed character literal- | PrimString String -- ^ unboxed string literal-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Haskell expressions.-data Exp- = Var QName -- ^ variable- | IPVar IPName -- ^ implicit parameter variable- | Con QName -- ^ data constructor- | Lit Literal -- ^ literal constant- | InfixApp Exp QOp Exp -- ^ infix application- | App Exp Exp -- ^ ordinary application- | NegApp Exp -- ^ negation expression @-/exp/@ (unary minus)- | Lambda SrcLoc [Pat] Exp -- ^ lambda expression- | Let Binds Exp -- ^ local declarations with @let@ ... @in@ ...- | If Exp Exp Exp -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/- | Case Exp [Alt] -- ^ @case@ /exp/ @of@ /alts/- | Do [Stmt] -- ^ @do@-expression:- -- the last statement in the list- -- should be an expression.- | MDo [Stmt] -- ^ @mdo@-expression- | Tuple [Exp] -- ^ tuple expression- | TupleSection [Maybe Exp] -- ^ tuple section expression, e.g. @(,,3)@- | List [Exp] -- ^ list expression- | Paren Exp -- ^ parenthesised expression- | LeftSection Exp QOp -- ^ left section @(@/exp/ /qop/@)@- | RightSection QOp Exp -- ^ right section @(@/qop/ /exp/@)@- | RecConstr QName [FieldUpdate]- -- ^ record construction expression- | RecUpdate Exp [FieldUpdate]- -- ^ record update expression- | EnumFrom Exp -- ^ unbounded arithmetic sequence,- -- incrementing by 1: @[from ..]@- | EnumFromTo Exp Exp -- ^ bounded arithmetic sequence,- -- incrementing by 1 @[from .. to]@- | EnumFromThen Exp Exp -- ^ unbounded arithmetic sequence,- -- with first two elements given @[from, then ..]@- | EnumFromThenTo Exp Exp Exp- -- ^ bounded arithmetic sequence,- -- with first two elements given @[from, then .. to]@- | ListComp Exp [QualStmt] -- ^ ordinary list comprehension- | ParComp Exp [[QualStmt]] -- ^ parallel list comprehension- | ExpTypeSig SrcLoc Exp Type -- ^ expression with explicit type signature-- | VarQuote QName -- ^ @'x@ for template haskell reifying of expressions- | TypQuote QName -- ^ @''T@ for template haskell reifying of types- | BracketExp Bracket -- ^ template haskell bracket expression- | SpliceExp Splice -- ^ template haskell splice expression- | QuasiQuote String String -- ^ quasi-quotaion: @[$/name/| /string/ |]@---- Hsx- | XTag SrcLoc XName [XAttr] (Maybe Exp) [Exp]- -- ^ xml element, with attributes and children- | XETag SrcLoc XName [XAttr] (Maybe Exp)- -- ^ empty xml element, with attributes- | XPcdata String -- ^ PCDATA child element- | XExpTag Exp -- ^ escaped haskell expression inside xml- | XChildTag SrcLoc [Exp] -- ^ children of an xml element---- Pragmas- | CorePragma String Exp -- ^ CORE pragma- | SCCPragma String Exp -- ^ SCC pragma- | GenPragma String (Int, Int) (Int, Int) Exp- -- ^ GENERATED pragma---- Arrows- | Proc SrcLoc Pat Exp -- ^ arrows proc: @proc@ /pat/ @->@ /exp/- | LeftArrApp Exp Exp -- ^ arrow application (from left): /exp/ @-<@ /exp/- | RightArrApp Exp Exp -- ^ arrow application (from right): /exp/ @>-@ /exp/- | LeftArrHighApp Exp Exp -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/- | RightArrHighApp Exp Exp -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The name of an xml element or attribute,--- possibly qualified with a namespace.-data XName- = XName String -- <name ...- | XDomName String String -- <dom:name ...-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An xml attribute, which is a name-expression pair.-data XAttr = XAttr XName Exp-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A template haskell bracket expression.-data Bracket- = ExpBracket Exp -- ^ expression bracket: @[| ... |]@- | PatBracket Pat -- ^ pattern bracket: @[p| ... |]@- | TypeBracket Type -- ^ type bracket: @[t| ... |]@- | DeclBracket [Decl] -- ^ declaration bracket: @[d| ... |]@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A template haskell splice expression-data Splice- = IdSplice String -- ^ variable splice: @$var@- | ParenSplice Exp -- ^ parenthesised expression splice: @$(/exp/)@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The safety of a foreign function call.-data Safety- = PlayRisky -- ^ unsafe- | PlaySafe Bool -- ^ safe ('False') or threadsafe ('True')-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The calling convention of a foreign function call.-data CallConv- = StdCall- | CCall-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A top level options pragma, preceding the module header.-data ModulePragma- = LanguagePragma SrcLoc [Name] -- ^ LANGUAGE pragma- | OptionsPragma SrcLoc (Maybe Tool) String- -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC- | AnnModulePragma SrcLoc Annotation- -- ^ ANN pragma with module scope-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Activation clause of a RULES pragma.-data Activation- = AlwaysActive- | ActiveFrom Int- | ActiveUntil Int-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The body of a RULES pragma.-data Rule- = Rule String Activation (Maybe [RuleVar]) Exp Exp-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Variables used in a RULES pragma, optionally annotated with types-data RuleVar- = RuleVar Name- | TypedRuleVar Name Type-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | Warning text to optionally use in the module header of e.g.--- a deprecated module.-data WarningText- = DeprText String- | WarnText String-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif----- | A pattern, to be matched against a value.-data Pat- = PVar Name -- ^ variable- | PLit Literal -- ^ literal constant- | PNeg Pat -- ^ negated pattern- | PNPlusK Name Integer -- ^ n+k pattern- | PInfixApp Pat QName Pat -- ^ pattern with an infix data constructor- | PApp QName [Pat] -- ^ data constructor and argument patterns- | PTuple [Pat] -- ^ tuple pattern- | PList [Pat] -- ^ list pattern- | PParen Pat -- ^ parenthesized pattern- | PRec QName [PatField] -- ^ labelled pattern, record style- | PAsPat Name Pat -- ^ @\@@-pattern- | PWildCard -- ^ wildcard pattern: @_@- | PIrrPat Pat -- ^ irrefutable pattern: @~/pat/@- | PatTypeSig SrcLoc Pat Type -- ^ pattern with type signature- | PViewPat Exp Pat -- ^ view patterns of the form @(/exp/ -> /pat/)@- | PRPat [RPat] -- ^ regular list pattern- | PXTag SrcLoc XName [PXAttr] (Maybe Pat) [Pat]- -- ^ XML element pattern- | PXETag SrcLoc XName [PXAttr] (Maybe Pat)- -- ^ XML singleton element pattern- | PXPcdata String -- ^ XML PCDATA pattern- | PXPatTag Pat -- ^ XML embedded pattern- | PXRPats [RPat] -- ^ XML regular list pattern- | PExplTypeArg QName Type -- ^ Explicit generics style type argument e.g. @f {| Int |} x = ...@- | PQuasiQuote String String -- ^ quasi quote patter: @[$/name/| /string/ |]@- | PBangPat Pat -- ^ strict (bang) pattern: @f !x = ...@-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An XML attribute in a pattern.-data PXAttr = PXAttr XName Pat-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A regular pattern operator.-data RPatOp- = RPStar -- ^ @*@ = 0 or more- | RPStarG -- ^ @*!@ = 0 or more, greedy- | RPPlus -- ^ @+@ = 1 or more- | RPPlusG -- ^ @+!@ = 1 or more, greedy- | RPOpt -- ^ @?@ = 0 or 1- | RPOptG -- ^ @?!@ = 0 or 1, greedy-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An entity in a regular pattern.-data RPat- = RPOp RPat RPatOp -- ^ operator pattern, e.g. pat*- | RPEither RPat RPat -- ^ choice pattern, e.g. (1 | 2)- | RPSeq [RPat] -- ^ sequence pattern, e.g. (| 1, 2, 3 |)- | RPGuard Pat [Stmt] -- ^ guarded pattern, e.g. (| p | p < 3 |)- | RPCAs Name RPat -- ^ non-linear variable binding, e.g. (foo\@:(1 | 2))*- | RPAs Name RPat -- ^ linear variable binding, e.g. foo\@(1 | 2)- | RPParen RPat -- ^ parenthesised pattern, e.g. (2*)- | RPPat Pat -- ^ an ordinary pattern-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An /fpat/ in a labeled record pattern.-data PatField- = PFieldPat QName Pat -- ^ ordinary label-pattern pair- | PFieldPun Name -- ^ record field pun- | PFieldWildcard -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A statement, representing both a /stmt/ in a @do@-expression,--- an ordinary /qual/ in a list comprehension, as well as a /stmt/--- in a pattern guard.-data Stmt- = Generator SrcLoc Pat Exp- -- ^ a generator: /pat/ @<-@ /exp/- | Qualifier Exp -- ^ an /exp/ by itself: in a @do@-expression,- -- an action whose result is discarded;- -- in a list comprehension and pattern guard,- -- a guard expression- | LetStmt Binds -- ^ local bindings- | RecStmt [Stmt] -- ^ a recursive binding group for arrows-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A general /transqual/ in a list comprehension,--- which could potentially be a transform of the kind--- enabled by TransformListComp.-data QualStmt- = QualStmt Stmt -- ^ an ordinary statement- | ThenTrans Exp -- ^ @then@ /exp/- | ThenBy Exp Exp -- ^ @then@ /exp/ @by@ /exp/- | GroupBy Exp -- ^ @then@ @group@ @by@ /exp/- | GroupUsing Exp -- ^ @then@ @group@ @using@ /exp/- | GroupByUsing Exp Exp -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An /fbind/ in a labeled construction or update expression.-data FieldUpdate- = FieldUpdate QName Exp -- ^ ordinary label-expresion pair- | FieldPun Name -- ^ record field pun- | FieldWildcard -- ^ record field wildcard-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | An /alt/ alternative in a @case@ expression.-data Alt- = Alt SrcLoc Pat GuardedAlts Binds-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | The right-hand sides of a @case@ alternative,--- which may be a single right-hand side or a--- set of guarded ones.-data GuardedAlts- = UnGuardedAlt Exp -- ^ @->@ /exp/- | GuardedAlts [GuardedAlt] -- ^ /gdpat/-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---- | A guarded case alternative @|@ /stmts/ @->@ /exp/.-data GuardedAlt- = GuardedAlt SrcLoc [Stmt] Exp-#ifdef __GLASGOW_HASKELL__- deriving (Eq,Ord,Show,Typeable,Data)-#else- deriving (Eq,Ord,Show)-#endif---------------------------------------------------------------------------------- Builtin names.--prelude_mod, main_mod :: ModuleName-prelude_mod = ModuleName "Prelude"-main_mod = ModuleName "Main"--main_name :: Name-main_name = Ident "main"--unit_con_name :: QName-unit_con_name = Special UnitCon--tuple_con_name :: Boxed -> Int -> QName-tuple_con_name b i = Special (TupleCon b (i+1))--list_cons_name :: QName-list_cons_name = Special Cons--unboxed_singleton_con_name :: QName-unboxed_singleton_con_name = Special UnboxedSingleCon--unit_con :: Exp-unit_con = Con unit_con_name--tuple_con :: Boxed -> Int -> Exp-tuple_con b i = Con (tuple_con_name b i)--unboxed_singleton_con :: Exp-unboxed_singleton_con = Con (unboxed_singleton_con_name)--as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name :: Name-as_name = Ident "as"-qualified_name = Ident "qualified"-hiding_name = Ident "hiding"-minus_name = Symbol "-"-bang_name = Symbol "!"-dot_name = Symbol "."-star_name = Symbol "*"--export_name, safe_name, unsafe_name, threadsafe_name, stdcall_name, ccall_name :: Name-export_name = Ident "export"-safe_name = Ident "safe"-unsafe_name = Ident "unsafe"-threadsafe_name = Ident "threadsafe"-stdcall_name = Ident "stdcall"-ccall_name = Ident "ccall"--unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: QName-unit_tycon_name = unit_con_name-fun_tycon_name = Special FunCon-list_tycon_name = Special ListCon-unboxed_singleton_tycon_name = Special UnboxedSingleCon--tuple_tycon_name :: Boxed -> Int -> QName-tuple_tycon_name b i = tuple_con_name b i--unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: Type-unit_tycon = TyCon unit_tycon_name-fun_tycon = TyCon fun_tycon_name-list_tycon = TyCon list_tycon_name-unboxed_singleton_tycon = TyCon unboxed_singleton_tycon_name--tuple_tycon :: Boxed -> Int -> Type-tuple_tycon b i = TyCon (tuple_tycon_name b i)+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE CPP #-}++-----------------------------------------------------------------------------+-- |+-- Module : Language.Haskell.Exts.Syntax+-- Copyright : (c) Niklas Broberg 2004-2009,+-- (c) The GHC Team, 1997-2000+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- A suite of datatypes describing the (semi-concrete) abstract syntax of Haskell 98+-- <http://www.haskell.org/onlinereport/> plus registered extensions, including:+--+-- * multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)+--+-- * parameters of type class assertions are unrestricted (FlexibleContexts)+--+-- * 'forall' types as universal and existential quantification (RankNTypes, ExistentialQuantification, etc)+--+-- * pattern guards (PatternGuards)+--+-- * implicit parameters (ImplicitParameters)+--+-- * generalised algebraic data types (GADTs)+--+-- * template haskell (TemplateHaskell)+--+-- * empty data type declarations (EmptyDataDecls)+--+-- * unboxed tuples (UnboxedTuples)+--+-- * regular patterns (RegularPatterns)+--+-- * HSP-style XML expressions and patterns (XmlSyntax)+--+-- All nodes in the syntax tree are annotated with something of a user-definable data type.+-- When parsing, this annotation will contain information about the source location that the+-- particular node comes from.+--+-----------------------------------------------------------------------------++module Language.Haskell.Exts.Syntax (+ -- * Modules+ Module(..), ModuleHead(..), WarningText(..), ExportSpecList(..), ExportSpec(..),+ EWildcard(..),+ ImportDecl(..), ImportSpecList(..), ImportSpec(..), Assoc(..), Namespace(..),+ -- * Declarations+ Decl(..), DeclHead(..), InstRule(..), InstHead(..), Binds(..), IPBind(..), PatternSynDirection(..),+ InjectivityInfo(..), ResultSig(..),+ -- ** Type classes and instances+ ClassDecl(..), InstDecl(..), Deriving(..), DerivStrategy(..),+ -- ** Data type declarations+ DataOrNew(..), ConDecl(..), FieldDecl(..), QualConDecl(..), GadtDecl(..), BangType(..),+ Unpackedness(..),+ -- ** Function bindings+ Match(..), Rhs(..), GuardedRhs(..),+ -- * Class Assertions and Contexts+ Context(..), FunDep(..), Asst(..),+ -- * Types+ Type(..), Boxed(..), Kind, TyVarBind(..), Promoted(..),+ TypeEqn (..),+ -- * Expressions+ Exp(..), Stmt(..), QualStmt(..), FieldUpdate(..),+ Alt(..), XAttr(..),+ -- * Patterns+ Pat(..), PatField(..), PXAttr(..), RPat(..), RPatOp(..),+ -- * Literals+ Literal(..), Sign(..),+ -- * Variables, Constructors and Operators+ ModuleName(..), QName(..), Name(..), QOp(..), Op(..),+ SpecialCon(..), CName(..), IPName(..), XName(..), Role(..),+ MaybePromotedName(..),++ -- * Template Haskell+ Bracket(..), Splice(..),++ -- * FFI+ Safety(..), CallConv(..),++ -- * Pragmas+ ModulePragma(..), Tool(..), Overlap(..),+ Rule(..), RuleVar(..), Activation(..),+ Annotation(..), BooleanFormula(..),++ -- * Builtin names++ -- ** Modules+ prelude_mod, main_mod,+ -- ** Main function of a program+ main_name,+ -- ** Constructors+ unit_con_name, tuple_con_name, list_con_name, list_cons_name, unboxed_singleton_con_name,+ unit_con, tuple_con, unboxed_singleton_con,+ -- ** Special identifiers+ as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name,+ export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name,+ stdcall_name, ccall_name, cplusplus_name, dotnet_name, jvm_name, js_name,+ javascript_name, capi_name, forall_name, family_name, role_name, hole_name,+ stock_name, anyclass_name, via_name,+ -- ** Type constructors+ unit_tycon_name, fun_tycon_name, list_tycon_name, tuple_tycon_name, unboxed_singleton_tycon_name,+ unit_tycon, fun_tycon, list_tycon, tuple_tycon, unboxed_singleton_tycon,++ -- * Source coordinates+ -- SrcLoc(..),++ -- * Annotated trees+ Annotated(..), (=~=),+ ) where++import Prelude hiding (id)++import Data.Data+import GHC.Generics (Generic)+#if __GLASGOW_HASKELL__ < 710+import Data.Foldable (Foldable)+import Data.Traversable (Traversable)+#endif++-- | The name of a Haskell module.+data ModuleName l = ModuleName l String+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Constructors with special syntax.+-- These names are never qualified, and always refer to builtin type or+-- data constructors.+data SpecialCon l+ = UnitCon l -- ^ unit type and data constructor @()@+ | ListCon l -- ^ list type and data constructor @[]@+ | FunCon l -- ^ function type constructor @->@+ | TupleCon l Boxed Int -- ^ /n/-ary tuple type and data+ -- constructors @(,)@ etc, possibly boxed @(\#,\#)@+ | Cons l -- ^ list data constructor @(:)@+ | UnboxedSingleCon l -- ^ unboxed singleton tuple constructor @(\# \#)@+ | ExprHole l -- ^ An expression hole _+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | This type is used to represent qualified variables, and also+-- qualified constructors.+data QName l+ = Qual l (ModuleName l) (Name l) -- ^ name qualified with a module name+ | UnQual l (Name l) -- ^ unqualified local name+ | Special l (SpecialCon l) -- ^ built-in constructor with special syntax+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | This type is used to represent variables, and also constructors.+data Name l+ = Ident l String -- ^ /varid/ or /conid/.+ | Symbol l String -- ^ /varsym/ or /consym/+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An implicit parameter name.+data IPName l+ = IPDup l String -- ^ ?/ident/, non-linear implicit parameter+ | IPLin l String -- ^ %/ident/, linear implicit parameter+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Possibly qualified infix operators (/qop/), appearing in expressions.+data QOp l+ = QVarOp l (QName l) -- ^ variable operator (/qvarop/)+ | QConOp l (QName l) -- ^ constructor operator (/qconop/)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Operators appearing in @infix@ declarations are never qualified.+data Op l+ = VarOp l (Name l) -- ^ variable operator (/varop/)+ | ConOp l (Name l) -- ^ constructor operator (/conop/)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A name (/cname/) of a component of a class or data type in an @import@+-- or export specification.+data CName l+ = VarName l (Name l) -- ^ name of a method or field+ | ConName l (Name l) -- ^ name of a data constructor+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A complete Haskell source module.+data Module l+ = Module l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]+ -- ^ an ordinary Haskell module+ | XmlPage l (ModuleName l) [ModulePragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]+ -- ^ a module consisting of a single XML document. The ModuleName never appears in the source+ -- but is needed for semantic purposes, it will be the same as the file name.+ | XmlHybrid l (Maybe (ModuleHead l)) [ModulePragma l] [ImportDecl l] [Decl l]+ (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]+ -- ^ a hybrid module combining an XML document with an ordinary module+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The head of a module, including the name and export specification.+data ModuleHead l = ModuleHead l (ModuleName l) (Maybe (WarningText l)) (Maybe (ExportSpecList l))+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An explicit export specification.+data ExportSpecList l+ = ExportSpecList l [ExportSpec l]+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An item in a module's export specification.+data ExportSpec l+ = EVar l (QName l) -- ^ variable.+ | EAbs l (Namespace l) (QName l) -- ^ @T@:+ -- a class or datatype exported abstractly,+ -- or a type synonym.+ | EThingWith l (EWildcard l) (QName l) [CName l] -- ^ @T(C_1,...,C_n)@:+ -- a class exported with some of its methods, or+ -- a datatype exported with some of its constructors.+ | EModuleContents l (ModuleName l) -- ^ @module M@:+ -- re-export a module.+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Indicates the position of the wildcard in an export list+data EWildcard l = NoWildcard l | EWildcard l Int+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Namespaces for imports/exports.+data Namespace l = NoNamespace l | TypeNamespace l | PatternNamespace l+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An import declaration.+data ImportDecl l = ImportDecl+ { importAnn :: l -- ^ annotation, used by parser for position of the @import@ keyword.+ , importModule :: ModuleName l -- ^ name of the module imported.+ , importQualified :: Bool -- ^ imported @qualified@?+ , importSrc :: Bool -- ^ imported with @{-\# SOURCE \#-}@?+ , importSafe :: Bool -- ^ Import @safe@?+ , importPkg :: Maybe String -- ^ imported with explicit package name+ , importAs :: Maybe (ModuleName l) -- ^ optional alias name in an @as@ clause.+ , importSpecs :: Maybe (ImportSpecList l)+ -- ^ optional list of import specifications.+ }+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An explicit import specification list.+data ImportSpecList l+ = ImportSpecList l Bool [ImportSpec l]+ -- ^ A list of import specifications.+ -- The 'Bool' is 'True' if the names are excluded+ -- by @hiding@.+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An import specification, representing a single explicit item imported+-- (or hidden) from a module.+data ImportSpec l+ = IVar l (Name l) -- ^ variable+ | IAbs l (Namespace l) (Name l) -- ^ @T@:+ -- the name of a class, datatype or type synonym.+ | IThingAll l (Name l) -- ^ @T(..)@:+ -- a class imported with all of its methods, or+ -- a datatype imported with all of its constructors.+ | IThingWith l (Name l) [CName l] -- ^ @T(C_1,...,C_n)@:+ -- a class imported with some of its methods, or+ -- a datatype imported with some of its constructors.+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Associativity of an operator.+data Assoc l+ = AssocNone l -- ^ non-associative operator (declared with @infix@)+ | AssocLeft l -- ^ left-associative operator (declared with @infixl@).+ | AssocRight l -- ^ right-associative operator (declared with @infixr@)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A top-level declaration.+data Decl l+ = TypeDecl l (DeclHead l) (Type l)+ -- ^ A type declaration+ | TypeFamDecl l (DeclHead l) (Maybe (ResultSig l)) (Maybe (InjectivityInfo l))+ -- ^ A type family declaration+ | ClosedTypeFamDecl l (DeclHead l) (Maybe (ResultSig l)) (Maybe (InjectivityInfo l)) [TypeEqn l]+ -- ^ A closed type family declaration+ | DataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) [QualConDecl l] [Deriving l]+ -- ^ A data OR newtype declaration+ | GDataDecl l (DataOrNew l) (Maybe (Context l)) (DeclHead l) (Maybe (Kind l)) [GadtDecl l] [Deriving l]+ -- ^ A data OR newtype declaration, GADT style+ | DataFamDecl l {-data-} (Maybe (Context l)) (DeclHead l) (Maybe (ResultSig l))+ -- ^ A data family declaration+ | TypeInsDecl l (Type l) (Type l)+ -- ^ A type family instance declaration+ | DataInsDecl l (DataOrNew l) (Type l) [QualConDecl l] [Deriving l]+ -- ^ A data family instance declaration+ | GDataInsDecl l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] [Deriving l]+ -- ^ A data family instance declaration, GADT style+ | ClassDecl l (Maybe (Context l)) (DeclHead l) [FunDep l] (Maybe [ClassDecl l])+ -- ^ A declaration of a type class+ | InstDecl l (Maybe (Overlap l)) (InstRule l) (Maybe [InstDecl l])+ -- ^ An declaration of a type class instance+ | DerivDecl l (Maybe (DerivStrategy l)) (Maybe (Overlap l)) (InstRule l)+ -- ^ A standalone deriving declaration+ | InfixDecl l (Assoc l) (Maybe Int) [Op l]+ -- ^ A declaration of operator fixity+ | DefaultDecl l [Type l]+ -- ^ A declaration of default types+ | SpliceDecl l (Exp l)+ -- ^ A Template Haskell splicing declaration+ | TSpliceDecl l (Exp l)+ -- ^ A typed Template Haskell splicing declaration+ | TypeSig l [Name l] (Type l)+ -- ^ A type signature declaration+ | PatSynSig l [Name l] (Maybe [TyVarBind l]) (Maybe (Context l))+ (Maybe [TyVarBind l]) (Maybe (Context l))+ (Type l)+ -- ^ A pattern synonym signature declation+ | FunBind l [Match l]+ -- ^ A set of function binding clauses+ | PatBind l (Pat l) (Rhs l) {-where-} (Maybe (Binds l))+ -- ^ A pattern binding+ | PatSyn l (Pat l) (Pat l) (PatternSynDirection l)+ -- ^ A pattern synonym binding+ | ForImp l (CallConv l) (Maybe (Safety l)) (Maybe String) (Name l) (Type l)+ -- ^ A foreign import declaration+ | ForExp l (CallConv l) (Maybe String) (Name l) (Type l)+ -- ^ A foreign export declaration+ | RulePragmaDecl l [Rule l]+ -- ^ A RULES pragma+ | DeprPragmaDecl l [([Name l], String)]+ -- ^ A DEPRECATED pragma+ | WarnPragmaDecl l [([Name l], String)]+ -- ^ A WARNING pragma+ | InlineSig l Bool (Maybe (Activation l)) (QName l)+ -- ^ An INLINE pragma+ | InlineConlikeSig l (Maybe (Activation l)) (QName l)+ -- ^ An INLINE CONLIKE pragma+ | SpecSig l (Maybe (Activation l)) (QName l) [Type l]+ -- ^ A SPECIALISE pragma+ | SpecInlineSig l Bool (Maybe (Activation l)) (QName l) [Type l]+ -- ^ A SPECIALISE INLINE pragma+ | InstSig l (InstRule l)+ -- ^ A SPECIALISE instance pragma+ | AnnPragma l (Annotation l)+ -- ^ An ANN pragma+ | MinimalPragma l (Maybe (BooleanFormula l))+ -- ^ A MINIMAL pragma+ | RoleAnnotDecl l (QName l) [Role l]+ -- ^ A role annotation+ | CompletePragma l [Name l] (Maybe (QName l))+ -- ^ A COMPLETE pragma+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data PatternSynDirection l =+ Unidirectional -- ^ A unidirectional pattern synonym with "<-"+ | ImplicitBidirectional -- ^ A bidirectional pattern synonym with "="+ | ExplicitBidirectional l [Decl l] -- ^ A birectional pattern synonym with the construction specified.+ deriving (Eq, Ord, Show, Data, Typeable, Foldable, Traversable, Functor, Generic)++-- | A type equation as found in closed type families.+data TypeEqn l = TypeEqn l (Type l) (Type l) deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An annotation through an ANN pragma.+data Annotation l+ = Ann l (Name l) (Exp l)+ -- ^ An annotation for a declared name.+ | TypeAnn l (Name l) (Exp l)+ -- ^ An annotation for a declared type.+ | ModuleAnn l (Exp l)+ -- ^ An annotation for the defining module.+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A boolean formula for MINIMAL pragmas.+data BooleanFormula l+ = VarFormula l (Name l) -- ^ A variable.+ | AndFormula l [BooleanFormula l] -- ^ And boolean formulas.+ | OrFormula l [BooleanFormula l] -- ^ Or boolean formulas.+ | ParenFormula l (BooleanFormula l) -- ^ Parenthesized boolean formulas.+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data Role l+ = Nominal l+ | Representational l+ | Phantom l+ | RoleWildcard l+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A flag stating whether a declaration is a data or newtype declaration.+data DataOrNew l = DataType l | NewType l+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)+++-- | Injectivity info for injective type families+data InjectivityInfo l = InjectivityInfo l (Name l) [Name l]+ deriving (Eq, Ord, Show, Typeable, Data, Foldable, Traversable, Functor, Generic)++data ResultSig l = KindSig l (Kind l) | TyVarSig l (TyVarBind l)+ deriving (Eq, Ord, Show, Typeable, Data, Foldable, Traversable, Functor, Generic)++-- | The head of a type or class declaration, which consists of the type+-- or class name applied to some type variables+--+-- @class C a b@ is represented as+--+-- >DHApp+-- > ()+-- > (DHApp+-- > () (DHead () (Ident () "C")) (UnkindedVar () (Ident () "a")))+-- > (UnkindedVar () (Ident () "b"))+--+-- (where the annotation type @l@ is instantiated with @()@)+--+-- @class (a :< b) c@ is represented as+--+-- >DHApp+-- > ()+-- > (DHParen+-- > ()+-- > (DHApp+-- > ()+-- > (DHInfix () (UnkindedVar () (Ident () "a")) (Symbol () ":<"))+-- > (UnkindedVar () (Ident () "b"))))+-- > (UnkindedVar () (Ident () "c"))+data DeclHead l+ = DHead l (Name l) -- ^ type or class name+ | DHInfix l (TyVarBind l) (Name l) -- ^ infix application of the type/class name to the left operand+ | DHParen l (DeclHead l) -- ^ parenthesized declaration head+ | DHApp l (DeclHead l) (TyVarBind l) -- ^ application to one more type variable+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The instance declaration rule, which is, roughly, the part of the instance declaration before the @where@ keyword.+--+-- Example: @instance Ord a => Ord (Maybe a)@ is represented as+--+-- >IRule+-- > ()+-- > Nothing+-- > (Just+-- > (CxSingle+-- > ()+-- > (ClassA+-- > () (UnQual () (Ident () "Ord")) [ TyVar () (Ident () "a") ])))+-- > (IHApp+-- > ()+-- > (IHCon () (UnQual () (Ident () "Ord")))+-- > (TyParen+-- > ()+-- > (TyApp+-- > ()+-- > (TyCon () (UnQual () (Ident () "Maybe")))+-- > (TyVar () (Ident () "a")))))+--+-- An optional explicit forall after @instance@ is supported:+-- @instance forall a . Ord a => Ord (Maybe a) where@ becomes+--+-- >IRule+-- > ()+-- > (Just [ UnkindedVar () (Ident () "a") ])+-- > ...+data InstRule l+ = IRule l (Maybe [TyVarBind l]) (Maybe (Context l)) (InstHead l)+ | IParen l (InstRule l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- See bugs #7 and #31 for more details and use cases for the rationale+-- of the split. DeclOrInstHead should be used by DeclHead as the name implies.++-- | The instance head. The split between rule/head allow us to represent+-- @instance (Bounded a => Bounded [a]) where@ faithfully.+--+-- The structure of 'InstHead' follows one of 'DeclHead'.+--+-- For example, @instance C (Maybe a) Int where@ is represented as+--+-- >IHApp+-- > ()+-- > (IHApp+-- > ()+-- > (IHCon () (UnQual () (Ident () "C")))+-- > (TyParen+-- > ()+-- > (TyApp+-- > ()+-- > (TyCon () (UnQual () (Ident () "Maybe")))+-- > (TyVar () (Ident () "a")))))+-- > (TyCon () (UnQual () (Ident () "Int")))))+data InstHead l+ = IHCon l (QName l) -- ^ type or class name+ | IHInfix l (Type l) (QName l) -- ^ infix application of the type/class name to the left operand+ | IHParen l (InstHead l) -- ^ parenthesized instance head+ | IHApp l (InstHead l) (Type l) -- ^ application to one more type+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A deriving clause following a data type declaration.+data Deriving l = Deriving l (Maybe (DerivStrategy l)) [InstRule l]+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Which technique the user explicitly requested when deriving an instance.+data DerivStrategy l+ = DerivStock l -- ^ GHC's \"standard\" strategy, which is to implement a+ -- custom instance for the data type. This only works for+ -- certain types that GHC knows about (e.g., 'Eq', 'Show',+ -- 'Functor' when @-XDeriveFunctor@ is enabled, etc.)+ | DerivAnyclass l -- ^ @-XDeriveAnyClass@+ | DerivNewtype l -- ^ @-XGeneralizedNewtypeDeriving@+ | DerivVia l (Type l) -- ^ @-XDerivingVia@+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A binding group inside a @let@ or @where@ clause.+data Binds l+ = BDecls l [Decl l] -- ^ An ordinary binding group+ | IPBinds l [IPBind l] -- ^ A binding group for implicit parameters+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A binding of an implicit parameter.+data IPBind l = IPBind l (IPName l) (Exp l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Clauses of a function binding.+data Match l+ = Match l (Name l) [Pat l] (Rhs l) {-where-} (Maybe (Binds l))+ -- ^ A clause defined with prefix notation, i.e. the function name+ -- followed by its argument patterns, the right-hand side and an+ -- optional where clause.+ | InfixMatch l (Pat l) (Name l) [Pat l] (Rhs l) {-where-} (Maybe (Binds l))+ -- ^ A clause defined with infix notation, i.e. first its first argument+ -- pattern, then the function name, then its following argument(s),+ -- the right-hand side and an optional where clause.+ -- Note that there can be more than two arguments to a function declared+ -- infix, hence the list of pattern arguments.+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A single constructor declaration within a data type declaration,+-- which may have an existential quantification binding.+data QualConDecl l+ = QualConDecl l+ {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l))+ {- => -} (ConDecl l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declaration of an ordinary data constructor.+data ConDecl l+ = ConDecl l (Name l) [Type l]+ -- ^ ordinary data constructor+ | InfixConDecl l (Type l) (Name l) (Type l)+ -- ^ infix data constructor+ | RecDecl l (Name l) [FieldDecl l]+ -- ^ record constructor+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declaration of a (list of) named field(s).+data FieldDecl l = FieldDecl l [Name l] (Type l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)+++-- | A single constructor declaration in a GADT data type declaration.+--+-- If the GADT is declared using the record syntax, e.g.+--+-- >data Ty where+-- > TCon :: { field1 :: Int, field2 :: Bool } -> Ty+--+-- then the fields are stored as a list of 'FieldDecl's, and the final type+-- (@Ty@ in the above example) is stored in the last 'Type' field.+--+-- If the GADT is declared using the ordinary syntax, e.g.+--+-- >data Ty where+-- > TCon :: Int -> Bool -> Ty+--+-- then @'Maybe' ['FieldDecl' l]@ is 'Nothing', and the whole constructor's+-- type (such as @Int -> Bool -> Ty@) is stored in the last 'Type' field.+data GadtDecl l+ = GadtDecl l (Name l)+ {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l))+ {- => -} (Maybe [FieldDecl l]) (Type l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declarations inside a class declaration.+data ClassDecl l+ = ClsDecl l (Decl l)+ -- ^ ordinary declaration+ | ClsDataFam l (Maybe (Context l)) (DeclHead l) (Maybe (ResultSig l))+ -- ^ declaration of an associated data type+ | ClsTyFam l (DeclHead l) (Maybe (ResultSig l)) (Maybe (InjectivityInfo l))+ -- ^ declaration of an associated type synonym+ | ClsTyDef l (TypeEqn l)+ -- ^ default choice for an associated type synonym+ | ClsDefSig l (Name l) (Type l)+ -- ^ default signature+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Declarations inside an instance declaration.+data InstDecl l+ = InsDecl l (Decl l)+ -- ^ ordinary declaration+ | InsType l (Type l) (Type l)+ -- ^ an associated type definition+ | InsData l (DataOrNew l) (Type l) [QualConDecl l] [Deriving l]+ -- ^ an associated data type implementation+ | InsGData l (DataOrNew l) (Type l) (Maybe (Kind l)) [GadtDecl l] [Deriving l]+ -- ^ an associated data type implemented using GADT style+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The type of a constructor argument or field, optionally including+-- a strictness annotation.+data BangType l+ = BangedTy l -- ^ strict component, marked with \"@!@\"+ | LazyTy l -- ^ lazy component, marked with \"@~@\"+ | NoStrictAnnot l -- ^ No strictness information+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data Unpackedness l+ = Unpack l -- ^ \"@{-\# UNPACK \#-}@\"+ | NoUnpack l -- ^ \"@{-\# NOUNPACK \#-}@\"+ | NoUnpackPragma l -- ^ No unpack pragma+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The right hand side of a function binding, pattern binding, or a case+-- alternative.+data Rhs l+ = UnGuardedRhs l (Exp l) -- ^ unguarded right hand side (/exp/)+ | GuardedRhss l [GuardedRhs l]+ -- ^ guarded right hand side (/gdrhs/)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A guarded right hand side @|@ /stmts/ @=@ /exp/, or @|@ /stmts/ @->@ /exp/+-- for case alternatives.+-- The guard is a series of statements when using pattern guards,+-- otherwise it will be a single qualifier expression.+data GuardedRhs l+ = GuardedRhs l [Stmt l] (Exp l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A type qualified with a context.+-- An unqualified type has an empty context.+data Type l+ = TyForall l+ (Maybe [TyVarBind l])+ (Maybe (Context l))+ (Type l) -- ^ qualified type+ | TyStar l -- ^ @*@, the type of types+ | TyFun l (Type l) (Type l) -- ^ function type+ | TyTuple l Boxed [Type l] -- ^ tuple type, possibly boxed+ | TyUnboxedSum l [Type l] -- ^ unboxed tuple type+ | TyList l (Type l) -- ^ list syntax, e.g. [a], as opposed to [] a+ | TyParArray l (Type l) -- ^ parallel array syntax, e.g. [:a:]+ | TyApp l (Type l) (Type l) -- ^ application of a type constructor+ | TyVar l (Name l) -- ^ type variable+ | TyCon l (QName l) -- ^ named type or type constructor+ | TyParen l (Type l) -- ^ type surrounded by parentheses+ | TyInfix l (Type l) (MaybePromotedName l)+ (Type l) -- ^ infix type constructor+ | TyKind l (Type l) (Kind l) -- ^ type with explicit kind signature+ | TyPromoted l (Promoted l) -- ^ @'K@, a promoted data type (-XDataKinds).+ | TyEquals l (Type l) (Type l) -- ^ type equality predicate enabled by ConstraintKinds+ | TySplice l (Splice l) -- ^ template haskell splice type+ | TyBang l (BangType l) (Unpackedness l) (Type l) -- ^ Strict type marked with \"@!@\" or type marked with UNPACK pragma.+ | TyWildCard l (Maybe (Name l)) -- ^ Either an anonymous of named type wildcard+ | TyQuasiQuote l String String -- ^ @[$/name/| /string/ |]@+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++data MaybePromotedName l = PromotedName l (QName l) | UnpromotedName l (QName l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Bools here are True if there was a leading quote which may be+-- left out. For example @'[k1,k2]@ means the same thing as @[k1,k2]@.+data Promoted l+ = PromotedInteger l Integer String -- ^ parsed value and raw string+ | PromotedString l String String -- ^ parsed value and raw string+ | PromotedCon l Bool (QName l)+ | PromotedList l Bool [Type l]+ | PromotedTuple l [Type l]+ | PromotedUnit l+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Flag denoting whether a tuple is boxed or unboxed.+data Boxed = Boxed | Unboxed+ deriving (Eq,Ord,Show,Typeable,Data,Generic)++-- | A type variable declaration, optionally with an explicit kind annotation.+data TyVarBind l+ = KindedVar l (Name l) (Kind l) -- ^ variable binding with kind annotation+ | UnkindedVar l (Name l) -- ^ ordinary variable binding+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An explicit kind annotation.+type Kind = Type+++-- | A functional dependency, given on the form+-- l1 l2 ... ln -> r2 r3 .. rn+data FunDep l+ = FunDep l [Name l] [Name l]+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A context is a set of assertions+data Context l+ = CxSingle l (Asst l)+ | CxTuple l [Asst l]+ | CxEmpty l+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Class assertions.+data Asst l+ = TypeA l (Type l) -- ^ type assertion+ | IParam l (IPName l) (Type l) -- ^ implicit parameter assertion+ | ParenA l (Asst l) -- ^ parenthesised class assertion+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | /literal/+-- Values of this type hold the abstract value of the literal, along with the+-- precise string representation used. For example, @10@, @0o12@ and @0xa@+-- have the same value representation, but each carry a different string representation.+data Literal l+ = Char l Char String -- ^ character literal+ | String l String String -- ^ string literal+ | Int l Integer String -- ^ integer literal+ | Frac l Rational String -- ^ floating point literal+ | PrimInt l Integer String -- ^ unboxed integer literal+ | PrimWord l Integer String -- ^ unboxed word literal+ | PrimFloat l Rational String -- ^ unboxed float literal+ | PrimDouble l Rational String -- ^ unboxed double literal+ | PrimChar l Char String -- ^ unboxed character literal+ | PrimString l String String -- ^ unboxed string literal+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An indication whether a literal pattern has been negated or not.+data Sign l+ = Signless l+ | Negative l+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Haskell expressions.+data Exp l+ = Var l (QName l) -- ^ variable+ | OverloadedLabel l String -- ^ Overloaded label #foo+ | IPVar l (IPName l) -- ^ implicit parameter variable+ | Con l (QName l) -- ^ data constructor+ | Lit l (Literal l) -- ^ literal constant+ | InfixApp l (Exp l) (QOp l) (Exp l) -- ^ infix application+ | App l (Exp l) (Exp l) -- ^ ordinary application+ | NegApp l (Exp l) -- ^ negation expression @-/exp/@ (unary minus)+ | Lambda l [Pat l] (Exp l) -- ^ lambda expression+ | Let l (Binds l) (Exp l) -- ^ local declarations with @let@ ... @in@ ...+ | If l (Exp l) (Exp l) (Exp l) -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/+ | MultiIf l [GuardedRhs l] -- ^ @if@ @|@ /stmts/ @->@ /exp/ ...+ | Case l (Exp l) [Alt l] -- ^ @case@ /exp/ @of@ /alts/+ | Do l [Stmt l] -- ^ @do@-expression:+ -- the last statement in the list+ -- should be an expression.+ | MDo l [Stmt l] -- ^ @mdo@-expression+ | Tuple l Boxed [Exp l] -- ^ tuple expression+ | UnboxedSum l Int Int (Exp l) -- ^ unboxed sum+ | TupleSection l Boxed [Maybe (Exp l)] -- ^ tuple section expression, e.g. @(,,3)@+ | List l [Exp l] -- ^ list expression+ | ParArray l [Exp l] -- ^ parallel array expression+ | Paren l (Exp l) -- ^ parenthesised expression+ | LeftSection l (Exp l) (QOp l) -- ^ left section @(@/exp/ /qop/@)@+ | RightSection l (QOp l) (Exp l) -- ^ right section @(@/qop/ /exp/@)@+ | RecConstr l (QName l) [FieldUpdate l] -- ^ record construction expression+ | RecUpdate l (Exp l) [FieldUpdate l] -- ^ record update expression+ | EnumFrom l (Exp l) -- ^ unbounded arithmetic sequence,+ -- incrementing by 1: @[from ..]@+ | EnumFromTo l (Exp l) (Exp l) -- ^ bounded arithmetic sequence,+ -- incrementing by 1 @[from .. to]@+ | EnumFromThen l (Exp l) (Exp l) -- ^ unbounded arithmetic sequence,+ -- with first two elements given @[from, then ..]@+ | EnumFromThenTo l (Exp l) (Exp l) (Exp l)+ -- ^ bounded arithmetic sequence,+ -- with first two elements given @[from, then .. to]@+ | ParArrayFromTo l (Exp l) (Exp l) -- ^ Parallel array bounded arithmetic sequence,+ -- incrementing by 1 @[:from .. to:]@+ | ParArrayFromThenTo l (Exp l) (Exp l) (Exp l)+ -- ^ bounded arithmetic sequence,+ -- with first two elements given @[:from, then .. to:]@+ | ListComp l (Exp l) [QualStmt l] -- ^ ordinary list comprehension+ | ParComp l (Exp l) [[QualStmt l]] -- ^ parallel list comprehension+ | ParArrayComp l (Exp l) [[QualStmt l]] -- ^ parallel array comprehension+ | ExpTypeSig l (Exp l) (Type l) -- ^ expression with explicit type signature++ | VarQuote l (QName l) -- ^ @'x@ for template haskell reifying of expressions+ | TypQuote l (QName l) -- ^ @''T@ for template haskell reifying of types+ | BracketExp l (Bracket l) -- ^ template haskell bracket expression+ | SpliceExp l (Splice l) -- ^ template haskell splice expression+ | QuasiQuote l String String -- ^ quasi-quotaion: @[$/name/| /string/ |]@+ | TypeApp l (Type l) -- ^ Visible type application++-- Hsx+ | XTag l (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]+ -- ^ xml element, with attributes and children+ | XETag l (XName l) [XAttr l] (Maybe (Exp l))+ -- ^ empty xml element, with attributes+ | XPcdata l String -- ^ PCDATA child element+ | XExpTag l (Exp l) -- ^ escaped haskell expression inside xml+ | XChildTag l [Exp l] -- ^ children of an xml element+++-- Pragmas+ | CorePragma l String (Exp l) -- ^ CORE pragma+ | SCCPragma l String (Exp l) -- ^ SCC pragma+ | GenPragma l String (Int, Int) (Int, Int) (Exp l)+ -- ^ GENERATED pragma++-- Arrows+ | Proc l (Pat l) (Exp l) -- ^ arrows proc: @proc@ /pat/ @->@ /exp/+ | LeftArrApp l (Exp l) (Exp l) -- ^ arrow application (from left): /exp/ @-<@ /exp/+ | 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/++ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The name of an xml element or attribute,+-- possibly qualified with a namespace.+data XName l+ = XName l String -- <name ...+ | XDomName l String String -- <dom:name ...+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An xml attribute, which is a name-expression pair.+data XAttr l = XAttr l (XName l) (Exp l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A template haskell bracket expression.+data Bracket l+ = ExpBracket l (Exp l) -- ^ expression bracket: @[| ... |]@+ | TExpBracket l (Exp l) -- ^ typed expression bracket: @[|| ... ||]@+ | PatBracket l (Pat l) -- ^ pattern bracket: @[p| ... |]@+ | TypeBracket l (Type l) -- ^ type bracket: @[t| ... |]@+ | DeclBracket l [Decl l] -- ^ declaration bracket: @[d| ... |]@+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A template haskell splice expression+data Splice l+ = IdSplice l String -- ^ variable splice: @$var@+ | TIdSplice l String -- ^ typed variable splice: @$$var@+ | ParenSplice l (Exp l) -- ^ parenthesised expression splice: @$(/exp/)@+ | TParenSplice l (Exp l) -- ^ parenthesised typed expression splice: @$$(/exp/)@+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The safety of a foreign function call.+data Safety l+ = PlayRisky l -- ^ unsafe+ | PlaySafe l Bool -- ^ safe ('False') or threadsafe ('True')+ | PlayInterruptible l -- ^ interruptible+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The calling convention of a foreign function call.+data CallConv l+ = StdCall l+ | CCall l+ | CPlusPlus l+ | DotNet l+ | Jvm l+ | Js l+ | JavaScript l+ | CApi l+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A top level options pragma, preceding the module header.+data ModulePragma l+ = LanguagePragma l [Name l] -- ^ LANGUAGE pragma+ | OptionsPragma l (Maybe Tool) String+ -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC+ | AnnModulePragma l (Annotation l)+ -- ^ ANN pragma with module scope+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Recognised tools for OPTIONS pragmas.+data Tool = GHC | HUGS | NHC98 | YHC | HADDOCK | UnknownTool String+ deriving (Eq,Ord,Show,Typeable,Data,Generic)++-- | Recognised overlaps for overlap pragmas.+data Overlap l+ = NoOverlap l -- ^ NO_OVERLAP pragma+ | Overlap l -- ^ OVERLAP pragma+ | Overlapping l+ | Overlaps l+ | Overlappable l+ | Incoherent l -- ^ INCOHERENT pragma+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Activation clause of a RULES pragma.+data Activation l+ = ActiveFrom l Int+ | ActiveUntil l Int+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | The body of a RULES pragma.+data Rule l+ = Rule l String (Maybe (Activation l)) (Maybe [RuleVar l]) (Exp l) (Exp l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Variables used in a RULES pragma, optionally annotated with types+data RuleVar l+ = RuleVar l (Name l)+ | TypedRuleVar l (Name l) (Type l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | Warning text to optionally use in the module header of e.g.+-- a deprecated module.+data WarningText l+ = DeprText l String+ | WarnText l String+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)+++-- | A pattern, to be matched against a value.+data Pat l+ = PVar l (Name l) -- ^ variable+ | PLit l (Sign l) (Literal l) -- ^ literal constant+ | PNPlusK l (Name l) Integer -- ^ n+k pattern+ | PInfixApp l (Pat l) (QName l) (Pat l) -- ^ pattern with an infix data constructor+ | PApp l (QName l) [Pat l] -- ^ data constructor and argument patterns+ | PTuple l Boxed [Pat l] -- ^ tuple pattern+ | PUnboxedSum l Int Int (Pat l) -- ^ unboxed sum+ | PList l [Pat l] -- ^ list pattern+ | PParen l (Pat l) -- ^ parenthesized pattern+ | PRec l (QName l) [PatField l] -- ^ labelled pattern, record style+ | PAsPat l (Name l) (Pat l) -- ^ @\@@-pattern+ | PWildCard l -- ^ wildcard pattern: @_@+ | PIrrPat l (Pat l) -- ^ irrefutable pattern: @~/pat/@+ | PatTypeSig l (Pat l) (Type l) -- ^ pattern with type signature+ | PViewPat l (Exp l) (Pat l) -- ^ view patterns of the form @(/exp/ -> /pat/)@+ | PRPat l [RPat l] -- ^ regular list pattern+ | PXTag l (XName l) [PXAttr l] (Maybe (Pat l)) [Pat l]+ -- ^ XML element pattern+ | PXETag l (XName l) [PXAttr l] (Maybe (Pat l))+ -- ^ XML singleton element pattern+ | PXPcdata l String -- ^ XML PCDATA pattern+ | PXPatTag l (Pat l) -- ^ XML embedded pattern+ | PXRPats l [RPat l] -- ^ XML regular list pattern+ | PSplice l (Splice l) -- ^ template haskell splice pattern+ | PQuasiQuote l String String -- ^ quasi quote pattern: @[$/name/| /string/ |]@+ | PBangPat l (Pat l) -- ^ strict (bang) pattern: @f !x = ...@+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An XML attribute in a pattern.+data PXAttr l = PXAttr l (XName l) (Pat l)+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A regular pattern operator.+data RPatOp l+ = RPStar l -- ^ @*@ = 0 or more+ | RPStarG l -- ^ @*!@ = 0 or more, greedy+ | RPPlus l -- ^ @+@ = 1 or more+ | RPPlusG l -- ^ @+!@ = 1 or more, greedy+ | RPOpt l -- ^ @?@ = 0 or 1+ | RPOptG l -- ^ @?!@ = 0 or 1, greedy+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An entity in a regular pattern.+data RPat l+ = RPOp l (RPat l) (RPatOp l) -- ^ operator pattern, e.g. pat*+ | RPEither l (RPat l) (RPat l) -- ^ choice pattern, e.g. (1 | 2)+ | RPSeq l [RPat l] -- ^ sequence pattern, e.g. (| 1, 2, 3 |)+ | RPGuard l (Pat l) [Stmt l] -- ^ guarded pattern, e.g. (| p | p < 3 |)+ | RPCAs l (Name l) (RPat l) -- ^ non-linear variable binding, e.g. (foo\@:(1 | 2))*+ | RPAs l (Name l) (RPat l) -- ^ linear variable binding, e.g. foo\@(1 | 2)+ | RPParen l (RPat l) -- ^ parenthesised pattern, e.g. (2*)+ | RPPat l (Pat l) -- ^ an ordinary pattern+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An /fpat/ in a labeled record pattern.+data PatField l+ = PFieldPat l (QName l) (Pat l) -- ^ ordinary label-pattern pair+ | PFieldPun l (QName l) -- ^ record field pun+ | PFieldWildcard l -- ^ record field wildcard+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A statement, representing both a /stmt/ in a @do@-expression,+-- an ordinary /qual/ in a list comprehension, as well as a /stmt/+-- in a pattern guard.+data Stmt l+ = Generator l (Pat l) (Exp l)+ -- ^ a generator: /pat/ @<-@ /exp/+ | Qualifier l (Exp l) -- ^ an /exp/ by itself: in a @do@-expression,+ -- an action whose result is discarded;+ -- in a list comprehension and pattern guard,+ -- a guard expression+ | LetStmt l (Binds l) -- ^ local bindings+ | RecStmt l [Stmt l] -- ^ a recursive binding group for arrows+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | A general /transqual/ in a list comprehension,+-- which could potentially be a transform of the kind+-- enabled by TransformListComp.+data QualStmt l+ = QualStmt l (Stmt l) -- ^ an ordinary statement+ | ThenTrans l (Exp l) -- ^ @then@ /exp/+ | ThenBy l (Exp l) (Exp l) -- ^ @then@ /exp/ @by@ /exp/+ | GroupBy l (Exp l) -- ^ @then@ @group@ @by@ /exp/+ | GroupUsing l (Exp l) -- ^ @then@ @group@ @using@ /exp/+ | GroupByUsing l (Exp l) (Exp l) -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An /fbind/ in a labeled construction or update expression.+data FieldUpdate l+ = FieldUpdate l (QName l) (Exp l) -- ^ ordinary label-expresion pair+ | FieldPun l (QName l) -- ^ record field pun+ | FieldWildcard l -- ^ record field wildcard+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-- | An /alt/ alternative in a @case@ expression.+data Alt l+ = Alt l (Pat l) (Rhs l) (Maybe (Binds l))+ deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)++-----------------------------------------------------------------------------+-- Builtin names.++prelude_mod, main_mod :: l -> ModuleName l+prelude_mod l = ModuleName l "Prelude"+main_mod l = ModuleName l "Main"++main_name :: l -> Name l+main_name l = Ident l "main"++unit_con_name :: l -> QName l+unit_con_name l = Special l (UnitCon l)++tuple_con_name :: l -> Boxed -> Int -> QName l+tuple_con_name l b i = Special l (TupleCon l b (i+1))++list_con_name :: l -> QName l+list_con_name l = Special l (ListCon l)++list_cons_name :: l -> QName l+list_cons_name l = Special l (Cons l)++unboxed_singleton_con_name :: l -> QName l+unboxed_singleton_con_name l = Special l (UnboxedSingleCon l)++unit_con :: l -> Exp l+unit_con l = Con l $ unit_con_name l++tuple_con :: l -> Boxed -> Int -> Exp l+tuple_con l b i = Con l (tuple_con_name l b i)++unboxed_singleton_con :: l -> Exp l+unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)++as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name :: l -> Name l+as_name l = Ident l "as"+qualified_name l = Ident l "qualified"+hiding_name l = Ident l "hiding"+minus_name l = Symbol l "-"+bang_name l = Symbol l "!"+dot_name l = Symbol l "."+star_name l = Symbol l "*"++hole_name :: l -> QName l+hole_name l = Special l (ExprHole l)++export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name,+ stdcall_name, ccall_name, cplusplus_name, dotnet_name,+ jvm_name, js_name, javascript_name, capi_name, forall_name,+ family_name, role_name, stock_name, anyclass_name, via_name :: l -> Name l+export_name l = Ident l "export"+safe_name l = Ident l "safe"+unsafe_name l = Ident l "unsafe"+interruptible_name l = Ident l "interruptible"+threadsafe_name l = Ident l "threadsafe"+stdcall_name l = Ident l "stdcall"+ccall_name l = Ident l "ccall"+cplusplus_name l = Ident l "cplusplus"+dotnet_name l = Ident l "dotnet"+jvm_name l = Ident l "jvm"+js_name l = Ident l "js"+javascript_name l = Ident l "javascript"+capi_name l = Ident l "capi"+forall_name l = Ident l "forall"+family_name l = Ident l "family"+role_name l = Ident l "role"+stock_name l = Ident l "stock"+anyclass_name l = Ident l "anyclass"+via_name l = Ident l "via"++unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: l -> QName l+unit_tycon_name l = unit_con_name l+fun_tycon_name l = Special l (FunCon l)+list_tycon_name l = Special l (ListCon l)+unboxed_singleton_tycon_name l = Special l (UnboxedSingleCon l)++tuple_tycon_name :: l -> Boxed -> Int -> QName l+tuple_tycon_name l b i = tuple_con_name l b i++unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> Type l+unit_tycon l = TyCon l $ unit_tycon_name l+fun_tycon l = TyCon l $ fun_tycon_name l+list_tycon l = TyCon l $ list_tycon_name l+unboxed_singleton_tycon l = TyCon l $ unboxed_singleton_tycon_name l++tuple_tycon :: l -> Boxed -> Int -> Type l+tuple_tycon l b i = TyCon l (tuple_tycon_name l b i)++-----------------------------------------------------------------------------+-- AST traversal, boiler-plate style++-- | Test if two AST elements are equal modulo annotations.+(=~=) :: (Annotated a, Eq (a ())) => a l1 -> a l2 -> Bool+a =~= b = fmap (const ()) a == fmap (const ()) b++-----------------------------------------------------------------------------+-- Reading annotations++-- | AST nodes are annotated, and this class allows manipulation of the annotations.+class Functor ast => Annotated ast where+ -- | Retrieve the annotation of an AST node.+ ann :: ast l -> l+ -- | Change the annotation of an AST node. Note that only the annotation of+ -- the node itself is affected, and not the annotations of any child nodes.+ -- if all nodes in the AST tree are to be affected, use 'fmap'.+ amap :: (l -> l) -> ast l -> ast l++instance Annotated ModuleName where+ ann (ModuleName l _) = l+ amap f (ModuleName l n) = ModuleName (f l) n++instance Annotated SpecialCon where+ ann sc = case sc of+ UnitCon l -> l+ ListCon l -> l+ FunCon l -> l+ TupleCon l _ _ -> l+ Cons l -> l+ UnboxedSingleCon l -> l+ ExprHole l -> l+ amap = fmap++instance Annotated QName where+ ann qn = case qn of+ Qual l _ _ -> l+ UnQual l _ -> l+ Special l _ -> l+ amap f qn = case qn of+ Qual l mn n -> Qual (f l) mn n+ UnQual l n -> UnQual (f l) n+ Special l sc -> Special (f l) sc++instance Annotated Name where+ ann (Ident l _) = l+ ann (Symbol l _) = l+ amap = fmap++instance Annotated IPName where+ ann (IPDup l _) = l+ ann (IPLin l _) = l+ amap = fmap++instance Annotated QOp where+ ann (QVarOp l _) = l+ ann (QConOp l _) = l+ amap f (QVarOp l qn) = QVarOp (f l) qn+ amap f (QConOp l qn) = QConOp (f l) qn++instance Annotated Op where+ ann (VarOp l _) = l+ ann (ConOp l _) = l+ amap f (VarOp l n) = VarOp (f l) n+ amap f (ConOp l n) = ConOp (f l) n++instance Annotated CName where+ ann (VarName l _) = l+ ann (ConName l _) = l+ amap f (VarName l n) = VarName (f l) n+ amap f (ConName l n) = ConName (f l) n++instance Annotated Module where+ ann (Module l _ _ _ _) = l+ ann (XmlPage l _ _ _ _ _ _) = l+ ann (XmlHybrid l _ _ _ _ _ _ _ _) = l++ amap f (Module l mmh ops iss dcls) =+ Module (f l) mmh ops iss dcls+ amap f (XmlPage l mn os xn xas me es) =+ XmlPage (f l) mn os xn xas me es+ amap f (XmlHybrid l mmh ops iss dcls xn xas me es) =+ XmlHybrid (f l) mmh ops iss dcls xn xas me es++instance Annotated ModuleHead where+ ann (ModuleHead l _ _ _) = l+ amap f (ModuleHead l n mwt mesl) = ModuleHead (f l) n mwt mesl++instance Annotated ExportSpecList where+ ann (ExportSpecList l _) = l+ amap f (ExportSpecList l ess) = ExportSpecList (f l) ess++instance Annotated ExportSpec where+ ann es = case es of+ EVar l _ -> l+ EAbs l _ _ -> l+ EThingWith l _ _ _ -> l+ EModuleContents l _ -> l+ amap f es = case es of+ EVar l qn -> EVar (f l) qn+ EAbs l n qn -> EAbs (f l) n qn+ EThingWith l wc qn cns -> EThingWith (f l) wc qn cns+ EModuleContents l mn -> EModuleContents (f l) mn++instance Annotated EWildcard where+ ann ewc = case ewc of+ NoWildcard l -> l+ EWildcard l _ -> l+ amap f ewc = case ewc of+ NoWildcard l -> NoWildcard (f l)+ EWildcard l n -> EWildcard (f l) n++++instance Annotated Namespace where+ ann es = case es of+ NoNamespace l -> l+ TypeNamespace l -> l+ PatternNamespace l -> l+ amap f es = case es of+ NoNamespace l -> NoNamespace (f l)+ TypeNamespace l -> TypeNamespace (f l)+ PatternNamespace l -> PatternNamespace (f l)++instance Annotated ImportDecl where+ ann (ImportDecl l _ _ _ _ _ _ _) = l+ amap f (ImportDecl l mn qual src safe pkg mmn mis) =+ ImportDecl (f l) mn qual src safe pkg mmn mis++instance Annotated ImportSpecList where+ ann (ImportSpecList l _ _) = l+ amap f (ImportSpecList l b iss) = ImportSpecList (f l) b iss++instance Annotated ImportSpec where+ ann is = case is of+ IVar l _ -> l+ IAbs l _ _ -> l+ IThingAll l _ -> l+ IThingWith l _ _ -> l+ amap f is = case is of+ IVar l n -> IVar (f l) n+ IAbs l ns n -> IAbs (f l) ns n+ IThingAll l n -> IThingAll (f l) n+ IThingWith l n cns -> IThingWith (f l) n cns++instance Annotated Assoc where+ ann (AssocNone l) = l+ ann (AssocLeft l) = l+ ann (AssocRight l) = l+ amap = fmap++instance Annotated Deriving where+ ann (Deriving l _ _) = l+ amap f (Deriving l mds ihs) = Deriving (f l) mds ihs++instance Annotated DerivStrategy where+ ann (DerivStock l) = l+ ann (DerivAnyclass l) = l+ ann (DerivNewtype l) = l+ ann (DerivVia l _) = l++ amap f (DerivStock l) = DerivStock (f l)+ amap f (DerivAnyclass l) = DerivAnyclass (f l)+ amap f (DerivNewtype l) = DerivNewtype (f l)+ amap f (DerivVia l t) = DerivVia (f l) t++instance Annotated TypeEqn where+ ann (TypeEqn l _ _) = l+ amap f (TypeEqn l a b) = TypeEqn (f l) a b++instance Annotated InjectivityInfo where+ ann (InjectivityInfo l _ _) = l+ amap f (InjectivityInfo l to from) = InjectivityInfo (f l) to from++instance Annotated ResultSig where+ ann (KindSig l _) = l+ ann (TyVarSig l _) = l++ amap f (KindSig l k) = KindSig (f l) k+ amap f (TyVarSig l tv) = TyVarSig (f l) tv++instance Annotated Decl where+ ann decl = case decl of+ TypeDecl l _ _ -> l+ TypeFamDecl l _ _ _ -> l+ ClosedTypeFamDecl l _ _ _ _ -> l+ DataDecl l _ _ _ _ _ -> l+ GDataDecl l _ _ _ _ _ _ -> l+ DataFamDecl l _ _ _ -> l+ TypeInsDecl l _ _ -> l+ DataInsDecl l _ _ _ _ -> l+ GDataInsDecl l _ _ _ _ _ -> l+ ClassDecl l _ _ _ _ -> l+ InstDecl l _ _ _ -> l+ DerivDecl l _ _ _ -> l+ InfixDecl l _ _ _ -> l+ DefaultDecl l _ -> l+ SpliceDecl l _ -> l+ TSpliceDecl l _ -> l+ TypeSig l _ _ -> l+ PatSynSig l _ _ _ _ _ _ -> l+ FunBind l _ -> l+ PatBind l _ _ _ -> l+ ForImp l _ _ _ _ _ -> l+ ForExp l _ _ _ _ -> l+ RulePragmaDecl l _ -> l+ DeprPragmaDecl l _ -> l+ WarnPragmaDecl l _ -> l+ InlineSig l _ _ _ -> l+ InlineConlikeSig l _ _ -> l+ SpecSig l _ _ _ -> l+ SpecInlineSig l _ _ _ _ -> l+ InstSig l _ -> l+ AnnPragma l _ -> l+ MinimalPragma l _ -> l+ RoleAnnotDecl l _ _ -> l+ PatSyn l _ _ _ -> l+ CompletePragma l _ _ -> l+ amap f decl = case decl of+ TypeDecl l dh t -> TypeDecl (f l) dh t+ TypeFamDecl l dh mk mi -> TypeFamDecl (f l) dh mk mi+ ClosedTypeFamDecl l dh mk mi eqns -> ClosedTypeFamDecl (f l) dh mk mi eqns+ DataDecl l dn mcx dh cds ders ->+ DataDecl (f l) dn mcx dh cds ders+ GDataDecl l dn mcx dh mk gds ders ->+ GDataDecl (f l) dn mcx dh mk gds ders+ DataFamDecl l mcx dh mk -> DataFamDecl (f l) mcx dh mk+ TypeInsDecl l t1 t2 -> TypeInsDecl (f l) t1 t2+ DataInsDecl l dn t cds ders -> DataInsDecl (f l) dn t cds ders+ GDataInsDecl l dn t mk gds ders -> GDataInsDecl (f l) dn t mk gds ders+ ClassDecl l mcx dh fds cds -> ClassDecl (f l) mcx dh fds cds+ InstDecl l mo ih ids -> InstDecl (f l) mo ih ids+ DerivDecl l mds mo ih -> DerivDecl (f l) mds mo ih+ InfixDecl l a k ops -> InfixDecl (f l) a k ops+ DefaultDecl l ts -> DefaultDecl (f l) ts+ SpliceDecl l sp -> SpliceDecl (f l) sp+ TSpliceDecl l sp -> TSpliceDecl (f l) sp+ TypeSig l ns t -> TypeSig (f l) ns t+ PatSynSig l n dh c1 dh2 c2 t -> PatSynSig (f l) n dh c1 dh2 c2 t+ FunBind l ms -> FunBind (f l) ms+ PatBind l p rhs bs -> PatBind (f l) p rhs bs+ ForImp l cc msf s n t -> ForImp (f l) cc msf s n t+ ForExp l cc s n t -> ForExp (f l) cc s n t+ RulePragmaDecl l rs -> RulePragmaDecl (f l) rs+ DeprPragmaDecl l nss -> DeprPragmaDecl (f l) nss+ WarnPragmaDecl l nss -> WarnPragmaDecl (f l) nss+ InlineSig l b act qn -> InlineSig (f l) b act qn+ InlineConlikeSig l act qn -> InlineConlikeSig (f l) act qn+ SpecSig l act qn ts -> SpecSig (f l) act qn ts+ SpecInlineSig l b act qn ts -> SpecInlineSig (f l) b act qn ts+ InstSig l ih -> InstSig (f l) ih+ AnnPragma l ann' -> AnnPragma (f l) ann'+ MinimalPragma l b -> MinimalPragma (f l) b+ RoleAnnotDecl l t rs -> RoleAnnotDecl (f l) t rs+ PatSyn l p r d -> PatSyn (f l) p r d+ CompletePragma l cs ty -> CompletePragma (f l) cs ty++instance Annotated Role where+ ann r = case r of+ RoleWildcard l -> l+ Representational l -> l+ Phantom l -> l+ Nominal l -> l+ amap f r = case r of+ RoleWildcard l -> RoleWildcard (f l)+ Representational l -> Representational (f l)+ Phantom l -> Phantom (f l)+ Nominal l -> Nominal (f l)++instance Annotated Annotation where+ ann (Ann l _ _) = l+ ann (TypeAnn l _ _) = l+ ann (ModuleAnn l _) = l+ amap f (Ann l n e) = Ann (f l) n e+ amap f (TypeAnn l n e) = TypeAnn (f l) n e+ amap f (ModuleAnn l e) = ModuleAnn (f l) e++instance Annotated BooleanFormula where+ ann (VarFormula l _) = l+ ann (AndFormula l _) = l+ ann (OrFormula l _) = l+ ann (ParenFormula l _) = l+ amap f (VarFormula l n) = VarFormula (f l) n+ amap f (AndFormula l bs) = AndFormula (f l) bs+ amap f (OrFormula l bs) = OrFormula (f l) bs+ amap f (ParenFormula l b) = ParenFormula (f l) b++instance Annotated DataOrNew where+ ann (DataType l) = l+ ann (NewType l) = l+ amap = fmap++instance Annotated DeclHead where+ ann (DHead l _) = l+ ann (DHInfix l _ _) = l+ ann (DHParen l _) = l+ ann (DHApp l _ _) = l+ amap f (DHead l n) = DHead (f l) n+ amap f (DHInfix l tva n) = DHInfix (f l) tva n+ amap f (DHParen l dh) = DHParen (f l) dh+ amap f (DHApp l dh t) = DHApp (f l) dh t++instance Annotated InstRule where+ ann (IRule l _ _ _) = l+ ann (IParen l _) = l+ amap f (IRule l mtv cxt qn) = IRule (f l) mtv cxt qn+ amap f (IParen l ih) = IParen (f l) ih++instance Annotated InstHead where+ ann (IHCon l _) = l+ ann (IHInfix l _ _) = l+ ann (IHParen l _) = l+ ann (IHApp l _ _) = l+ amap f (IHCon l n) = IHCon (f l) n+ amap f (IHInfix l tva n) = IHInfix (f l) tva n+ amap f (IHParen l dh) = IHParen (f l) dh+ amap f (IHApp l dh t) = IHApp (f l) dh t++instance Annotated Binds where+ ann (BDecls l _) = l+ ann (IPBinds l _) = l+ amap f (BDecls l decls) = BDecls (f l) decls+ amap f (IPBinds l ibs) = IPBinds (f l) ibs++instance Annotated IPBind where+ ann (IPBind l _ _) = l+ amap f (IPBind l ipn e) = IPBind (f l) ipn e++instance Annotated Match where+ ann (Match l _ _ _ _) = l+ ann (InfixMatch l _ _ _ _ _) = l+ amap f (Match l n ps rhs bs) = Match (f l) n ps rhs bs+ amap f (InfixMatch l a n b rhs bs) = InfixMatch (f l) a n b rhs bs++instance Annotated QualConDecl where+ ann (QualConDecl l _ _ _) = l+ amap f (QualConDecl l tvs cx cd) = QualConDecl (f l) tvs cx cd++instance Annotated ConDecl where+ ann (ConDecl l _ _) = l+ ann (InfixConDecl l _ _ _) = l+ ann (RecDecl l _ _) = l+ amap f (ConDecl l n bts) = ConDecl (f l) n bts+ amap f (InfixConDecl l ta n tb) = InfixConDecl (f l) ta n tb+ amap f (RecDecl l n fds) = RecDecl (f l) n fds++instance Annotated FieldDecl where+ ann (FieldDecl l _ _) = l+ amap f (FieldDecl l ns t) = FieldDecl (f l) ns t++instance Annotated GadtDecl where+ ann (GadtDecl l _ _ _ _ _) = l+ amap f (GadtDecl l n t1 t2 t3 t4) = GadtDecl (f l) n t1 t2 t3 t4++instance Annotated ClassDecl where+ ann (ClsDecl l _) = l+ ann (ClsDataFam l _ _ _) = l+ ann (ClsTyFam l _ _ _) = l+ ann (ClsTyDef l _) = l+ ann (ClsDefSig l _ _) = l+ amap f (ClsDecl l d) = ClsDecl (f l) d+ amap f (ClsDataFam l mcx dh mk) = ClsDataFam (f l) mcx dh mk+ amap f (ClsTyFam l dh mk mi) = ClsTyFam (f l) dh mk mi+ amap f (ClsTyDef l t ) = ClsTyDef (f l) t+ amap f (ClsDefSig l n t) = ClsDefSig (f l) n t++instance Annotated InstDecl where+ ann id = case id of+ InsDecl l _ -> l+ InsType l _ _ -> l+ InsData l _ _ _ _ -> l+ InsGData l _ _ _ _ _ -> l+-- InsInline l _ _ _ -> l+ amap f id = case id of+ InsDecl l d -> InsDecl (f l) d+ InsType l t1 t2 -> InsType (f l) t1 t2+ InsData l dn t cds ders -> InsData (f l) dn t cds ders+ InsGData l dn t mk gds ders -> InsGData (f l) dn t mk gds ders+-- InsInline l b act qn -> InsInline (f l) b act qn++instance Annotated BangType where+ ann (BangedTy l) = l+ ann (LazyTy l) = l+ ann (NoStrictAnnot l) = l++ amap f (BangedTy l) = BangedTy (f l)+ amap f (LazyTy l) = LazyTy (f l)+ amap f (NoStrictAnnot l) = NoStrictAnnot (f l)++instance Annotated Unpackedness where+ ann (Unpack l) = l+ ann (NoUnpack l) = l+ ann (NoUnpackPragma l) = l++ amap f (Unpack l) = Unpack (f l)+ amap f (NoUnpack l) = Unpack (f l)+ amap f (NoUnpackPragma l) = Unpack (f l)++instance Annotated Rhs where+ ann (UnGuardedRhs l _) = l+ ann (GuardedRhss l _) = l+ amap f (UnGuardedRhs l e) = UnGuardedRhs (f l) e+ amap f (GuardedRhss l grhss) = GuardedRhss (f l) grhss++instance Annotated GuardedRhs where+ ann (GuardedRhs l _ _) = l+ amap f (GuardedRhs l ss e) = GuardedRhs (f l) ss e++instance Annotated Type where+ ann t = case t of+ TyForall l _ _ _ -> l+ TyStar l -> l+ TyFun l _ _ -> l+ TyTuple l _ _ -> l+ TyUnboxedSum l _ -> l+ TyList l _ -> l+ TyParArray l _ -> l+ TyApp l _ _ -> l+ TyVar l _ -> l+ TyCon l _ -> l+ TyParen l _ -> l+ TyInfix l _ _ _ -> l+ TyKind l _ _ -> l+ TyPromoted l _ -> l+ TyEquals l _ _ -> l+ TySplice l _ -> l+ TyBang l _ _ _ -> l+ TyWildCard l _ -> l+ TyQuasiQuote l _ _ -> l+ amap f t1 = case t1 of+ TyForall l mtvs mcx t -> TyForall (f l) mtvs mcx t+ TyStar l -> TyStar (f l)+ TyFun l t1' t2 -> TyFun (f l) t1' t2+ TyTuple l b ts -> TyTuple (f l) b ts+ TyUnboxedSum l s -> TyUnboxedSum (f l) s+ TyList l t -> TyList (f l) t+ TyParArray l t -> TyParArray (f l) t+ TyApp l t1' t2 -> TyApp (f l) t1' t2+ TyVar l n -> TyVar (f l) n+ TyCon l qn -> TyCon (f l) qn+ TyParen l t -> TyParen (f l) t+ TyInfix l ta qn tb -> TyInfix (f l) ta qn tb+ TyKind l t k -> TyKind (f l) t k+ TyPromoted l p -> TyPromoted (f l) p+ TyEquals l a b -> TyEquals (f l) a b+ TySplice l s -> TySplice (f l) s+ TyBang l b u t -> TyBang (f l) b u t+ TyWildCard l n -> TyWildCard (f l) n+ TyQuasiQuote l n s -> TyQuasiQuote (f l) n s++instance Annotated MaybePromotedName where+ ann t = case t of+ PromotedName l _ -> l+ UnpromotedName l _ -> l+ amap f tl = case tl of+ PromotedName l q -> PromotedName (f l) q+ UnpromotedName l q -> UnpromotedName (f l) q++instance Annotated TyVarBind where+ ann (KindedVar l _ _) = l+ ann (UnkindedVar l _) = l+ amap f (KindedVar l n k) = KindedVar (f l) n k+ amap f (UnkindedVar l n) = UnkindedVar (f l) n++instance Annotated FunDep where+ ann (FunDep l _ _) = l+ amap f (FunDep l ns1 ns2) = FunDep (f l) ns1 ns2++instance Annotated Context where+ ann (CxSingle l _) = l+ ann (CxTuple l _) = l+ ann (CxEmpty l) = l+ amap f (CxSingle l asst ) = CxSingle (f l) asst+ amap f (CxTuple l assts) = CxTuple (f l) assts+ amap f (CxEmpty l) = CxEmpty (f l)++instance Annotated Asst where+ ann asst = case asst of+ TypeA l _ -> l+ IParam l _ _ -> l+ ParenA l _ -> l+ amap f asst = case asst of+ TypeA l t -> TypeA (f l) t+ IParam l ipn t -> IParam (f l) ipn t+ ParenA l a -> ParenA (f l) a++instance Annotated Literal where+ ann lit = case lit of+ Char l _ _ -> l+ String l _ _ -> l+ Int l _ _ -> l+ Frac l _ _ -> l+ PrimInt l _ _ -> l+ PrimWord l _ _ -> l+ PrimFloat l _ _ -> l+ PrimDouble l _ _ -> l+ PrimChar l _ _ -> l+ PrimString l _ _ -> l+ amap = fmap++instance Annotated Sign where+ ann sg = case sg of+ Signless l -> l+ Negative l -> l+ amap = fmap++instance Annotated Exp where+ ann e = case e of+ Var l _ -> l+ OverloadedLabel l _ -> l+ IPVar l _ -> l+ Con l _ -> l+ Lit l _ -> l+ InfixApp l _ _ _ -> l+ App l _ _ -> l+ NegApp l _ -> l+ Lambda l _ _ -> l+ Let l _ _ -> l+ If l _ _ _ -> l+ MultiIf l _ -> l+ Case l _ _ -> l+ Do l _ -> l+ MDo l _ -> l+ Tuple l _ _ -> l+ UnboxedSum l _ _ _ -> l+ TupleSection l _ _ -> l+ List l _ -> l+ ParArray l _ -> l+ Paren l _ -> l+ LeftSection l _ _ -> l+ RightSection l _ _ -> l+ RecConstr l _ _ -> l+ RecUpdate l _ _ -> l+ EnumFrom l _ -> l+ EnumFromTo l _ _ -> l+ EnumFromThen l _ _ -> l+ EnumFromThenTo l _ _ _ -> l+ ParArrayFromTo l _ _ -> l+ ParArrayFromThenTo l _ _ _ -> l+ ListComp l _ _ -> l+ ParComp l _ _ -> l+ ParArrayComp l _ _ -> l+ ExpTypeSig l _ _ -> l+ VarQuote l _ -> l+ TypQuote l _ -> l+ BracketExp l _ -> l+ SpliceExp l _ -> l+ QuasiQuote l _ _ -> l+ TypeApp l _ -> l++ XTag l _ _ _ _ -> l+ XETag l _ _ _ -> l+ XPcdata l _ -> l+ XExpTag l _ -> l+ XChildTag l _ -> l++ CorePragma l _ _ -> l+ SCCPragma l _ _ -> l+ GenPragma l _ _ _ _ -> l++ Proc l _ _ -> l+ LeftArrApp l _ _ -> l+ RightArrApp l _ _ -> l+ LeftArrHighApp l _ _ -> l+ RightArrHighApp l _ _ -> l+ ArrOp l _ -> l++ LCase l _ -> l++ amap f e1 = case e1 of+ Var l qn -> Var (f l) qn+ OverloadedLabel l qn -> OverloadedLabel (f l) qn+ IPVar l ipn -> IPVar (f l) ipn+ Con l qn -> Con (f l) qn+ Lit l lit -> Lit (f l) lit+ InfixApp l e1' qop e2 -> InfixApp (f l) e1' qop e2+ App l e1' e2 -> App (f l) e1' e2+ NegApp l e -> NegApp (f l) e+ Lambda l ps e -> Lambda (f l) ps e+ Let l bs e -> Let (f l) bs e+ If l ec et ee -> If (f l) ec et ee+ Case l e alts -> Case (f l) e alts+ Do l ss -> Do (f l) ss+ MDo l ss -> MDo (f l) ss+ Tuple l bx es -> Tuple (f l) bx es+ UnboxedSum l b a es -> UnboxedSum (f l) b a es+ TupleSection l bx mes -> TupleSection (f l) bx mes+ List l es -> List (f l) es+ ParArray l es -> ParArray (f l) es+ Paren l e -> Paren (f l) e+ LeftSection l e qop -> LeftSection (f l) e qop+ RightSection l qop e -> RightSection (f l) qop e+ RecConstr l qn fups -> RecConstr (f l) qn fups+ RecUpdate l e fups -> RecUpdate (f l) e fups+ EnumFrom l e -> EnumFrom (f l) e+ EnumFromTo l ef et -> EnumFromTo (f l) ef et+ EnumFromThen l ef et -> EnumFromThen (f l) ef et+ EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto+ ParArrayFromTo l ef et -> ParArrayFromTo (f l) ef et+ ParArrayFromThenTo l ef eth eto -> ParArrayFromThenTo (f l) ef eth eto+ ListComp l e qss -> ListComp (f l) e qss+ ParComp l e qsss -> ParComp (f l) e qsss+ ParArrayComp l e qsss -> ParArrayComp (f l) e qsss+ ExpTypeSig l e t -> ExpTypeSig (f l) e t+ VarQuote l qn -> VarQuote (f l) qn+ TypQuote l qn -> TypQuote (f l) qn+ BracketExp l br -> BracketExp (f l) br+ SpliceExp l sp -> SpliceExp (f l) sp+ QuasiQuote l sn se -> QuasiQuote (f l) sn se+ TypeApp l t -> TypeApp (f l) t++ XTag l xn xas me es -> XTag (f l) xn xas me es+ XETag l xn xas me -> XETag (f l) xn xas me+ XPcdata l s -> XPcdata (f l) s+ XExpTag l e -> XExpTag (f l) e+ XChildTag l es -> XChildTag (f l) es++ CorePragma l s e -> CorePragma (f l) s e+ SCCPragma l s e -> SCCPragma (f l) s e+ GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 e++ Proc l p e -> Proc (f l) p e+ LeftArrApp l e1' e2 -> LeftArrApp (f l) e1' e2+ 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+++instance Annotated XName where+ ann (XName l _) = l+ ann (XDomName l _ _) = l+ amap = fmap++instance Annotated XAttr where+ ann (XAttr l _ _) = l+ amap f (XAttr l xn e) = XAttr (f l) xn e++instance Annotated Bracket where+ ann (ExpBracket l _) = l+ ann (TExpBracket l _) = l+ ann (PatBracket l _) = l+ ann (TypeBracket l _) = l+ ann (DeclBracket l _) = l+ amap f (ExpBracket l e) = ExpBracket (f l) e+ amap f (TExpBracket l e) = TExpBracket (f l) e+ amap f (PatBracket l p) = PatBracket (f l) p+ amap f (TypeBracket l t) = TypeBracket (f l) t+ amap f (DeclBracket l ds) = DeclBracket (f l) ds++instance Annotated Splice where+ ann (IdSplice l _) = l+ ann (TIdSplice l _) = l+ ann (ParenSplice l _) = l+ ann (TParenSplice l _) = l+ amap f (IdSplice l s) = IdSplice (f l) s+ amap f (TIdSplice l s) = TIdSplice (f l) s+ amap f (ParenSplice l e) = ParenSplice (f l) e+ amap f (TParenSplice l e) = TParenSplice (f l) e++instance Annotated Safety where+ ann (PlayRisky l) = l+ ann (PlaySafe l _) = l+ ann (PlayInterruptible l) = l+ amap = fmap++instance Annotated CallConv where+ ann (StdCall l) = l+ ann (CCall l) = l+ ann (CPlusPlus l) = l+ ann (DotNet l) = l+ ann (Jvm l) = l+ ann (Js l) = l+ ann (JavaScript l) = l+ ann (CApi l) = l+ amap = fmap++instance Annotated ModulePragma where+ ann (LanguagePragma l _) = l+ ann (OptionsPragma l _ _) = l+ ann (AnnModulePragma l _) = l+ amap f (LanguagePragma l ns) = LanguagePragma (f l) ns+ amap f (AnnModulePragma l a) = AnnModulePragma (f l) a+ amap f p = fmap f p++instance Annotated Overlap where+ ann (NoOverlap l) = l+ ann (Overlap l) = l+ ann (Overlaps l) = l+ ann (Overlappable l) = l+ ann (Overlapping l) = l+ ann (Incoherent l) = l+ amap = fmap++instance Annotated Activation where+ ann (ActiveFrom l _) = l+ ann (ActiveUntil l _) = l+ amap = fmap++instance Annotated Rule where+ ann (Rule l _ _ _ _ _) = l+ amap f (Rule l s act mrvs e1 e2) = Rule (f l) s act mrvs e1 e2++instance Annotated RuleVar where+ ann (RuleVar l _) = l+ ann (TypedRuleVar l _ _) = l+ amap f (RuleVar l n) = RuleVar (f l) n+ amap f (TypedRuleVar l n t) = TypedRuleVar (f l) n t++instance Annotated WarningText where+ ann (DeprText l _) = l+ ann (WarnText l _) = l+ amap = fmap++instance Annotated Pat where+ ann p = case p of+ PVar l _ -> l+ PLit l _ _ -> l+ PNPlusK l _ _ -> l+ PInfixApp l _ _ _ -> l+ PApp l _ _ -> l+ PTuple l _ _ -> l+ PUnboxedSum l _ _ _ -> l+ PList l _ -> l+ PParen l _ -> l+ PRec l _ _ -> l+ PAsPat l _ _ -> l+ PWildCard l -> l+ PIrrPat l _ -> l+ PatTypeSig l _ _ -> l+ PViewPat l _ _ -> l+ PRPat l _ -> l+ PXTag l _ _ _ _ -> l+ PXETag l _ _ _ -> l+ PXPcdata l _ -> l+ PXPatTag l _ -> l+ PXRPats l _ -> l+ PSplice l _ -> l+ PQuasiQuote l _ _ -> l+ PBangPat l _ -> l+ amap f p1 = case p1 of+ PVar l n -> PVar (f l) n+ PLit l sg lit -> PLit (f l) sg lit+ PNPlusK l n k -> PNPlusK (f l) n k+ PInfixApp l pa qn pb -> PInfixApp (f l) pa qn pb+ PApp l qn ps -> PApp (f l) qn ps+ PTuple l bx ps -> PTuple (f l) bx ps+ PUnboxedSum l b a ps -> PUnboxedSum (f l) b a ps+ PList l ps -> PList (f l) ps+ PParen l p -> PParen (f l) p+ PRec l qn pfs -> PRec (f l) qn pfs+ PAsPat l n p -> PAsPat (f l) n p+ PWildCard l -> PWildCard (f l)+ PIrrPat l p -> PIrrPat (f l) p+ PatTypeSig l p t -> PatTypeSig (f l) p t+ PViewPat l e p -> PViewPat (f l) e p+ PRPat l rps -> PRPat (f l) rps+ PXTag l xn pxas mp ps -> PXTag (f l) xn pxas mp ps+ PXETag l xn pxas mp -> PXETag (f l) xn pxas mp+ PXPcdata l s -> PXPcdata (f l) s+ PXPatTag l p -> PXPatTag (f l) p+ PXRPats l rps -> PXRPats (f l) rps+ PSplice l sp -> PSplice (f l) sp+ PQuasiQuote l sn st -> PQuasiQuote (f l) sn st+ PBangPat l p -> PBangPat (f l) p++instance Annotated PXAttr where+ ann (PXAttr l _ _) = l+ amap f (PXAttr l xn p) = PXAttr (f l) xn p++instance Annotated RPatOp where+ ann (RPStar l) = l+ ann (RPStarG l) = l+ ann (RPPlus l) = l+ ann (RPPlusG l) = l+ ann (RPOpt l) = l+ ann (RPOptG l) = l+ amap = fmap++instance Annotated RPat where+ ann rp = case rp of+ RPOp l _ _ -> l+ RPEither l _ _ -> l+ RPSeq l _ -> l+ RPGuard l _ _ -> l+ RPCAs l _ _ -> l+ RPAs l _ _ -> l+ RPParen l _ -> l+ RPPat l _ -> l+ amap f rp1 = case rp1 of+ RPOp l rp rop -> RPOp (f l) rp rop+ RPEither l rp1' rp2 -> RPEither (f l) rp1' rp2+ RPSeq l rps -> RPSeq (f l) rps+ RPGuard l p ss -> RPGuard (f l) p ss+ RPCAs l n rp -> RPCAs (f l) n rp+ RPAs l n rp -> RPAs (f l) n rp+ RPParen l rp -> RPParen (f l) rp+ RPPat l p -> RPPat (f l) p++instance Annotated PatField where+ ann (PFieldPat l _ _) = l+ ann (PFieldPun l _) = l+ ann (PFieldWildcard l) = l+ amap f (PFieldPat l qn p) = PFieldPat (f l) qn p+ amap f (PFieldPun l n) = PFieldPun (f l) n+ amap f (PFieldWildcard l) = PFieldWildcard (f l)++instance Annotated Stmt where+ ann (Generator l _ _) = l+ ann (Qualifier l _) = l+ ann (LetStmt l _) = l+ ann (RecStmt l _) = l+ amap f (Generator l p e) = Generator (f l) p e+ amap f (Qualifier l e) = Qualifier (f l) e+ amap f (LetStmt l bs) = LetStmt (f l) bs+ amap f (RecStmt l ss) = RecStmt (f l) ss++instance Annotated QualStmt where+ ann (QualStmt l _) = l+ ann (ThenTrans l _) = l+ ann (ThenBy l _ _) = l+ ann (GroupBy l _) = l+ ann (GroupUsing l _) = l+ ann (GroupByUsing l _ _) = l+ amap f (QualStmt l s) = QualStmt (f l) s+ amap f (ThenTrans l e) = ThenTrans (f l) e+ amap f (ThenBy l e1 e2) = ThenBy (f l) e1 e2+ amap f (GroupBy l e) = GroupBy (f l) e+ amap f (GroupUsing l e) = GroupUsing (f l) e+ amap f (GroupByUsing l e1 e2) = GroupByUsing (f l) e1 e2++instance Annotated FieldUpdate where+ ann (FieldUpdate l _ _) = l+ ann (FieldPun l _) = l+ ann (FieldWildcard l) = l+ amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e+ amap f (FieldPun l n) = FieldPun (f l) n+ amap f (FieldWildcard l) = FieldWildcard (f l)++instance Annotated Alt where+ ann (Alt l _ _ _) = l+ amap f (Alt l p gs bs) = Alt (f l) p gs bs++instance Annotated Promoted where+ ann (PromotedInteger l _ _) = l+ ann (PromotedString l _ _) = l+ ann (PromotedCon l _ _) = l+ ann (PromotedList l _ _) = l+ ann (PromotedTuple l _) = l+ ann (PromotedUnit l) = l+ amap f (PromotedInteger l int raw) = PromotedInteger (f l) int raw+ amap f (PromotedString l str raw) = PromotedString (f l) str raw+ amap f (PromotedCon l b qn) = PromotedCon (f l) b qn+ amap f (PromotedList l b ps) = PromotedList (f l) b ps+ amap f (PromotedTuple l ps) = PromotedTuple (f l) ps+ amap f (PromotedUnit l) = PromotedUnit (f l)
+ src/Language/Preprocessor/Unlit.hs view
@@ -0,0 +1,72 @@+-- | Part of this code is from "Report on the Programming Language Haskell",+-- version 1.2, appendix C.+{-# OPTIONS_GHC -Wwarn #-}+module Language.Preprocessor.Unlit (unlit) where++import Data.Char+import Data.List (isPrefixOf)++data Classified = Program String | Blank | Comment+ | Include Int String | Pre String++classify :: [String] -> [Classified]+classify [] = []+classify (('\\':x):xs) | x == "begin{code}" = Blank : allProg xs+ where allProg [] = [] -- Should give an error message,+ -- but I have no good position information.+ allProg (('\\':y):ys) | "end{code}" `isPrefixOf` y = Blank : classify ys+ allProg (y:ys) = Program y : allProg ys+classify (('>':x):xs) = Program (' ' : x) : classify xs+classify (('#':x):xs) = (case words x of+ (line:rest) | all isDigit line+ -> Include (read line) (unwords rest)+ _ -> Pre x+ ) : classify xs+--classify (x:xs) | "{-# LINE" `isPrefixOf` x = Program x: classify xs+classify (x:xs) | all isSpace x = Blank : classify xs+classify (_:xs) = Comment : classify xs++unclassify :: Classified -> String+unclassify (Program s) = s+unclassify (Pre s) = '#':s+unclassify (Include i f) = '#':' ':show i ++ ' ':f+unclassify Blank = ""+unclassify Comment = ""++-- | 'unlit' takes a filename (for error reports), and transforms the+-- given string, to eliminate the literate comments from the program text.+unlit :: FilePath -> String -> String+unlit file lhs = (unlines+ . map unclassify+ . adjacent file (0::Int) Blank+ . classify) (inlines lhs)++adjacent :: FilePath -> Int -> Classified -> [Classified] -> [Classified]+adjacent file 0 _ (x :xs) = x : adjacent file 1 x xs -- force evaluation of line number+adjacent file n (Program _) (Comment :_ ) = error (message file n "program" "comment")+adjacent _ _ y@(Program _) (x@(Include i f):xs) = x: adjacent f i y xs+adjacent file n y@(Program _) (x@(Pre _) :xs) = x: adjacent file (n+1) y xs+adjacent file n Comment ( (Program _) :_ ) = error (message file n "comment" "program")+adjacent _ _ y@Comment (x@(Include i f):xs) = x: adjacent f i y xs+adjacent file n y@Comment (x@(Pre _) :xs) = x: adjacent file (n+1) y xs+adjacent _ _ y@Blank (x@(Include i f):xs) = x: adjacent f i y xs+adjacent file n y@Blank (x@(Pre _) :xs) = x: adjacent file (n+1) y xs+adjacent file n _ (x :xs) = x: adjacent file (n+1) x xs+adjacent _ _ _ [] = []++message :: String -> Int -> String -> String -> String+message "\"\"" n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"+message [] n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"+message file n p c = "In file " ++ file ++ " at line "++show n++": "++p++ " line before "++c++" line.\n"+++-- Re-implementation of 'lines', for better efficiency (but decreased laziness).+-- Also, importantly, accepts non-standard DOS and Mac line ending characters.+inlines :: String -> [String]+inlines = (`lines'` id)+ where+ lines' [] acc = [acc []]+ lines' ('\^M':'\n':s) acc = acc [] : lines' s id -- DOS+ lines' ('\^M':s) acc = acc [] : lines' s id -- MacOS+ lines' ('\n':s) acc = acc [] : lines' s id -- Unix+ lines' (c:s) acc = lines' s (acc . (c:))
+ tests/Extensions.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, StandaloneDeriving #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Extensions (extensionProperties) where++import Test.Tasty+import Test.Tasty.SmallCheck+import Test.SmallCheck.Series+import Language.Haskell.Exts+import Data.Function+import Data.List++instance Monad m => Serial m Language where+ series = generate (const knownLanguages)++instance Monad m => Serial m Extension where+ series = generate (const knownExtensions)++instance Monad m => Serial m KnownExtension where+ series = generate $ const [ e | EnableExtension e <- knownExtensions ]++infix 3 ~~+(~~) :: Monad m => [Extension] -> [Extension] -> Property m+xts1 ~~ xts2 = forAll $ \lang -> ((==) `on` sort . toExtensionList lang) xts1 xts2++-- arbitrary examples+e1 :: KnownExtension+e1 = OverlappingInstances++e2 :: KnownExtension+e2 = UndecidableInstances++extensionProperties :: TestTree+extensionProperties =+ localOption (SmallCheckDepth 2) $ testGroup "Properties of LANGUAGE extensions" $+ [ testProperty "identity" $ \x -> x ~~ x+ , testProperty "idempotence" $ \x -> x ++ x ~~ x+ -- Actually, let's not exhaustively check n^2 cases+ -- , testProperty "right bias" $ \x y -> x ++ y ++ x ~~ y ++ x+ , testProperty "right bias - override to disabled" $+ [EnableExtension e1, DisableExtension e1] ~~ [DisableExtension e1]+ , testProperty "right bias - override to enabled" $+ [DisableExtension e1, EnableExtension e1] ~~ [EnableExtension e1]+ , testProperty "right bias - interleaved override to disabled" $+ [EnableExtension e1, EnableExtension e2, DisableExtension e1]+ ~~ [EnableExtension e2, DisableExtension e1]+ , testProperty "right bias - interleaved override to enabled" $+ [DisableExtension e1, EnableExtension e2, EnableExtension e1]+ ~~ [EnableExtension e2, EnableExtension e1]+ , testProperty "closedness of implication" $ \x -> impliesExts (impliesExts x) == impliesExts x+ , testProperty "closedness of toExtensionList" $ \l x -> let es = toExtensionList l x in es == impliesExts es+ , testProperty "opposite extensions 1" $ \x -> [EnableExtension x, DisableExtension x] ~~ [DisableExtension x]+ , testProperty "opposite extensions 2" $ \x -> [DisableExtension x, EnableExtension x] ~~ [EnableExtension x]+ ]
+ tests/Runner.hs view
@@ -0,0 +1,189 @@+{-# LANGUAGE ViewPatterns #-}+-- | Use "runhaskell Setup.hs test" or "cabal test" to run these tests.+module Main where++import Language.Haskell.Exts++import Test.Tasty hiding (defaultMain)+import Test.Tasty.Golden+import Test.Tasty.Golden.Manage+import System.FilePath+import System.IO+import Control.Monad.Trans+import Control.Applicative+import Extensions+import Text.Show.Pretty+++main :: IO ()+main = do+ sources <- getTestFiles examplesDir+ defaultMain $ testGroup "Tests" $+ [ parserTests sources+ , exactPrinterTests sources+ , prettyPrinterTests sources+ , prettyParserTests sources+ , extensionProperties+ , commentsTests examplesDir+ ]++-- | Where all the tests are to be found+examplesDir :: FilePath+examplesDir = "tests/examples"++getTestFiles :: MonadIO m => FilePath -> m [FilePath]+getTestFiles dir = liftIO $ findByExtension [".hs", ".lhs"] dir++parserTests :: [FilePath] -> TestTree -- {{{+parserTests sources = testGroup "Parser tests" $ do+ -- list monad+ file <- sources+ let+ out = file <.> "parser" <.> "out"+ golden = file <.> "parser" <.> "golden"+ run = do+ ast <-+ parseUTF8FileWithComments+ (defaultParseMode { parseFilename = file })+ file+ writeBinaryFile out $ ppShow ast ++ "\n"+ return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++exactPrinterTests :: [FilePath] -> TestTree -- {{{+exactPrinterTests sources = testGroup "Exact printer tests" $ do+ -- list monad+ file <- sources+ let+ out = file <.> "exactprinter" <.> "out"+ golden = file <.> "exactprinter" <.> "golden"+ run = do+ contents <- readUTF8File file+ let+ -- parse+ mbAst =+ parseFileContentsWithComments+ (defaultParseMode { parseFilename = file })+ contents+ -- try to pretty-print; summarize the test result+ result =+ case mbAst of+ f@ParseFailed{} -> show f+ ParseOk ast ->+ let+ printed = uncurry exactPrint ast+ in+ if printed == contents+ then "Match"+ else printed+ writeBinaryFile out $ result ++ "\n"+ return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++prettyPrinterTests :: [FilePath] -> TestTree -- {{{+prettyPrinterTests sources = testGroup "Pretty printer tests" $ do+ -- list monad+ file <- sources+ let+ out = file <.> "prettyprinter" <.> "out"+ golden = file <.> "prettyprinter" <.> "golden"+ run = do+ contents <- readUTF8File file+ let+ -- parse+ mbAst =+ parseFileContentsWithMode+ (defaultParseMode { parseFilename = file })+ contents+ -- try to pretty-print; summarize the test result+ result =+ case mbAst of+ f@ParseFailed{} -> show f+ ParseOk ast -> prettyPrint ast+ writeBinaryFile out $ result ++ "\n"+ return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++prettyParserTests :: [FilePath] -> TestTree -- {{{+prettyParserTests sources = testGroup "Pretty-parser tests" $ do+ -- list monad+ file <- sources+ let+ out = file <.> "prettyparser" <.> "out"+ golden = file <.> "prettyparser" <.> "golden"+ run = do+ contents <- readUTF8File file+ let+ -- parse+ parse1Result :: ParseResult (Module SrcSpanInfo)+ parse1Result =+ parseFileContentsWithMode+ (defaultParseMode { parseFilename = file })+ contents++ prettyResult :: ParseResult String+ prettyResult = prettyPrint <$> parse1Result++ parse2Result :: ParseResult (ParseResult (Module SrcSpanInfo))+ parse2Result = parseFileContents <$> prettyResult++ -- Even the un-annotated AST contains certain locations.+ -- Obviously, they may differ, so we have to erase them.+ eraseLocs :: Module l -> Module ()+ eraseLocs = (() <$)++ summary =+ case liftA3 (,,) parse1Result prettyResult parse2Result of+ f@ParseFailed{} -> show f+ ParseOk (eraseLocs -> ast1, pretty, mbAst2) ->+ case mbAst2 of+ f@ParseFailed{} ->+ "Failed to parse output of pretty-printer:\n" +++ show f ++ "\n" +++ "The pretty-printer output follows.\n\n" +++ pretty+ ParseOk (eraseLocs -> ast2) ->+ if ast1 == ast2+ then "Match"+ else+ "Roundtrip test failed\n\n" +++ "AST 1:\n\n" +++ show ast1 ++ "\n\n" +++ "AST 2:\n\n" +++ show ast2 ++ "\n"++ writeBinaryFile out $ summary ++ "\n"+ return $ goldenVsFile (takeBaseName file) golden out run+-- }}}++commentsTests :: FilePath -> TestTree -- {{{+commentsTests dir = testGroup "Comments tests" $ do+ let file = dir ++ "/HaddockComments.hs"+ out = file <.> "comments" <.> "out"+ golden = file <.> "comments" <.> "golden"+ run = do+ contents <- readUTF8File file+ let+ -- parse+ parse1Result :: ParseResult (Module SrcSpanInfo,[Comment])+ parse1Result =+ parseFileContentsWithComments+ (defaultParseMode { parseFilename = file })+ contents+ withC = case parse1Result of+ ParseOk res -> ParseOk $ associateHaddock res+ ParseFailed sloc msg -> ParseFailed sloc msg+ writeBinaryFile out $ show withC ++ "\n"+ return $ goldenVsFile (takeBaseName file) golden out run++-- UTF8 utils {{{+readUTF8File :: FilePath -> IO String+readUTF8File fp = openFile fp ReadMode >>= \h -> do+ hSetEncoding h utf8+ c <- hGetContents h >>= \s -> length s `seq` return s+ hClose h+ return c++parseUTF8FileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))+parseUTF8FileWithComments p fp = readUTF8File fp >>= (return . parseFileContentsWithComments p)+-- }}}
+ tests/examples/AmbiguousFixities.hs view
@@ -0,0 +1,1 @@+f = (+ 1) . head &&& tail
+ tests/examples/AmbiguousFixities.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/AmbiguousFixities.hs.parser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/AmbiguousFixities.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/AmbiguousFixities.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/ArityMismatch.hs view
@@ -0,0 +1,7 @@+module ArityMismatch where++foo a b = 1+foo a = 2++bar = 1+baz = 2
+ tests/examples/ArityMismatch.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ArityMismatch.hs" 3 1) "arity mismatch for 'foo'"
+ tests/examples/ArityMismatch.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/ArityMismatch.hs" 3 1)+ "arity mismatch for 'foo'"
+ tests/examples/ArityMismatch.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ArityMismatch.hs" 3 1) "arity mismatch for 'foo'"
+ tests/examples/ArityMismatch.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ArityMismatch.hs" 3 1) "arity mismatch for 'foo'"
+ 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/ArrowLayout.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE Arrows #-}+module ArrowLayout where++exp = proc () -> do+ rec let e = 1 + i+ i <- integral -< e+ returnA -< e
+ tests/examples/ArrowLayout.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowLayout.hs.parser.golden view
@@ -0,0 +1,338 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 1 1 1 1+ , SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 1+ , SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 1+ , SrcSpan "tests/examples/ArrowLayout.hs" 4 1 4 1+ , SrcSpan "tests/examples/ArrowLayout.hs" 8 1 8 1+ , SrcSpan "tests/examples/ArrowLayout.hs" 8 1 8 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 2 1 2 7+ , SrcSpan "tests/examples/ArrowLayout.hs" 2 20 2 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 2 8 2 19+ , srcInfoPoints = []+ }+ "ArrowLayout")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 1 1 1 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 1 1 1 13+ , SrcSpan "tests/examples/ArrowLayout.hs" 1 21 1 24+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 1 14 1 20+ , srcInfoPoints = []+ }+ "Arrows"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 1 7 15+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "exp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 5 7 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 4 5 4 6 ]+ }+ (Proc+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 7 7 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 4 7 4 11+ , SrcSpan "tests/examples/ArrowLayout.hs" 4 15 4 17+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 13+ , SrcSpan "tests/examples/ArrowLayout.hs" 4 13 4 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 13+ , SrcSpan "tests/examples/ArrowLayout.hs" 4 13 4 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 4 12 4 13+ , SrcSpan "tests/examples/ArrowLayout.hs" 4 13 4 14+ ]+ }))+ [])+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 4 18 7 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 4 18 4 20+ , SrcSpan "tests/examples/ArrowLayout.hs" 5 3 5 3+ , SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 3+ , SrcSpan "tests/examples/ArrowLayout.hs" 8 1 8 0+ ]+ }+ [ RecStmt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 5 3 6 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 5 3 5 6+ , SrcSpan "tests/examples/ArrowLayout.hs" 5 7 5 7+ , SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 7+ , SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 0+ ]+ }+ [ LetStmt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 5 7 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 5 7 5 10 ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 11+ , SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "e"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 13 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 5 13 5 14 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 15 5 20+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowLayout.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ 1+ "1"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 17 5 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowLayout.hs" 5 17 5 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowLayout.hs" 5 17 5 18+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowLayout.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowLayout.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ ])+ , Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 6 9 6 11 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ "i"))+ (LeftArrApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 6 21 6 23 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 6 12 6 20+ , srcInfoPoints = []+ }+ "integral")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 6 24 6 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 6 24 6 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 6 24 6 25+ , srcInfoPoints = []+ }+ "e"))))+ ]+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 7 11 7 13 ]+ }+ (LeftArrApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowLayout.hs" 7 11 7 13 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 7 3 7 10+ , srcInfoPoints = []+ }+ "returnA")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowLayout.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowLayout.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ "e"))))+ ])))+ Nothing+ ]+ , []+ )
+ tests/examples/ArrowLayout.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowLayout.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE Arrows #-}+module ArrowLayout where+exp+ = proc () ->+ do rec let e = 1 + i+ i <- integral -< e+ returnA -< e
+ tests/examples/AtOperator.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeOperators #-}++data a :+: b = Proxy++foo = id @(Int :+: Int)++_ @> m = m
+ tests/examples/AtOperator.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtOperator.hs.parser.golden view
@@ -0,0 +1,291 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 1 1 1 1+ , SrcSpan "tests/examples/AtOperator.hs" 2 1 2 1+ , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+ , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+ , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+ , SrcSpan "tests/examples/AtOperator.hs" 6 1 6 1+ , SrcSpan "tests/examples/AtOperator.hs" 8 1 8 1+ , SrcSpan "tests/examples/AtOperator.hs" 9 1 9 1+ , SrcSpan "tests/examples/AtOperator.hs" 9 1 9 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 1 1 1 13+ , SrcSpan "tests/examples/AtOperator.hs" 1 31 1 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "TypeApplications"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 2 1 2 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 2 1 2 13+ , SrcSpan "tests/examples/AtOperator.hs" 2 28 2 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 2 14 2 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 4 14 4 15 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 1 4 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 13+ , srcInfoPoints = []+ }+ (DHInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 13+ , srcInfoPoints = []+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "a"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 8 4 11+ , srcInfoPoints = []+ }+ ":+:"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+ , srcInfoPoints = []+ }+ "Proxy")+ [])+ ]+ []+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 24+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 5 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 6 5 6 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+ , srcInfoPoints = []+ }+ "id")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 10 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 6 10 6 11 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 11 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 6 11 6 12+ , SrcSpan "tests/examples/AtOperator.hs" 6 23 6 24+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+ , srcInfoPoints = []+ }+ "Int")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ ":+:")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+ , srcInfoPoints = []+ }+ "Int"))))))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 11+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 11+ , srcInfoPoints = []+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 2+ , srcInfoPoints = []+ })+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 3 8 5+ , srcInfoPoints = []+ }+ "@>")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ "m")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 8 8 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtOperator.hs" 8 8 8 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+ , srcInfoPoints = []+ }+ "m"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/AtOperator.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtOperator.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeOperators #-}++data a :+: b = Proxy+foo = id @(Int :+: Int)+_ @> m = m
+ tests/examples/AtSign.hs view
@@ -0,0 +1,17 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeApplications #-}+{- |+Accelerate interface to the native CUDA implementation+of the Fourier Transform provided by the CUFFT library.+-}+module Data.Array.Accelerate.CUFFT.Private where+++transform hndl@(Handle fallback mode width _) =+ wrap mode (A.constant width) $+ A.foreignAcc+ (AF.CUDAForeignAcc "transformForeign" $ transformForeign hndl)+ (unwrap mode (A.constant width) fallback)++
+ tests/examples/AtSign.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtSign.hs.parser.golden view
@@ -0,0 +1,591 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 1 1 18 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 1 1 1 1+ , SrcSpan "tests/examples/AtSign.hs" 2 1 2 1+ , SrcSpan "tests/examples/AtSign.hs" 3 1 3 1+ , SrcSpan "tests/examples/AtSign.hs" 8 1 8 1+ , SrcSpan "tests/examples/AtSign.hs" 8 1 8 1+ , SrcSpan "tests/examples/AtSign.hs" 11 1 11 1+ , SrcSpan "tests/examples/AtSign.hs" 18 1 18 1+ , SrcSpan "tests/examples/AtSign.hs" 18 1 18 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 8 1 8 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 8 1 8 7+ , SrcSpan "tests/examples/AtSign.hs" 8 44 8 49+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 8 8 8 43+ , srcInfoPoints = []+ }+ "Data.Array.Accelerate.CUFFT.Private")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 1 1 1 13+ , SrcSpan "tests/examples/AtSign.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 2 1 2 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 2 1 2 13+ , SrcSpan "tests/examples/AtSign.hs" 2 28 2 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 2 14 2 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 3 1 3 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 3 1 3 13+ , SrcSpan "tests/examples/AtSign.hs" 3 31 3 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 3 14 3 30+ , srcInfoPoints = []+ }+ "TypeApplications"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 1 15 48+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 1 15 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 1 11 10+ , srcInfoPoints = []+ }+ "transform")+ [ PAsPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 11 11 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 11 15 11 16 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 11 11 15+ , srcInfoPoints = []+ }+ "hndl")+ (PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 16 11 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 11 16 11 17+ , SrcSpan "tests/examples/AtSign.hs" 11 45 11 46+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 17 11 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 17 11 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 17 11 23+ , srcInfoPoints = []+ }+ "Handle"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 24 11 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 24 11 32+ , srcInfoPoints = []+ }+ "fallback")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 33 11 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 33 11 37+ , srcInfoPoints = []+ }+ "mode")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 38 11 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 38 11 43+ , srcInfoPoints = []+ }+ "width")+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 44 11 45+ , srcInfoPoints = []+ }+ ]))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 11 47 15 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 11 47 11 48 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 15 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 4 12 8+ , srcInfoPoints = []+ }+ "wrap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 9 12 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 9 12 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 9 12 13+ , srcInfoPoints = []+ }+ "mode"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 14 12 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 12 14 12 15+ , SrcSpan "tests/examples/AtSign.hs" 12 31 12 32+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 15 12 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+ , srcInfoPoints = []+ }+ "A")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 12 15 12 25+ , srcInfoPoints = []+ }+ "constant")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 26 12 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 26 12 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 12 26 12 31+ , srcInfoPoints = []+ }+ "width"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 33 12 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 33 12 34+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 12 33 12 34+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 15 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 14 69+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+ , srcInfoPoints = []+ }+ "A")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 13 4 13 16+ , srcInfoPoints = []+ }+ "foreignAcc")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 7 14 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 14 7 14 8+ , SrcSpan "tests/examples/AtSign.hs" 14 68 14 69+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 8 14 68+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 8 14 44+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+ , srcInfoPoints = []+ }+ "AF")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 8 14 25+ , srcInfoPoints = []+ }+ "CUDAForeignAcc")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 26 14 44+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 26 14 44+ , srcInfoPoints = []+ }+ "transformForeign"+ "transformForeign")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 45 14 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 45 14 46+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 45 14 46+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 14 47 14 68+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 47 14 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 47 14 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 47 14 63+ , srcInfoPoints = []+ }+ "transformForeign")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 64 14 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 64 14 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 14 64 14 68+ , srcInfoPoints = []+ }+ "hndl")))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 7 15 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 15 7 15 8+ , SrcSpan "tests/examples/AtSign.hs" 15 47 15 48+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 8 15 47+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 8 15 38+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 8 15 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 8 15 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 8 15 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 8 15 14+ , srcInfoPoints = []+ }+ "unwrap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 15 15 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 15 15 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 15 15 19+ , srcInfoPoints = []+ }+ "mode"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 20 15 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/AtSign.hs" 15 20 15 21+ , SrcSpan "tests/examples/AtSign.hs" 15 37 15 38+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 21 15 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+ , srcInfoPoints = []+ }+ "A")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 21 15 31+ , srcInfoPoints = []+ }+ "constant")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 32 15 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 32 15 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 32 15 37+ , srcInfoPoints = []+ }+ "width"))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 39 15 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/AtSign.hs" 15 39 15 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/AtSign.hs" 15 39 15 47+ , srcInfoPoints = []+ }+ "fallback"))))))))+ Nothing+ ]+ ]+ , [ Comment+ True+ (SrcSpan "tests/examples/AtSign.hs" 4 1 7 3)+ " |\nAccelerate interface to the native CUDA implementation\nof the Fourier Transform provided by the CUFFT library.\n"+ ]+ )
+ tests/examples/AtSign.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtSign.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeApplications #-}+module Data.Array.Accelerate.CUFFT.Private where+transform hndl@(Handle fallback mode width _)+ = wrap mode (A.constant width) $+ A.foreignAcc+ (AF.CUDAForeignAcc "transformForeign" $ transformForeign hndl)+ (unwrap mode (A.constant width) fallback)
+ tests/examples/Attributes.hs view
@@ -0,0 +1,2181 @@+{- |+ Module : Data.GraphViz.Attributes+ Description : Definition of the Graphviz attributes.+ Copyright : (c) Matthew Sackman, Ivan Lazar Miljenovic+ License : 3-Clause BSD-style+ Maintainer : Ivan.Miljenovic@gmail.com++ This module defines the various attributes that different parts of+ a Graphviz graph can have. These attributes are based on the+ documentation found at:+ <http://graphviz.org/doc/info/attrs.html>++ For more information on usage, etc. please see that document.++ A summary of known current constraints\/limitations\/differences:++ * There might still be a few cases where quotes are still not+ escaped/parsed correctly; if you find such a situation, please+ let me know; however, you should be able to use 'String' values+ directly without having to worry about when quotes are required+ or extra escaping of quote characters as 'PrintDot' and+ 'ParseDot' instances for 'String' should take care of that+ for you.++ * Note that for an edge, in /Dot/ parlance if the edge goes from+ /A/ to /B/, then /A/ is the tail node and /B/ is the head node+ (since /A/ is at the tail end of the arrow).++ * ColorList and PointfList are defined as actual lists (but+ 'LayerList' is not). Note that for the Color 'Attribute' for+ node values, only a single Color is valid; edges are allowed+ multiple colors with one spline/arrow per color in the list (but+ you must have at least one 'Color' in the list). This might be+ changed in future.++ * Style is implemented as a list of 'StyleItem' values; note that+ empty lists are not allowed.++ * A lot of values have a possible value of @none@. These now+ have custom constructors. In fact, most constructors have been+ expanded upon to give an idea of what they represent rather than+ using generic terms.++ * @PointF@ and 'Point' have been combined, and feature support for pure+ 'Int'-based co-ordinates as well as 'Double' ones (i.e. no floating+ point-only points for Point). The optional '!' and third value+ for Point are not available.++ * 'Rect' uses two 'Point' values to denote the lower-left and+ top-right corners.++ * The two 'LabelLoc' attributes have been combined.++ * The defined 'LayerSep' is not used to parse 'LayerRange' or+ 'LayerList'; the default (@[' ', ':', '\t']@) is instead used.++ * @SplineType@ has been replaced with @['Spline']@.++ * Only polygon-based 'Shape's are available.++ * 'PortPos' only has the 'CompassPoint' option, not+ @PortName[:CompassPoint]@ (since record shapes aren't allowed,+ and parsing HTML-like labels could be problematic).++ * Not every 'Attribute' is fully documented/described. However,+ all those which have specific allowed values should be covered.++ * Deprecated 'Overlap' algorithms are not defined.++ * The global @Orientation@ attribute is not defined, as it is+ difficult to distinguish from the node-based 'Orientation'+ 'Attribute'; also, its behaviour is duplicated by 'Rotate'.++ -}+module Data.GraphViz.Attributes+ ( -- * The actual /Dot/ attributes.+ Attribute(..)+ , Attributes+ -- ** Validity functions on @Attribute@ values.+ , usedByGraphs+ , usedBySubGraphs+ , usedByClusters+ , usedByNodes+ , usedByEdges+ -- * Value types for @Attribute@s.+ , EscString+ , URL(..)+ , ArrowType(..)+ , AspectType(..)+ , Rect(..)+ , ClusterMode(..)+ , DirType(..)+ , DEConstraints(..)+ , DPoint(..)+ , ModeType(..)+ , Model(..)+ , Label(..)+ , Point(..)+ , Overlap(..)+ , LayerRange(..)+ , LayerID(..)+ , LayerList(..)+ , OutputMode(..)+ , Pack(..)+ , PackMode(..)+ , Pos(..)+ , EdgeType(..)+ , PageDir(..)+ , Spline(..)+ , QuadType(..)+ , Root(..)+ , RankType(..)+ , RankDir(..)+ , Shape(..)+ , SmoothType(..)+ , StartType(..)+ , STStyle(..)+ , StyleItem(..)+ , StyleName(..)+ , PortPos(..)+ , CompassPoint(..)+ , ViewPort(..)+ , FocusType(..)+ , VerticalPlacement(..)+ , ScaleType(..)+ , Justification(..)+ , Ratios(..)+ , module Data.GraphViz.Attributes.Colors+ -- * Types representing the Dot grammar for @ArrowType@.+ , ArrowShape(..)+ , ArrowModifier(..)+ , ArrowFill(..)+ , ArrowSide(..)+ -- ** Default @ArrowType@ aliases.+ -- *** The 9 primitive @ArrowShape@s.+ , box+ , crow+ , diamond+ , dotArrow+ , inv+ , noArrow+ , normal+ , tee+ , vee+ -- *** 5 derived Arrows.+ , oDot+ , invDot+ , invODot+ , oBox+ , oDiamond+ -- *** 5 supported cases for backwards compatibility+ , eDiamond+ , openArr+ , halfOpen+ , emptyArr+ , invEmpty+ -- ** @ArrowModifier@ instances+ , noMods+ , openMod+ -- * Other exported functions\/values+ , defLayerSep+ , notLayerSep+ ) where++import Data.GraphViz.Attributes.Colors+import Data.GraphViz.Util+import Data.GraphViz.Parsing+import Data.GraphViz.Printing++import Data.Char(toLower)+import Data.Maybe(isJust)+import Control.Arrow(first)+import Control.Monad(liftM, liftM2)++-- -----------------------------------------------------------------------------++{- |++ These attributes have been implemented in a /permissive/ manner:+ that is, rather than split them up based on which type of value+ they are allowed, they have all been included in the one data type,+ with functions to determine if they are indeed valid for what+ they're being applied to.++ To interpret the /Valid for/ listings:++ [@G@] Valid for Graphs.++ [@C@] Valid for Clusters.++ [@S@] Valid for Sub-Graphs (and also Clusters).++ [@N@] Valid for Nodes.++ [@E@] Valid for Edges.++ The /Default/ listings are those that the various Graphviz commands+ use if that 'Attribute' isn't specified (in cases where this is+ /none/, this is equivalent to a 'Nothing' value; that is, no value+ is used). The /Parsing Default/ listings represent what value is+ used (i.e. corresponds to 'True') when the 'Attribute' name is+ listed on its own in /Dot/ source code.+-}+data Attribute+ = Damping Double -- ^ /Valid for/: G; /Default/: @0.99@; /Minimum/: @0.0@; /Notes/: neato only+ | K Double -- ^ /Valid for/: GC; /Default/: @0.3@; /Minimum/: @0@; /Notes/: sfdp, fdp only+ | URL URL -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, postscript, map only+ | ArrowHead ArrowType -- ^ /Valid for/: E; /Default/: @'normal'@+ | ArrowSize Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@+ | ArrowTail ArrowType -- ^ /Valid for/: E; /Default/: @'normal'@+ | Aspect AspectType -- ^ /Valid for/: G; /Notes/: dot only+ | Bb Rect -- ^ /Valid for/: G; /Notes/: write only+ | BgColor Color -- ^ /Valid for/: GC; /Default/: X11Color 'Transparent'+ | Center Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'+ | Charset String -- ^ /Valid for/: G; /Default/: @\"UTF-8\"@+ | ClusterRank ClusterMode -- ^ /Valid for/: G; /Default/: @'Local'@; /Notes/: dot only+ | ColorScheme ColorScheme -- ^ /Valid for/: ENCG; /Default/: @'X11'@+ | Color [Color] -- ^ /Valid for/: ENC; /Default/: @X11Color 'Black'@+ | Comment String -- ^ /Valid for/: ENG; /Default/: @\"\"@+ | Compound Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only+ | Concentrate Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'+ | Constraint Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'; /Notes/: dot only+ | Decorate Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'+ | DefaultDist Double -- ^ /Valid for/: G; /Default/: @1+(avg. len)*sqrt(|V|)@; /Minimum/: @epsilon@; /Notes/: neato only+ | Dimen Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only+ | Dim Int -- ^ /Valid for/: G; /Default/: @2@; /Minimum/: @2@; /Notes/: sfdp, fdp, neato only+ | Dir DirType -- ^ /Valid for/: E; /Default/: @'Forward'@ (directed), @'NoDir'@ (undirected)+ | DirEdgeConstraints DEConstraints -- ^ /Valid for/: G; /Default/: @'NoConstraints'@; /Parsing Default/: 'EdgeConstraints'; /Notes/: neato only+ | Distortion Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@+ | DPI Double -- ^ /Valid for/: G; /Default/: @96.0@, @0.0@; /Notes/: svg, bitmap output only; \"resolution\" is a synonym+ | EdgeURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+ | EdgeTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+ | EdgeTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+ | Epsilon Double -- ^ /Valid for/: G; /Default/: @.0001 * # nodes@ (@mode == 'KK'@), @.0001@ (@mode == 'Major'@); /Notes/: neato only+ | ESep DPoint -- ^ /Valid for/: G; /Default/: @+3@; /Notes/: not dot+ | FillColor Color -- ^ /Valid for/: NC; /Default/: @X11Color 'LightGray'@ (nodes), @X11Color 'Black'@ (clusters)+ | FixedSize Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'+ | FontColor Color -- ^ /Valid for/: ENGC; /Default/: @X11Color 'Black'@+ | FontName String -- ^ /Valid for/: ENGC; /Default/: @\"Times-Roman\"@+ | FontNames String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only+ | FontPath String -- ^ /Valid for/: G; /Default/: system-dependent+ | FontSize Double -- ^ /Valid for/: ENGC; /Default/: @14.0@; /Minimum/: @1.0@+ | Group String -- ^ /Valid for/: N; /Default/: @\"\"@; /Notes/: dot only+ | HeadURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+ | HeadClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'+ | HeadLabel Label -- ^ /Valid for/: E; /Default/: @\"\"@+ | HeadPort PortPos -- ^ /Valid for/: E; /Default/: @'PP' 'CenterPoint'@+ | HeadTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+ | HeadTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+ | Height Double -- ^ /Valid for/: N; /Default/: @0.5@; /Minimum/: @0.02@+ | ID Label -- ^ /Valid for/: GNE; /Default/: @\"\"@; /Notes/: svg, postscript, map only+ | Image String -- ^ /Valid for/: N; /Default/: @\"\"@+ | ImageScale ScaleType -- ^ /Valid for/: N; /Default/: @'NoScale'@; /Parsing Default/: 'UniformScale'+ | LabelURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+ | LabelAngle Double -- ^ /Valid for/: E; /Default/: @-25.0@; /Minimum/: @-180.0@+ | LabelDistance Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0.0@+ | LabelFloat Bool -- ^ /Valid for/: E; /Default/: @'False'@; /Parsing Default/: 'True'+ | LabelFontColor Color -- ^ /Valid for/: E; /Default/: @X11Color 'Black'@+ | LabelFontName String -- ^ /Valid for/: E; /Default/: @\"Times-Roman\"@+ | LabelFontSize Double -- ^ /Valid for/: E; /Default/: @14.0@; /Minimum/: @1.0@+ | LabelJust Justification -- ^ /Valid for/: GC; /Default/: @'JCenter'@+ | LabelLoc VerticalPlacement -- ^ /Valid for/: GCN; /Default/: @'VTop'@ (clusters), @'VBottom'@ (root graphs), @'VCenter'@ (nodes)+ | LabelTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+ | LabelTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+ | Label Label -- ^ /Valid for/: ENGC; /Default/: @'StrLabel' \"\N\"@ (nodes), @'StrLabel' \"\"@ (otherwise)+ | Landscape Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'+ | LayerSep String -- ^ /Valid for/: G; /Default/: @\" :\t\"@+ | Layers LayerList -- ^ /Valid for/: G; /Default/: @\"\"@+ | Layer LayerRange -- ^ /Valid for/: EN; /Default/: @\"\"@+ | Layout String -- ^ /Valid for/: G; /Default/: @\"\"@+ | Len Double -- ^ /Valid for/: E; /Default/: @1.0@ (neato), @0.3@ (fdp); /Notes/: fdp, neato only+ | LevelsGap Double -- ^ /Valid for/: G; /Default/: @0.0@; /Notes/: neato only+ | Levels Int -- ^ /Valid for/: G; /Default/: @MAXINT@; /Minimum/: @0@; /Notes/: sfdp only+ | LHead String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+ | LPos Point -- ^ /Valid for/: EGC; /Notes/: write only+ | LTail String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+ | Margin DPoint -- ^ /Valid for/: NG; /Default/: device-dependent+ | MaxIter Int -- ^ /Valid for/: G; /Default/: @100 * # nodes@ (@mode == 'KK'@), @200@ (@mode == 'Major'@), @600@ (fdp); /Notes/: fdp, neato only+ | MCLimit Double -- ^ /Valid for/: G; /Default/: @1.0@; /Notes/: dot only+ | MinDist Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: circo only+ | MinLen Int -- ^ /Valid for/: E; /Default/: @1@; /Minimum/: @0@; /Notes/: dot only+ | Model Model -- ^ /Valid for/: G; /Default/: @'ShortPath'@; /Notes/: neato only+ | Mode ModeType -- ^ /Valid for/: G; /Default/: @'Major'@; /Notes/: neato only+ | Mosek Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: neato only; requires the Mosek software+ | NodeSep Double -- ^ /Valid for/: G; /Default/: @0.25@; /Minimum/: @0.02@; /Notes/: dot only+ | NoJustify Bool -- ^ /Valid for/: GCNE; /Default/: @'False'@; /Parsing Default/: 'True'+ | Normalize Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: not dot+ | Nslimit1 Double -- ^ /Valid for/: G; /Notes/: dot only+ | Nslimit Double -- ^ /Valid for/: G; /Notes/: dot only+ | Ordering String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: dot only+ | Orientation Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @360.0@+ | OutputOrder OutputMode -- ^ /Valid for/: G; /Default/: @'BreadthFirst'@+ | OverlapScaling Double -- ^ /Valid for/: G; /Default/: @-4@; /Minimum/: @-1.0e10@; /Notes/: prism only+ | Overlap Overlap -- ^ /Valid for/: G; /Default/: @'KeepOverlaps'@; /Parsing Default/: 'KeepOverlaps'; /Notes/: not dot+ | PackMode PackMode -- ^ /Valid for/: G; /Default/: @'PackNode'@; /Notes/: not dot+ | Pack Pack -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'DoPack'; /Notes/: not dot+ | Pad DPoint -- ^ /Valid for/: G; /Default/: @'DVal' 0.0555@ (4 points)+ | PageDir PageDir -- ^ /Valid for/: G; /Default/: @'BL'@+ | Page Point -- ^ /Valid for/: G+ | PenColor Color -- ^ /Valid for/: C; /Default/: @X11Color 'Black'@+ | PenWidth Double -- ^ /Valid for/: CNE; /Default/: @1.0@; /Minimum/: @0.0@+ | Peripheries Int -- ^ /Valid for/: NC; /Default/: shape default (nodes), @1@ (clusters); /Minimum/: 0+ | Pin Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: fdp, neato only+ | Pos Pos -- ^ /Valid for/: EN+ | QuadTree QuadType -- ^ /Valid for/: G; /Default/: @'NormalQT'@; /Parsing Default/: 'NormalQT'; /Notes/: sfdp only+ | Quantum Double -- ^ /Valid for/: G; /Default/: @0.0@; /Minimum/: @0.0@+ | RankDir RankDir -- ^ /Valid for/: G; /Default/: @'TB'@; /Notes/: dot only+ | RankSep Double -- ^ /Valid for/: G; /Default/: @0.5@ (dot), @1.0@ (twopi); /Minimum/: 0.02; /Notes/: twopi, dot only+ | Rank RankType -- ^ /Valid for/: S; /Notes/: dot only+ | Ratio Ratios -- ^ /Valid for/: G+ | Rects Rect -- ^ /Valid for/: N; /Notes/: write only+ | Regular Bool -- ^ /Valid for/: N; /Default/: @'False'@; /Parsing Default/: 'True'+ | ReMinCross Bool -- ^ /Valid for/: G; /Default/: @'False'@; /Parsing Default/: 'True'; /Notes/: dot only+ | RepulsiveForce Double -- ^ /Valid for/: G; /Default/: @1.0@; /Minimum/: @0.0@; /Notes/: sfdp only+ | Root Root -- ^ /Valid for/: GN; /Default/: @'NodeName' \"\"@ (graphs), @'NotCentral'@ (nodes); /Parsing Default/: 'IsCentral'; /Notes/: circo, twopi only+ | Rotate Int -- ^ /Valid for/: G; /Default/: @0@+ | SameHead String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+ | SameTail String -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: dot only+ | SamplePoints Int -- ^ /Valid for/: N; /Default/: @8@ (output), @20@ (overlap and image maps)+ | SearchSize Int -- ^ /Valid for/: G; /Default/: @30@; /Notes/: dot only+ | Sep DPoint -- ^ /Valid for/: G; /Default/: @+4@; /Notes/: not dot+ | ShapeFile String -- ^ /Valid for/: N; /Default/: @\"\"@+ | Shape Shape -- ^ /Valid for/: N; /Default/: @'Ellipse'@+ | ShowBoxes Int -- ^ /Valid for/: ENG; /Default/: @0@; /Minimum/: @0@; /Notes/: dot only+ | Sides Int -- ^ /Valid for/: N; /Default/: @4@; /Minimum/: @0@+ | Size Point -- ^ /Valid for/: G+ | Skew Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-100.0@+ | Smoothing SmoothType -- ^ /Valid for/: G; /Default/: @'NoSmooth'@; /Notes/: sfdp only+ | SortV Int -- ^ /Valid for/: GCN; /Default/: @0@; /Minimum/: @0@+ | Splines EdgeType -- ^ /Valid for/: G; /Parsing Default/: 'SplineEdges'+ | Start StartType -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: fdp, neato only+ | StyleSheet String -- ^ /Valid for/: G; /Default/: @\"\"@; /Notes/: svg only+ | Style [StyleItem] -- ^ /Valid for/: ENC+ | TailURL URL -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, map only+ | TailClip Bool -- ^ /Valid for/: E; /Default/: @'True'@; /Parsing Default/: 'True'+ | TailLabel Label -- ^ /Valid for/: E; /Default/: @\"\"@+ | TailPort PortPos -- ^ /Valid for/: E; /Default/: center+ | TailTarget EscString -- ^ /Valid for/: E; /Default/: none; /Notes/: svg, map only+ | TailTooltip EscString -- ^ /Valid for/: E; /Default/: @\"\"@; /Notes/: svg, cmap only+ | Target EscString -- ^ /Valid for/: ENGC; /Default/: none; /Notes/: svg, map only+ | Tooltip EscString -- ^ /Valid for/: NEC; /Default/: @\"\"@; /Notes/: svg, cmap only+ | TrueColor Bool -- ^ /Valid for/: G; /Parsing Default/: 'True'; /Notes/: bitmap output only+ | Vertices [Point] -- ^ /Valid for/: N; /Notes/: write only+ | ViewPort ViewPort -- ^ /Valid for/: G; /Default/: none+ | VoroMargin Double -- ^ /Valid for/: G; /Default/: @0.05@; /Minimum/: @0.0@; /Notes/: not dot+ | Weight Double -- ^ /Valid for/: E; /Default/: @1.0@; /Minimum/: @0@ (dot), @1@ (neato,fdp,sfdp)+ | Width Double -- ^ /Valid for/: N; /Default/: @0.75@; /Minimum/: @0.01@+ | Z Double -- ^ /Valid for/: N; /Default/: @0.0@; /Minimum/: @-MAXFLOAT@, @-1000@+ deriving (Eq, Ord, Show, Read)++type Attributes = [Attribute]++instance PrintDot Attribute where+ unqtDot (Damping v) = printField "Damping" v+ unqtDot (K v) = printField "K" v+ unqtDot (URL v) = printField "URL" v+ unqtDot (ArrowHead v) = printField "arrowhead" v+ unqtDot (ArrowSize v) = printField "arrowsize" v+ unqtDot (ArrowTail v) = printField "arrowtail" v+ unqtDot (Aspect v) = printField "aspect" v+ unqtDot (Bb v) = printField "bb" v+ unqtDot (BgColor v) = printField "bgcolor" v+ unqtDot (Center v) = printField "center" v+ unqtDot (Charset v) = printField "charset" v+ unqtDot (ClusterRank v) = printField "clusterrank" v+ unqtDot (ColorScheme v) = printField "colorscheme" v+ unqtDot (Color v) = printField "color" v+ unqtDot (Comment v) = printField "comment" v+ unqtDot (Compound v) = printField "compound" v+ unqtDot (Concentrate v) = printField "concentrate" v+ unqtDot (Constraint v) = printField "constraint" v+ unqtDot (Decorate v) = printField "decorate" v+ unqtDot (DefaultDist v) = printField "defaultdist" v+ unqtDot (Dimen v) = printField "dimen" v+ unqtDot (Dim v) = printField "dim" v+ unqtDot (Dir v) = printField "dir" v+ unqtDot (DirEdgeConstraints v) = printField "diredgeconstraints" v+ unqtDot (Distortion v) = printField "distortion" v+ unqtDot (DPI v) = printField "dpi" v+ unqtDot (EdgeURL v) = printField "edgeURL" v+ unqtDot (EdgeTarget v) = printField "edgetarget" v+ unqtDot (EdgeTooltip v) = printField "edgetooltip" v+ unqtDot (Epsilon v) = printField "epsilon" v+ unqtDot (ESep v) = printField "esep" v+ unqtDot (FillColor v) = printField "fillcolor" v+ unqtDot (FixedSize v) = printField "fixedsize" v+ unqtDot (FontColor v) = printField "fontcolor" v+ unqtDot (FontName v) = printField "fontname" v+ unqtDot (FontNames v) = printField "fontnames" v+ unqtDot (FontPath v) = printField "fontpath" v+ unqtDot (FontSize v) = printField "fontsize" v+ unqtDot (Group v) = printField "group" v+ unqtDot (HeadURL v) = printField "headURL" v+ unqtDot (HeadClip v) = printField "headclip" v+ unqtDot (HeadLabel v) = printField "headlabel" v+ unqtDot (HeadPort v) = printField "headport" v+ unqtDot (HeadTarget v) = printField "headtarget" v+ unqtDot (HeadTooltip v) = printField "headtooltip" v+ unqtDot (Height v) = printField "height" v+ unqtDot (ID v) = printField "id" v+ unqtDot (Image v) = printField "image" v+ unqtDot (ImageScale v) = printField "imagescale" v+ unqtDot (LabelURL v) = printField "labelURL" v+ unqtDot (LabelAngle v) = printField "labelangle" v+ unqtDot (LabelDistance v) = printField "labeldistance" v+ unqtDot (LabelFloat v) = printField "labelfloat" v+ unqtDot (LabelFontColor v) = printField "labelfontcolor" v+ unqtDot (LabelFontName v) = printField "labelfontname" v+ unqtDot (LabelFontSize v) = printField "labelfontsize" v+ unqtDot (LabelJust v) = printField "labeljust" v+ unqtDot (LabelLoc v) = printField "labelloc" v+ unqtDot (LabelTarget v) = printField "labeltarget" v+ unqtDot (LabelTooltip v) = printField "labeltooltip" v+ unqtDot (Label v) = printField "label" v+ unqtDot (Landscape v) = printField "landscape" v+ unqtDot (LayerSep v) = printField "layersep" v+ unqtDot (Layers v) = printField "layers" v+ unqtDot (Layer v) = printField "layer" v+ unqtDot (Layout v) = printField "layout" v+ unqtDot (Len v) = printField "len" v+ unqtDot (LevelsGap v) = printField "levelsgap" v+ unqtDot (Levels v) = printField "levels" v+ unqtDot (LHead v) = printField "lhead" v+ unqtDot (LPos v) = printField "lp" v+ unqtDot (LTail v) = printField "ltail" v+ unqtDot (Margin v) = printField "margin" v+ unqtDot (MaxIter v) = printField "maxiter" v+ unqtDot (MCLimit v) = printField "mclimit" v+ unqtDot (MinDist v) = printField "mindist" v+ unqtDot (MinLen v) = printField "minlen" v+ unqtDot (Model v) = printField "model" v+ unqtDot (Mode v) = printField "mode" v+ unqtDot (Mosek v) = printField "mosek" v+ unqtDot (NodeSep v) = printField "nodesep" v+ unqtDot (NoJustify v) = printField "nojustify" v+ unqtDot (Normalize v) = printField "normalize" v+ unqtDot (Nslimit1 v) = printField "nslimit1" v+ unqtDot (Nslimit v) = printField "nslimit" v+ unqtDot (Ordering v) = printField "ordering" v+ unqtDot (Orientation v) = printField "orientation" v+ unqtDot (OutputOrder v) = printField "outputorder" v+ unqtDot (OverlapScaling v) = printField "overlap_scaling" v+ unqtDot (Overlap v) = printField "overlap" v+ unqtDot (PackMode v) = printField "packmode" v+ unqtDot (Pack v) = printField "pack" v+ unqtDot (Pad v) = printField "pad" v+ unqtDot (PageDir v) = printField "pagedir" v+ unqtDot (Page v) = printField "page" v+ unqtDot (PenColor v) = printField "pencolor" v+ unqtDot (PenWidth v) = printField "penwidth" v+ unqtDot (Peripheries v) = printField "peripheries" v+ unqtDot (Pin v) = printField "pin" v+ unqtDot (Pos v) = printField "pos" v+ unqtDot (QuadTree v) = printField "quadtree" v+ unqtDot (Quantum v) = printField "quantum" v+ unqtDot (RankDir v) = printField "rankdir" v+ unqtDot (RankSep v) = printField "ranksep" v+ unqtDot (Rank v) = printField "rank" v+ unqtDot (Ratio v) = printField "ratio" v+ unqtDot (Rects v) = printField "rects" v+ unqtDot (Regular v) = printField "regular" v+ unqtDot (ReMinCross v) = printField "remincross" v+ unqtDot (RepulsiveForce v) = printField "repulsiveforce" v+ unqtDot (Root v) = printField "root" v+ unqtDot (Rotate v) = printField "rotate" v+ unqtDot (SameHead v) = printField "samehead" v+ unqtDot (SameTail v) = printField "sametail" v+ unqtDot (SamplePoints v) = printField "samplepoints" v+ unqtDot (SearchSize v) = printField "searchsize" v+ unqtDot (Sep v) = printField "sep" v+ unqtDot (ShapeFile v) = printField "shapefile" v+ unqtDot (Shape v) = printField "shape" v+ unqtDot (ShowBoxes v) = printField "showboxes" v+ unqtDot (Sides v) = printField "sides" v+ unqtDot (Size v) = printField "size" v+ unqtDot (Skew v) = printField "skew" v+ unqtDot (Smoothing v) = printField "smoothing" v+ unqtDot (SortV v) = printField "sortv" v+ unqtDot (Splines v) = printField "splines" v+ unqtDot (Start v) = printField "start" v+ unqtDot (StyleSheet v) = printField "stylesheet" v+ unqtDot (Style v) = printField "style" v+ unqtDot (TailURL v) = printField "tailURL" v+ unqtDot (TailClip v) = printField "tailclip" v+ unqtDot (TailLabel v) = printField "taillabel" v+ unqtDot (TailPort v) = printField "tailport" v+ unqtDot (TailTarget v) = printField "tailtarget" v+ unqtDot (TailTooltip v) = printField "tailtooltip" v+ unqtDot (Target v) = printField "target" v+ unqtDot (Tooltip v) = printField "tooltip" v+ unqtDot (TrueColor v) = printField "truecolor" v+ unqtDot (Vertices v) = printField "vertices" v+ unqtDot (ViewPort v) = printField "viewport" v+ unqtDot (VoroMargin v) = printField "voro_margin" v+ unqtDot (Weight v) = printField "weight" v+ unqtDot (Width v) = printField "width" v+ unqtDot (Z v) = printField "z" v++ listToDot = unqtListToDot++instance ParseDot Attribute where+ parseUnqt = oneOf [ liftM Damping $ parseField "Damping"+ , liftM K $ parseField "K"+ , liftM URL $ parseFields ["URL", "href"]+ , liftM ArrowHead $ parseField "arrowhead"+ , liftM ArrowSize $ parseField "arrowsize"+ , liftM ArrowTail $ parseField "arrowtail"+ , liftM Aspect $ parseField "aspect"+ , liftM Bb $ parseField "bb"+ , liftM BgColor $ parseField "bgcolor"+ , liftM Center $ parseFieldBool "center"+ , liftM Charset $ parseField "charset"+ , liftM ClusterRank $ parseField "clusterrank"+ , liftM ColorScheme $ parseField "colorscheme"+ , liftM Color $ parseField "color"+ , liftM Comment $ parseField "comment"+ , liftM Compound $ parseFieldBool "compound"+ , liftM Concentrate $ parseFieldBool "concentrate"+ , liftM Constraint $ parseFieldBool "constraint"+ , liftM Decorate $ parseFieldBool "decorate"+ , liftM DefaultDist $ parseField "defaultdist"+ , liftM Dimen $ parseField "dimen"+ , liftM Dim $ parseField "dim"+ , liftM Dir $ parseField "dir"+ , liftM DirEdgeConstraints $ parseFieldDef EdgeConstraints "diredgeconstraints"+ , liftM Distortion $ parseField "distortion"+ , liftM DPI $ parseFields ["dpi", "resolution"]+ , liftM EdgeURL $ parseFields ["edgeURL", "edgehref"]+ , liftM EdgeTarget $ parseField "edgetarget"+ , liftM EdgeTooltip $ parseField "edgetooltip"+ , liftM Epsilon $ parseField "epsilon"+ , liftM ESep $ parseField "esep"+ , liftM FillColor $ parseField "fillcolor"+ , liftM FixedSize $ parseFieldBool "fixedsize"+ , liftM FontColor $ parseField "fontcolor"+ , liftM FontName $ parseField "fontname"+ , liftM FontNames $ parseField "fontnames"+ , liftM FontPath $ parseField "fontpath"+ , liftM FontSize $ parseField "fontsize"+ , liftM Group $ parseField "group"+ , liftM HeadURL $ parseFields ["headURL", "headhref"]+ , liftM HeadClip $ parseFieldBool "headclip"+ , liftM HeadLabel $ parseField "headlabel"+ , liftM HeadPort $ parseField "headport"+ , liftM HeadTarget $ parseField "headtarget"+ , liftM HeadTooltip $ parseField "headtooltip"+ , liftM Height $ parseField "height"+ , liftM ID $ parseField "id"+ , liftM Image $ parseField "image"+ , liftM ImageScale $ parseFieldDef UniformScale "imagescale"+ , liftM LabelURL $ parseFields ["labelURL", "labelhref"]+ , liftM LabelAngle $ parseField "labelangle"+ , liftM LabelDistance $ parseField "labeldistance"+ , liftM LabelFloat $ parseFieldBool "labelfloat"+ , liftM LabelFontColor $ parseField "labelfontcolor"+ , liftM LabelFontName $ parseField "labelfontname"+ , liftM LabelFontSize $ parseField "labelfontsize"+ , liftM LabelJust $ parseField "labeljust"+ , liftM LabelLoc $ parseField "labelloc"+ , liftM LabelTarget $ parseField "labeltarget"+ , liftM LabelTooltip $ parseField "labeltooltip"+ , liftM Label $ parseField "label"+ , liftM Landscape $ parseFieldBool "landscape"+ , liftM LayerSep $ parseField "layersep"+ , liftM Layers $ parseField "layers"+ , liftM Layer $ parseField "layer"+ , liftM Layout $ parseField "layout"+ , liftM Len $ parseField "len"+ , liftM LevelsGap $ parseField "levelsgap"+ , liftM Levels $ parseField "levels"+ , liftM LHead $ parseField "lhead"+ , liftM LPos $ parseField "lp"+ , liftM LTail $ parseField "ltail"+ , liftM Margin $ parseField "margin"+ , liftM MaxIter $ parseField "maxiter"+ , liftM MCLimit $ parseField "mclimit"+ , liftM MinDist $ parseField "mindist"+ , liftM MinLen $ parseField "minlen"+ , liftM Model $ parseField "model"+ , liftM Mode $ parseField "mode"+ , liftM Mosek $ parseFieldBool "mosek"+ , liftM NodeSep $ parseField "nodesep"+ , liftM NoJustify $ parseFieldBool "nojustify"+ , liftM Normalize $ parseFieldBool "normalize"+ , liftM Nslimit1 $ parseField "nslimit1"+ , liftM Nslimit $ parseField "nslimit"+ , liftM Ordering $ parseField "ordering"+ , liftM Orientation $ parseField "orientation"+ , liftM OutputOrder $ parseField "outputorder"+ , liftM OverlapScaling $ parseField "overlap_scaling"+ , liftM Overlap $ parseFieldDef KeepOverlaps "overlap"+ , liftM PackMode $ parseField "packmode"+ , liftM Pack $ parseFieldDef DoPack "pack"+ , liftM Pad $ parseField "pad"+ , liftM PageDir $ parseField "pagedir"+ , liftM Page $ parseField "page"+ , liftM PenColor $ parseField "pencolor"+ , liftM PenWidth $ parseField "penwidth"+ , liftM Peripheries $ parseField "peripheries"+ , liftM Pin $ parseFieldBool "pin"+ , liftM Pos $ parseField "pos"+ , liftM QuadTree $ parseFieldDef NormalQT "quadtree"+ , liftM Quantum $ parseField "quantum"+ , liftM RankDir $ parseField "rankdir"+ , liftM RankSep $ parseField "ranksep"+ , liftM Rank $ parseField "rank"+ , liftM Ratio $ parseField "ratio"+ , liftM Rects $ parseField "rects"+ , liftM Regular $ parseFieldBool "regular"+ , liftM ReMinCross $ parseFieldBool "remincross"+ , liftM RepulsiveForce $ parseField "repulsiveforce"+ , liftM Root $ parseFieldDef IsCentral "root"+ , liftM Rotate $ parseField "rotate"+ , liftM SameHead $ parseField "samehead"+ , liftM SameTail $ parseField "sametail"+ , liftM SamplePoints $ parseField "samplepoints"+ , liftM SearchSize $ parseField "searchsize"+ , liftM Sep $ parseField "sep"+ , liftM ShapeFile $ parseField "shapefile"+ , liftM Shape $ parseField "shape"+ , liftM ShowBoxes $ parseField "showboxes"+ , liftM Sides $ parseField "sides"+ , liftM Size $ parseField "size"+ , liftM Skew $ parseField "skew"+ , liftM Smoothing $ parseField "smoothing"+ , liftM SortV $ parseField "sortv"+ , liftM Splines $ parseFieldDef SplineEdges "splines"+ , liftM Start $ parseField "start"+ , liftM StyleSheet $ parseField "stylesheet"+ , liftM Style $ parseField "style"+ , liftM TailURL $ parseFields ["tailURL", "tailhref"]+ , liftM TailClip $ parseFieldBool "tailclip"+ , liftM TailLabel $ parseField "taillabel"+ , liftM TailPort $ parseField "tailport"+ , liftM TailTarget $ parseField "tailtarget"+ , liftM TailTooltip $ parseField "tailtooltip"+ , liftM Target $ parseField "target"+ , liftM Tooltip $ parseField "tooltip"+ , liftM TrueColor $ parseFieldBool "truecolor"+ , liftM Vertices $ parseField "vertices"+ , liftM ViewPort $ parseField "viewport"+ , liftM VoroMargin $ parseField "voro_margin"+ , liftM Weight $ parseField "weight"+ , liftM Width $ parseField "width"+ , liftM Z $ parseField "z"+ ]++ parse = parseUnqt++ parseList = parseUnqtList++-- | Determine if this Attribute is valid for use with Graphs.+usedByGraphs :: Attribute -> Bool+usedByGraphs Damping{} = True+usedByGraphs K{} = True+usedByGraphs URL{} = True+usedByGraphs Aspect{} = True+usedByGraphs Bb{} = True+usedByGraphs BgColor{} = True+usedByGraphs Center{} = True+usedByGraphs Charset{} = True+usedByGraphs ClusterRank{} = True+usedByGraphs ColorScheme{} = True+usedByGraphs Comment{} = True+usedByGraphs Compound{} = True+usedByGraphs Concentrate{} = True+usedByGraphs DefaultDist{} = True+usedByGraphs Dimen{} = True+usedByGraphs Dim{} = True+usedByGraphs DirEdgeConstraints{} = True+usedByGraphs DPI{} = True+usedByGraphs Epsilon{} = True+usedByGraphs ESep{} = True+usedByGraphs FontColor{} = True+usedByGraphs FontName{} = True+usedByGraphs FontNames{} = True+usedByGraphs FontPath{} = True+usedByGraphs FontSize{} = True+usedByGraphs ID{} = True+usedByGraphs LabelJust{} = True+usedByGraphs LabelLoc{} = True+usedByGraphs Label{} = True+usedByGraphs Landscape{} = True+usedByGraphs LayerSep{} = True+usedByGraphs Layers{} = True+usedByGraphs Layout{} = True+usedByGraphs LevelsGap{} = True+usedByGraphs Levels{} = True+usedByGraphs LPos{} = True+usedByGraphs Margin{} = True+usedByGraphs MaxIter{} = True+usedByGraphs MCLimit{} = True+usedByGraphs MinDist{} = True+usedByGraphs Model{} = True+usedByGraphs Mode{} = True+usedByGraphs Mosek{} = True+usedByGraphs NodeSep{} = True+usedByGraphs NoJustify{} = True+usedByGraphs Normalize{} = True+usedByGraphs Nslimit1{} = True+usedByGraphs Nslimit{} = True+usedByGraphs Ordering{} = True+usedByGraphs OutputOrder{} = True+usedByGraphs OverlapScaling{} = True+usedByGraphs Overlap{} = True+usedByGraphs PackMode{} = True+usedByGraphs Pack{} = True+usedByGraphs Pad{} = True+usedByGraphs PageDir{} = True+usedByGraphs Page{} = True+usedByGraphs QuadTree{} = True+usedByGraphs Quantum{} = True+usedByGraphs RankDir{} = True+usedByGraphs RankSep{} = True+usedByGraphs Ratio{} = True+usedByGraphs ReMinCross{} = True+usedByGraphs RepulsiveForce{} = True+usedByGraphs Root{} = True+usedByGraphs Rotate{} = True+usedByGraphs SearchSize{} = True+usedByGraphs Sep{} = True+usedByGraphs ShowBoxes{} = True+usedByGraphs Size{} = True+usedByGraphs Smoothing{} = True+usedByGraphs SortV{} = True+usedByGraphs Splines{} = True+usedByGraphs Start{} = True+usedByGraphs StyleSheet{} = True+usedByGraphs Target{} = True+usedByGraphs TrueColor{} = True+usedByGraphs ViewPort{} = True+usedByGraphs VoroMargin{} = True+usedByGraphs _ = False++-- | Determine if this Attribute is valid for use with Clusters.+usedByClusters :: Attribute -> Bool+usedByClusters K{} = True+usedByClusters URL{} = True+usedByClusters BgColor{} = True+usedByClusters ColorScheme{} = True+usedByClusters Color{} = True+usedByClusters FillColor{} = True+usedByClusters FontColor{} = True+usedByClusters FontName{} = True+usedByClusters FontSize{} = True+usedByClusters LabelJust{} = True+usedByClusters LabelLoc{} = True+usedByClusters Label{} = True+usedByClusters LPos{} = True+usedByClusters NoJustify{} = True+usedByClusters PenColor{} = True+usedByClusters PenWidth{} = True+usedByClusters Peripheries{} = True+usedByClusters Rank{} = True+usedByClusters SortV{} = True+usedByClusters Style{} = True+usedByClusters Target{} = True+usedByClusters Tooltip{} = True+usedByClusters _ = False++-- | Determine if this Attribute is valid for use with SubGraphs.+usedBySubGraphs :: Attribute -> Bool+usedBySubGraphs Rank{} = True+usedBySubGraphs _ = False++-- | Determine if this Attribute is valid for use with Nodes.+usedByNodes :: Attribute -> Bool+usedByNodes URL{} = True+usedByNodes ColorScheme{} = True+usedByNodes Color{} = True+usedByNodes Comment{} = True+usedByNodes Distortion{} = True+usedByNodes FillColor{} = True+usedByNodes FixedSize{} = True+usedByNodes FontColor{} = True+usedByNodes FontName{} = True+usedByNodes FontSize{} = True+usedByNodes Group{} = True+usedByNodes Height{} = True+usedByNodes ID{} = True+usedByNodes Image{} = True+usedByNodes ImageScale{} = True+usedByNodes LabelLoc{} = True+usedByNodes Label{} = True+usedByNodes Layer{} = True+usedByNodes Margin{} = True+usedByNodes NoJustify{} = True+usedByNodes Orientation{} = True+usedByNodes PenWidth{} = True+usedByNodes Peripheries{} = True+usedByNodes Pin{} = True+usedByNodes Pos{} = True+usedByNodes Rects{} = True+usedByNodes Regular{} = True+usedByNodes Root{} = True+usedByNodes SamplePoints{} = True+usedByNodes ShapeFile{} = True+usedByNodes Shape{} = True+usedByNodes ShowBoxes{} = True+usedByNodes Sides{} = True+usedByNodes Skew{} = True+usedByNodes SortV{} = True+usedByNodes Style{} = True+usedByNodes Target{} = True+usedByNodes Tooltip{} = True+usedByNodes Vertices{} = True+usedByNodes Width{} = True+usedByNodes Z{} = True+usedByNodes _ = False++-- | Determine if this Attribute is valid for use with Edges.+usedByEdges :: Attribute -> Bool+usedByEdges URL{} = True+usedByEdges ArrowHead{} = True+usedByEdges ArrowSize{} = True+usedByEdges ArrowTail{} = True+usedByEdges ColorScheme{} = True+usedByEdges Color{} = True+usedByEdges Comment{} = True+usedByEdges Constraint{} = True+usedByEdges Decorate{} = True+usedByEdges Dir{} = True+usedByEdges EdgeURL{} = True+usedByEdges EdgeTarget{} = True+usedByEdges EdgeTooltip{} = True+usedByEdges FontColor{} = True+usedByEdges FontName{} = True+usedByEdges FontSize{} = True+usedByEdges HeadURL{} = True+usedByEdges HeadClip{} = True+usedByEdges HeadLabel{} = True+usedByEdges HeadPort{} = True+usedByEdges HeadTarget{} = True+usedByEdges HeadTooltip{} = True+usedByEdges ID{} = True+usedByEdges LabelURL{} = True+usedByEdges LabelAngle{} = True+usedByEdges LabelDistance{} = True+usedByEdges LabelFloat{} = True+usedByEdges LabelFontColor{} = True+usedByEdges LabelFontName{} = True+usedByEdges LabelFontSize{} = True+usedByEdges LabelTarget{} = True+usedByEdges LabelTooltip{} = True+usedByEdges Label{} = True+usedByEdges Layer{} = True+usedByEdges Len{} = True+usedByEdges LHead{} = True+usedByEdges LPos{} = True+usedByEdges LTail{} = True+usedByEdges MinLen{} = True+usedByEdges NoJustify{} = True+usedByEdges PenWidth{} = True+usedByEdges Pos{} = True+usedByEdges SameHead{} = True+usedByEdges SameTail{} = True+usedByEdges ShowBoxes{} = True+usedByEdges Style{} = True+usedByEdges TailURL{} = True+usedByEdges TailClip{} = True+usedByEdges TailLabel{} = True+usedByEdges TailPort{} = True+usedByEdges TailTarget{} = True+usedByEdges TailTooltip{} = True+usedByEdges Target{} = True+usedByEdges Tooltip{} = True+usedByEdges Weight{} = True+usedByEdges _ = False++{- Delete to here -}+-- -----------------------------------------------------------------------------++{- |++ Some 'Attribute's (mainly label-like ones) take a 'String' argument+ that allows for extra escape codes. This library doesn't do any+ extra checks or special parsing for these escape codes, but usage+ of 'EscString' rather than 'String' indicates that the Graphviz+ tools will recognise these extra escape codes for these+ 'Attribute's.++ The extra escape codes include (note that these are all 'String's):++ [@\\N@] Replace with the name of the node (for Node 'Attribute's).++ [@\\G@] Replace with the name of the graph (for Node 'Attribute's)+ or the name of the graph or cluster, whichever is+ applicable (for Graph, Cluster and Edge 'Attribute's).++ [@\\E@] Replace with the name of the edge, formed by the two+ adjoining nodes and the edge type (for Edge 'Attribute's).++ [@\\T@] Replace with the name of the tail node (for Edge+ 'Attribute's).++ [@\\H@] Replace with the name of the head node (for Edge+ 'Attribute's).++ [@\\L@] Replace with the object's label (for all 'Attribute's).++ Also, if the 'Attribute' in question is 'Label', 'HeadLabel' or+ 'TailLabel', then @\\n@, @\\l@ and @\\r@ split the label into lines+ centered, left-justified and right-justified respectively.++ -}+type EscString = String++-- -----------------------------------------------------------------------------++-- | No checks are placed on the content of a 'URL' value; however,+-- you should ensure that it does not contain any \'@>@\' or \'@<@\'+-- characters; Graphviz might care about escaping other characters+-- properly, but for the purposes of this library the presence of+-- these characters will make it harder to parse URLs.+newtype URL = UStr { urlString :: EscString }+ deriving (Eq, Ord, Show, Read)++instance PrintDot URL where+ unqtDot = wrap (char '<') (char '>')+ -- Explicitly use text here... no quotes!+ . text . urlString++instance ParseDot URL where+ parseUnqt = liftM UStr+ $ bracket (character open)+ (character close)+ (many1 $ satisfy ((/=) close))+ where+ open = '<'+ close = '>'++ -- No quotes+ parse = parseUnqt++-- -----------------------------------------------------------------------------++-- | /Dot/ has a basic grammar of arrow shapes which allows usage of+-- up to 1,544,761 different shapes from 9 different basic+-- 'ArrowShape's. Note that whilst an explicit list is used in the+-- definition of 'ArrowType', there must be at least one tuple and a+-- maximum of 4 (since that is what is required by Dot). For more+-- information, see: <http://graphviz.org/doc/info/arrows.html>+--+-- The 19 basic arrows shown on the overall attributes page have+-- been defined below as a convenience. Parsing of the 5+-- backward-compatible special cases is also supported.+newtype ArrowType = AType [(ArrowModifier, ArrowShape)]+ deriving (Eq, Ord, Show, Read)++box, crow, diamond, dotArrow, inv, noArrow, normal, tee, vee :: ArrowType+oDot, invDot, invODot, oBox, oDiamond :: ArrowType+eDiamond, openArr, halfOpen, emptyArr, invEmpty :: ArrowType++normal = AType [(noMods, Normal)]+inv = AType [(noMods, Inv)]+dotArrow = AType [(noMods, DotArrow)]+invDot = AType [ (noMods, Inv)+ , (noMods, DotArrow)]+oDot = AType [(ArrMod OpenArrow BothSides, DotArrow)]+invODot = AType [ (noMods, Inv)+ , (openMod, DotArrow)]+noArrow = AType [(noMods, NoArrow)]+tee = AType [(noMods, Tee)]+emptyArr = AType [(openMod, Normal)]+invEmpty = AType [ (noMods, Inv)+ , (openMod, Normal)]+diamond = AType [(noMods, Diamond)]+oDiamond = AType [(openMod, Diamond)]+eDiamond = oDiamond+crow = AType [(noMods, Crow)]+box = AType [(noMods, Box)]+oBox = AType [(openMod, Box)]+openArr = vee+halfOpen = AType [(ArrMod FilledArrow LeftSide, Vee)]+vee = AType [(noMods, Vee)]++instance PrintDot ArrowType where+ unqtDot (AType mas) = hcat $ map appMod mas+ where+ appMod (m, a) = unqtDot m <> unqtDot a++instance ParseDot ArrowType where+ parseUnqt = do mas <- many1 $ do m <- parseUnqt+ a <- parseUnqt+ return (m,a)+ return $ AType mas+ `onFail`+ specialArrowParse++specialArrowParse :: Parse ArrowType+specialArrowParse = oneOf [ stringRep eDiamond "ediamond"+ , stringRep openArr "open"+ , stringRep halfOpen "halfopen"+ , stringRep emptyArr "empty"+ , stringRep invEmpty "invempty"+ ]++data ArrowShape = Box+ | Crow+ | Diamond+ | DotArrow+ | Inv+ | NoArrow+ | Normal+ | Tee+ | Vee+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowShape where+ unqtDot Box = unqtDot "box"+ unqtDot Crow = unqtDot "crow"+ unqtDot Diamond = unqtDot "diamond"+ unqtDot DotArrow = unqtDot "dot"+ unqtDot Inv = unqtDot "inv"+ unqtDot NoArrow = unqtDot "none"+ unqtDot Normal = unqtDot "normal"+ unqtDot Tee = unqtDot "tee"+ unqtDot Vee = unqtDot "vee"++instance ParseDot ArrowShape where+ parseUnqt = oneOf [ stringRep Box "box"+ , stringRep Crow "crow"+ , stringRep Diamond "diamond"+ , stringRep DotArrow "dot"+ , stringRep Inv "inv"+ , stringRep NoArrow "none"+ , stringRep Normal "normal"+ , stringRep Tee "tee"+ , stringRep Vee "vee"+ ]++-- | What modifications to apply to an 'ArrowShape'.+data ArrowModifier = ArrMod { arrowFill :: ArrowFill+ , arrowSide :: ArrowSide+ }+ deriving (Eq, Ord, Show, Read)++-- | Apply no modifications to an 'ArrowShape'.+noMods :: ArrowModifier+noMods = ArrMod FilledArrow BothSides++-- | 'OpenArrow' and 'BothSides'+openMod :: ArrowModifier+openMod = ArrMod OpenArrow BothSides++instance PrintDot ArrowModifier where+ unqtDot (ArrMod f s) = unqtDot f <> unqtDot s++instance ParseDot ArrowModifier where+ parseUnqt = do f <- parseUnqt+ s <- parseUnqt+ return $ ArrMod f s++data ArrowFill = OpenArrow+ | FilledArrow+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowFill where+ unqtDot OpenArrow = char 'o'+ unqtDot FilledArrow = empty++instance ParseDot ArrowFill where+ parseUnqt = liftM (bool FilledArrow OpenArrow . isJust)+ $ optional (character 'o')++ -- Not used individually+ parse = parseUnqt++-- | Represents which side (when looking towards the node the arrow is+-- pointing to) is drawn.+data ArrowSide = LeftSide+ | RightSide+ | BothSides+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowSide where+ unqtDot LeftSide = char 'l'+ unqtDot RightSide = char 'r'+ unqtDot BothSides = empty++instance ParseDot ArrowSide where+ parseUnqt = liftM getSideType+ $ optional (oneOf $ map character ['l', 'r'])+ where+ getSideType = maybe BothSides+ (bool RightSide LeftSide . (==) 'l')++ -- Not used individually+ parse = parseUnqt++-- -----------------------------------------------------------------------------++data AspectType = RatioOnly Double+ | RatioPassCount Double Int+ deriving (Eq, Ord, Show, Read)++instance PrintDot AspectType where+ unqtDot (RatioOnly r) = unqtDot r+ unqtDot (RatioPassCount r p) = commaDel r p++ toDot at@RatioOnly{} = unqtDot at+ toDot at@RatioPassCount{} = doubleQuotes $ unqtDot at++instance ParseDot AspectType where+ parseUnqt = liftM (uncurry RatioPassCount) commaSepUnqt+ `onFail`+ liftM RatioOnly parseUnqt+++ parse = quotedParse (liftM (uncurry RatioPassCount) commaSepUnqt)+ `onFail`+ liftM RatioOnly parse++-- -----------------------------------------------------------------------------++data Rect = Rect Point Point+ deriving (Eq, Ord, Show, Read)++instance PrintDot Rect where+ unqtDot (Rect p1 p2) = commaDel p1 p2++ toDot = doubleQuotes . unqtDot++instance ParseDot Rect where+ parseUnqt = liftM (uncurry Rect) commaSepUnqt++ parse = quotedParse parseUnqt++-- -----------------------------------------------------------------------------++data ClusterMode = Local+ | Global+ | NoCluster+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ClusterMode where+ unqtDot Local = unqtDot "local"+ unqtDot Global = unqtDot "global"+ unqtDot NoCluster = unqtDot "none"++++instance ParseDot ClusterMode where+ parseUnqt = oneOf [ stringRep Local "local"+ , stringRep Global "global"+ , stringRep NoCluster "none"+ ]++-- -----------------------------------------------------------------------------++data DirType = Forward | Back | Both | NoDir+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DirType where+ unqtDot Forward = unqtDot "forward"+ unqtDot Back = unqtDot "back"+ unqtDot Both = unqtDot "both"+ unqtDot NoDir = unqtDot "none"++instance ParseDot DirType where+ parseUnqt = oneOf [ stringRep Forward "forward"+ , stringRep Back "back"+ , stringRep Both "both"+ , stringRep NoDir "none"+ ]++-- -----------------------------------------------------------------------------++-- | Only when @mode == 'IpSep'@.+data DEConstraints = EdgeConstraints+ | NoConstraints+ | HierConstraints+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DEConstraints where+ unqtDot EdgeConstraints = unqtDot True+ unqtDot NoConstraints = unqtDot False+ unqtDot HierConstraints = text "hier"++instance ParseDot DEConstraints where+ parseUnqt = liftM (bool NoConstraints EdgeConstraints) parse+ `onFail`+ stringRep HierConstraints "hier"++-- -----------------------------------------------------------------------------++-- | Either a 'Double' or a 'Point'.+data DPoint = DVal Double+ | PVal Point+ deriving (Eq, Ord, Show, Read)++instance PrintDot DPoint where+ unqtDot (DVal d) = unqtDot d+ unqtDot (PVal p) = unqtDot p++ toDot (DVal d) = toDot d+ toDot (PVal p) = toDot p++instance ParseDot DPoint where+ parseUnqt = liftM PVal parseUnqt+ `onFail`+ liftM DVal parseUnqt++ parse = liftM PVal parse+ `onFail`+ liftM DVal parse++-- -----------------------------------------------------------------------------++data ModeType = Major+ | KK+ | Hier+ | IpSep+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ModeType where+ unqtDot Major = text "major"+ unqtDot KK = text "KK"+ unqtDot Hier = text "hier"+ unqtDot IpSep = text "ipsep"++instance ParseDot ModeType where+ parseUnqt = oneOf [ stringRep Major "major"+ , stringRep KK "KK"+ , stringRep Hier "hier"+ , stringRep IpSep "ipsep"+ ]++-- -----------------------------------------------------------------------------++data Model = ShortPath+ | SubSet+ | Circuit+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Model where+ unqtDot ShortPath = text "shortpath"+ unqtDot SubSet = text "subset"+ unqtDot Circuit = text "circuit"++instance ParseDot Model where+ parseUnqt = oneOf [ stringRep ShortPath "shortpath"+ , stringRep SubSet "subset"+ , stringRep Circuit "circuit"+ ]++-- -----------------------------------------------------------------------------++data Label = StrLabel EscString+ | URLLabel URL+ deriving (Eq, Ord, Show, Read)++instance PrintDot Label where+ unqtDot (StrLabel s) = unqtDot s+ unqtDot (URLLabel u) = unqtDot u++ toDot (StrLabel s) = toDot s+ toDot (URLLabel u) = toDot u++instance ParseDot Label where+ parseUnqt = liftM StrLabel parseUnqt+ `onFail`+ liftM URLLabel parseUnqt++ parse = liftM StrLabel parse+ `onFail`+ liftM URLLabel parse++-- -----------------------------------------------------------------------------++data Point = Point Int Int+ | PointD Double Double+ deriving (Eq, Ord, Show, Read)++instance PrintDot Point where+ unqtDot (Point x y) = commaDel x y+ unqtDot (PointD x y) = commaDel x y++ toDot = doubleQuotes . unqtDot++ unqtListToDot = hsep . map unqtDot++ listToDot = doubleQuotes . unqtListToDot++instance ParseDot Point where+ -- Need to take into account the situation where first value is an+ -- integer, second a double: if Point parsing first, then it won't+ -- parse the second number properly; but if PointD first then it+ -- will treat Int/Int as Double/Double.+ parseUnqt = intDblPoint+ `onFail`+ liftM (uncurry Point) commaSepUnqt+ `onFail`+ liftM (uncurry PointD) commaSepUnqt+ where+ intDblPoint = liftM (uncurry PointD . first fI)+ $ commaSep' parseUnqt parseStrictFloat+ fI :: Int -> Double+ fI = fromIntegral++ parse = quotedParse parseUnqt++ parseUnqtList = sepBy1 parseUnqt whitespace++-- -----------------------------------------------------------------------------++data Overlap = KeepOverlaps+ | RemoveOverlaps+ | ScaleOverlaps+ | ScaleXYOverlaps+ | PrismOverlap (Maybe Int) -- ^ Only when sfdp is available, 'Int' is non-negative+ | CompressOverlap+ | VpscOverlap+ | IpsepOverlap -- ^ Only when @mode == 'IpSep'@+ deriving (Eq, Ord, Show, Read)++instance PrintDot Overlap where+ unqtDot KeepOverlaps = unqtDot True+ unqtDot RemoveOverlaps = unqtDot False+ unqtDot ScaleOverlaps = text "scale"+ unqtDot ScaleXYOverlaps = text "scalexy"+ unqtDot (PrismOverlap i) = maybe id (flip (<>) . unqtDot) i $ text "prism"+ unqtDot CompressOverlap = text "compress"+ unqtDot VpscOverlap = text "vpsc"+ unqtDot IpsepOverlap = text "ipsep"++instance ParseDot Overlap where+ parseUnqt = oneOf [ stringRep KeepOverlaps "true"+ , stringRep RemoveOverlaps "false"+ , stringRep ScaleXYOverlaps "scalexy"+ , stringRep ScaleOverlaps "scale"+ , string "prism" >> liftM PrismOverlap (optional parse)+ , stringRep CompressOverlap "compress"+ , stringRep VpscOverlap "vpsc"+ , stringRep IpsepOverlap "ipsep"+ ]++-- -----------------------------------------------------------------------------++data LayerRange = LRID LayerID+ | LRS LayerID String LayerID+ deriving (Eq, Ord, Show, Read)++instance PrintDot LayerRange where+ unqtDot (LRID lid) = unqtDot lid+ unqtDot (LRS id1 s id2) = unqtDot id1 <> unqtDot s <> unqtDot id2++ toDot (LRID lid) = toDot lid+ toDot lrs = doubleQuotes $ unqtDot lrs++instance ParseDot LayerRange where+ parseUnqt = do id1 <- parseUnqt+ s <- parseLayerSep+ id2 <- parseUnqt+ return $ LRS id1 s id2+ `onFail`+ liftM LRID parseUnqt+++ parse = quotedParse ( do id1 <- parseUnqt+ s <- parseLayerSep+ id2 <- parseUnqt+ return $ LRS id1 s id2+ )+ `onFail`+ liftM LRID parse++parseLayerSep :: Parse String+parseLayerSep = many1 . oneOf+ $ map character defLayerSep++defLayerSep :: [Char]+defLayerSep = [' ', ':', '\t']++parseLayerName :: Parse String+parseLayerName = many1 . orQuote+ $ satisfy (liftM2 (&&) notLayerSep ((/=) quoteChar))++parseLayerName' :: Parse String+parseLayerName' = stringBlock+ `onFail`+ quotedParse parseLayerName++notLayerSep :: Char -> Bool+notLayerSep = flip notElem defLayerSep++-- | You should not have any quote characters for the 'LRName' option,+-- as it won't be parseable.+data LayerID = AllLayers+ | LRInt Int+ | LRName String+ deriving (Eq, Ord, Show, Read)++instance PrintDot LayerID where+ unqtDot AllLayers = text "all"+ unqtDot (LRInt n) = unqtDot n+ unqtDot (LRName nm) = unqtDot nm++ toDot (LRName nm) = toDot nm+ -- Other two don't need quotes+ toDot li = unqtDot li++instance ParseDot LayerID where+ parseUnqt = liftM checkLayerName parseLayerName -- tests for Int and All++ parse = oneOf [ liftM checkLayerName parseLayerName'+ , liftM LRInt parse -- Mainly for unquoted case.+ ]++checkLayerName :: String -> LayerID+checkLayerName str = maybe checkAll LRInt $ stringToInt str+ where+ checkAll = if map toLower str == "all"+ then AllLayers+ else LRName str++-- | The list represent (Separator, Name). You should not have any+-- quote characters for any of the 'String's, since there are+-- parsing problems with them.+data LayerList = LL String [(String, String)]+ deriving (Eq, Ord, Show, Read)++instance PrintDot LayerList where+ unqtDot (LL l1 ols) = unqtDot l1 <> hcat (map subLL ols)+ where+ subLL (s, l) = unqtDot s <> unqtDot l++ toDot (LL l1 []) = toDot l1+ -- Might not need quotes, but probably will.+ toDot ll = doubleQuotes $ unqtDot ll++instance ParseDot LayerList where+ parseUnqt = do l1 <- parseLayerName+ ols <- many $ do s <- parseLayerSep+ lnm <- parseLayerName+ return (s, lnm)+ return $ LL l1 ols++ parse = quotedParse parseUnqt+ `onFail`+ liftM (flip LL []) (parseLayerName' `onFail` numString)++-- -----------------------------------------------------------------------------++data OutputMode = BreadthFirst | NodesFirst | EdgesFirst+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot OutputMode where+ unqtDot BreadthFirst = text "breadthfirst"+ unqtDot NodesFirst = text "nodesfirst"+ unqtDot EdgesFirst = text "edgesfirst"++instance ParseDot OutputMode where+ parseUnqt = oneOf [ stringRep BreadthFirst "breadthfirst"+ , stringRep NodesFirst "nodesfirst"+ , stringRep EdgesFirst "edgesfirst"+ ]++-- -----------------------------------------------------------------------------++data Pack = DoPack+ | DontPack+ | PackMargin Int -- ^ If non-negative, then packs; otherwise doesn't.+ deriving (Eq, Ord, Show, Read)++instance PrintDot Pack where+ unqtDot DoPack = unqtDot True+ unqtDot DontPack = unqtDot False+ unqtDot (PackMargin m) = unqtDot m++instance ParseDot Pack where+ -- What happens if it parses 0? It's non-negative, but parses as False+ parseUnqt = oneOf [ liftM PackMargin parseUnqt+ , liftM (bool DontPack DoPack) onlyBool+ ]++-- -----------------------------------------------------------------------------++data PackMode = PackNode+ | PackClust+ | PackGraph+ | PackArray Bool Bool (Maybe Int) -- ^ Sort by cols, sort+ -- by user, number of+ -- rows/cols+ deriving (Eq, Ord, Show, Read)++instance PrintDot PackMode where+ unqtDot PackNode = text "node"+ unqtDot PackClust = text "clust"+ unqtDot PackGraph = text "graph"+ unqtDot (PackArray c u mi) = addNum . isU . isC . isUnder+ $ text "array"+ where+ addNum = maybe id (flip (<>) . unqtDot) mi+ isUnder = if c || u+ then flip (<>) $ char '_'+ else id+ isC = if c+ then flip (<>) $ char 'c'+ else id+ isU = if u+ then flip (<>) $ char 'u'+ else id++instance ParseDot PackMode where+ parseUnqt = oneOf [ stringRep PackNode "node"+ , stringRep PackClust "clust"+ , stringRep PackGraph "graph"+ , do string "array"+ mcu <- optional $ do character '_'+ many1 $ satisfy isCU+ let c = hasCharacter mcu 'c'+ u = hasCharacter mcu 'u'+ mi <- optional parseUnqt+ return $ PackArray c u mi+ ]+ where+ hasCharacter ms c = maybe False (elem c) ms+ -- Also checks and removes quote characters+ isCU = flip elem ['c', 'u']++-- -----------------------------------------------------------------------------++data Pos = PointPos Point+ | SplinePos [Spline]+ deriving (Eq, Ord, Show, Read)++instance PrintDot Pos where+ unqtDot (PointPos p) = unqtDot p+ unqtDot (SplinePos ss) = unqtDot ss++ toDot (PointPos p) = toDot p+ toDot (SplinePos ss) = toDot ss++instance ParseDot Pos where+ -- Have to be careful with this: if we try to parse points first,+ -- then a spline with no start and end points will erroneously get+ -- parsed as a point and then the parser will crash as it expects+ -- a closing quote character...+ parseUnqt = do splns <- parseUnqt+ case splns of+ [Spline Nothing Nothing [p]] -> return $ PointPos p+ _ -> return $ SplinePos splns++ parse = quotedParse parseUnqt++-- -----------------------------------------------------------------------------++-- | Controls how (and if) edges are represented.+data EdgeType = SplineEdges+ | LineEdges+ | NoEdges+ | PolyLine+ | CompoundEdge -- ^ fdp only+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot EdgeType where+ unqtDot SplineEdges = toDot True+ unqtDot LineEdges = toDot False+ unqtDot NoEdges = empty+ unqtDot PolyLine = text "polyline"+ unqtDot CompoundEdge = text "compound"++ toDot NoEdges = doubleQuotes empty+ toDot et = unqtDot et++instance ParseDot EdgeType where+ -- Can't parse NoEdges without quotes.+ parseUnqt = oneOf [ liftM (bool LineEdges SplineEdges) parse+ , stringRep SplineEdges "spline"+ , stringRep LineEdges "line"+ , stringRep PolyLine "polyline"+ , stringRep CompoundEdge "compound"+ ]++ parse = stringRep NoEdges "\"\""+ `onFail`+ optionalQuoted parseUnqt++-- -----------------------------------------------------------------------------++-- | Upper-case first character is major order;+-- lower-case second character is minor order.+data PageDir = Bl | Br | Tl | Tr | Rb | Rt | Lb | Lt+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot PageDir where+ unqtDot Bl = text "BL"+ unqtDot Br = text "BR"+ unqtDot Tl = text "TL"+ unqtDot Tr = text "TR"+ unqtDot Rb = text "RB"+ unqtDot Rt = text "RT"+ unqtDot Lb = text "LB"+ unqtDot Lt = text "LT"++instance ParseDot PageDir where+ parseUnqt = oneOf [ stringRep Bl "BL"+ , stringRep Br "BR"+ , stringRep Tl "TL"+ , stringRep Tr "TR"+ , stringRep Rb "RB"+ , stringRep Rt "RT"+ , stringRep Lb "LB"+ , stringRep Lt "LT"+ ]++-- -----------------------------------------------------------------------------++-- | The number of points in the list must be equivalent to 1 mod 3;+-- note that this is not checked.+data Spline = Spline (Maybe Point) (Maybe Point) [Point]+ deriving (Eq, Ord, Show, Read)++instance PrintDot Spline where+ unqtDot (Spline ms me ps) = addS . addE+ . hsep+ $ map unqtDot ps+ where+ addP t = maybe id ((<+>) . commaDel t)+ addS = addP 's' ms+ addE = addP 'e' me++ toDot = doubleQuotes . unqtDot++ unqtListToDot = hcat . punctuate semi . map unqtDot++ listToDot = doubleQuotes . unqtListToDot++instance ParseDot Spline where+ parseUnqt = do ms <- parseP 's'+ me <- parseP 'e'+ ps <- sepBy1 parseUnqt whitespace+ return $ Spline ms me ps+ where+ parseP t = optional $ do character t+ parseComma+ parseUnqt `discard` whitespace++ parse = quotedParse parseUnqt++ parseUnqtList = sepBy1 parseUnqt (character ';')++-- -----------------------------------------------------------------------------++data QuadType = NormalQT+ | FastQT+ | NoQT+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot QuadType where+ unqtDot NormalQT = text "normal"+ unqtDot FastQT = text "fast"+ unqtDot NoQT = text "none"++instance ParseDot QuadType where+ -- Have to take into account the slightly different interpretation+ -- of Bool used as an option for parsing QuadType+ parseUnqt = oneOf [ stringRep NormalQT "normal"+ , stringRep FastQT "fast"+ , stringRep NoQT "none"+ , character '2' >> return FastQT -- weird bool+ , liftM (bool NoQT NormalQT) parse+ ]++-- -----------------------------------------------------------------------------++-- | Specify the root node either as a Node attribute or a Graph attribute.+data Root = IsCentral -- ^ For Nodes only+ | NotCentral -- ^ For Nodes only+ | NodeName String -- ^ For Graphs only+ deriving (Eq, Ord, Show, Read)++instance PrintDot Root where+ unqtDot IsCentral = unqtDot True+ unqtDot NotCentral = unqtDot False+ unqtDot (NodeName n) = unqtDot n++ toDot (NodeName n) = toDot n+ toDot r = unqtDot r++instance ParseDot Root where+ parseUnqt = liftM (bool NotCentral IsCentral) onlyBool+ `onFail`+ liftM NodeName parseUnqt++ parse = optionalQuoted (liftM (bool NotCentral IsCentral) onlyBool)+ `onFail`+ liftM NodeName parse++-- -----------------------------------------------------------------------------++data RankType = SameRank+ | MinRank+ | SourceRank+ | MaxRank+ | SinkRank+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankType where+ unqtDot SameRank = text "same"+ unqtDot MinRank = text "min"+ unqtDot SourceRank = text "source"+ unqtDot MaxRank = text "max"+ unqtDot SinkRank = text "sink"++instance ParseDot RankType where+ parseUnqt = oneOf [ stringRep SameRank "same"+ , stringRep MinRank "min"+ , stringRep SourceRank "source"+ , stringRep MaxRank "max"+ , stringRep SinkRank "sink"+ ]++-- -----------------------------------------------------------------------------++data RankDir = FromTop+ | FromLeft+ | FromBottom+ | FromRight+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankDir where+ unqtDot FromTop = text "TB"+ unqtDot FromLeft = text "LR"+ unqtDot FromBottom = text "BT"+ unqtDot FromRight = text "RL"++instance ParseDot RankDir where+ parseUnqt = oneOf [ stringRep FromTop "TB"+ , stringRep FromLeft "LR"+ , stringRep FromBottom "BT"+ , stringRep FromRight "RL"+ ]++-- -----------------------------------------------------------------------------++data Shape+ = BoxShape -- ^ Has synonyms of /rect/ and /rectangle/.+ | Polygon+ | Ellipse+ | Circle+ | PointShape+ | Egg+ | Triangle+ | PlainText -- ^ Has synonym of /none/.+ | DiamondShape+ | Trapezium+ | Parallelogram+ | House+ | Pentagon+ | Hexagon+ | Septagon+ | Octagon+ | DoubleCircle+ | DoubleOctagon+ | TripleOctagon+ | InvTriangle+ | InvTrapezium+ | InvHouse+ | MDiamond+ | MSquare+ | MCircle+ | Note+ | Tab+ | Folder+ | Box3D+ | Component+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Shape where+ unqtDot BoxShape = text "box"+ unqtDot Polygon = text "polygon"+ unqtDot Ellipse = text "ellipse"+ unqtDot Circle = text "circle"+ unqtDot PointShape = text "point"+ unqtDot Egg = text "egg"+ unqtDot Triangle = text "triangle"+ unqtDot PlainText = text "plaintext"+ unqtDot DiamondShape = text "diamond"+ unqtDot Trapezium = text "trapezium"+ unqtDot Parallelogram = text "parallelogram"+ unqtDot House = text "house"+ unqtDot Pentagon = text "pentagon"+ unqtDot Hexagon = text "hexagon"+ unqtDot Septagon = text "septagon"+ unqtDot Octagon = text "octagon"+ unqtDot DoubleCircle = text "doublecircle"+ unqtDot DoubleOctagon = text "doubleoctagon"+ unqtDot TripleOctagon = text "tripleoctagon"+ unqtDot InvTriangle = text "invtriangle"+ unqtDot InvTrapezium = text "invtrapezium"+ unqtDot InvHouse = text "invhouse"+ unqtDot MDiamond = text "Mdiamond"+ unqtDot MSquare = text "Msquare"+ unqtDot MCircle = text "Mcircle"+ unqtDot Note = text "note"+ unqtDot Tab = text "tab"+ unqtDot Folder = text "folder"+ unqtDot Box3D = text "box3d"+ unqtDot Component = text "component"++instance ParseDot Shape where+ parseUnqt = oneOf [ stringRep Box3D "box3d" -- Parse this before "box"+ , stringReps BoxShape ["box","rectangle","rect"]+ , stringRep Polygon "polygon"+ , stringRep Ellipse "ellipse"+ , stringRep Circle "circle"+ , stringRep PointShape "point"+ , stringRep Egg "egg"+ , stringRep Triangle "triangle"+ , stringReps PlainText ["plaintext","none"]+ , stringRep DiamondShape "diamond"+ , stringRep Trapezium "trapezium"+ , stringRep Parallelogram "parallelogram"+ , stringRep House "house"+ , stringRep Pentagon "pentagon"+ , stringRep Hexagon "hexagon"+ , stringRep Septagon "septagon"+ , stringRep Octagon "octagon"+ , stringRep DoubleCircle "doublecircle"+ , stringRep DoubleOctagon "doubleoctagon"+ , stringRep TripleOctagon "tripleoctagon"+ , stringRep InvTriangle "invtriangle"+ , stringRep InvTrapezium "invtrapezium"+ , stringRep InvHouse "invhouse"+ , stringRep MDiamond "Mdiamond"+ , stringRep MSquare "Msquare"+ , stringRep MCircle "Mcircle"+ , stringRep Note "note"+ , stringRep Tab "tab"+ , stringRep Folder "folder"+ , stringRep Component "component"+ ]++-- -----------------------------------------------------------------------------++data SmoothType = NoSmooth+ | AvgDist+ | GraphDist+ | PowerDist+ | RNG+ | Spring+ | TriangleSmooth+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot SmoothType where+ unqtDot NoSmooth = text "none"+ unqtDot AvgDist = text "avg_dist"+ unqtDot GraphDist = text "graph_dist"+ unqtDot PowerDist = text "power_dist"+ unqtDot RNG = text "rng"+ unqtDot Spring = text "spring"+ unqtDot TriangleSmooth = text "triangle"++instance ParseDot SmoothType where+ parseUnqt = oneOf [ stringRep NoSmooth "none"+ , stringRep AvgDist "avg_dist"+ , stringRep GraphDist "graph_dist"+ , stringRep PowerDist "power_dist"+ , stringRep RNG "rng"+ , stringRep Spring "spring"+ , stringRep TriangleSmooth "triangle"+ ]++-- -----------------------------------------------------------------------------++data StartType = StartStyle STStyle+ | StartSeed Int+ | StartStyleSeed STStyle Int+ deriving (Eq, Ord, Show, Read)++instance PrintDot StartType where+ unqtDot (StartStyle ss) = unqtDot ss+ unqtDot (StartSeed s) = unqtDot s+ unqtDot (StartStyleSeed ss s) = unqtDot ss <> unqtDot s++instance ParseDot StartType where+ parseUnqt = oneOf [ do ss <- parseUnqt+ s <- parseUnqt+ return $ StartStyleSeed ss s+ , liftM StartStyle parseUnqt+ , liftM StartSeed parseUnqt+ ]++data STStyle = RegularStyle+ | SelfStyle+ | RandomStyle+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot STStyle where+ unqtDot RegularStyle = text "regular"+ unqtDot SelfStyle = text "self"+ unqtDot RandomStyle = text "random"++instance ParseDot STStyle where+ parseUnqt = oneOf [ stringRep RegularStyle "regular"+ , stringRep SelfStyle "self"+ , stringRep RandomStyle "random"+ ]++-- -----------------------------------------------------------------------------++data StyleItem = SItem StyleName [String]+ deriving (Eq, Ord, Show, Read)++instance PrintDot StyleItem where+ unqtDot (SItem nm args)+ | null args = dnm+ | otherwise = dnm <> parens args'+ where+ dnm = unqtDot nm+ args' = hcat . punctuate comma $ map unqtDot args++ toDot si@(SItem nm args)+ | null args = toDot nm+ | otherwise = doubleQuotes $ unqtDot si++ unqtListToDot = hcat . punctuate comma . map unqtDot++ listToDot [SItem nm []] = toDot nm+ listToDot sis = doubleQuotes $ unqtListToDot sis++instance ParseDot StyleItem where+ parseUnqt = do nm <- parseUnqt+ args <- tryParseList' parseArgs+ return $ SItem nm args++ parse = quotedParse (liftM2 SItem parseUnqt parseArgs)+ `onFail`+ liftM (flip SItem []) parse++ parseUnqtList = sepBy1 parseUnqt parseComma++ parseList = quotedParse parseUnqtList+ `onFail`+ -- Might not necessarily need to be quoted if a singleton...+ liftM return parse++parseArgs :: Parse [String]+parseArgs = bracketSep (character '(')+ parseComma+ (character ')')+ parseStyleName++data StyleName = Dashed -- ^ Nodes and Edges+ | Dotted -- ^ Nodes and Edges+ | Solid -- ^ Nodes and Edges+ | Bold -- ^ Nodes and Edges+ | Invisible -- ^ Nodes and Edges+ | Filled -- ^ Nodes and Clusters+ | Diagonals -- ^ Nodes only+ | Rounded -- ^ Nodes and Clusters+ | DD String -- ^ Device Dependent+ deriving (Eq, Ord, Show, Read)++instance PrintDot StyleName where+ unqtDot Dashed = text "dashed"+ unqtDot Dotted = text "dotted"+ unqtDot Solid = text "solid"+ unqtDot Bold = text "bold"+ unqtDot Invisible = text "invis"+ unqtDot Filled = text "filled"+ unqtDot Diagonals = text "diagonals"+ unqtDot Rounded = text "rounded"+ unqtDot (DD nm) = unqtDot nm++ toDot (DD nm) = toDot nm+ toDot sn = unqtDot sn++instance ParseDot StyleName where+ parseUnqt = liftM checkDD parseStyleName++ parse = liftM checkDD+ $ quotedParse parseStyleName+ `onFail`+ -- In case a singleton DD is at the end of an attribute list.+ do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ', ']']+ r <- many (orQuote $ noneOf [quoteChar, '(', ')', ',', ']'])+ return $ f:r++checkDD :: String -> StyleName+checkDD str = case map toLower str of+ "dashed" -> Dashed+ "dotted" -> Dotted+ "solid" -> Solid+ "bold" -> Bold+ "invis" -> Invisible+ "filled" -> Filled+ "diagonals" -> Diagonals+ "rounded" -> Rounded+ _ -> DD str++parseStyleName :: Parse String+parseStyleName = do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ']+ r <- many (orQuote $ noneOf [quoteChar, '(', ')', ','])+ return $ f:r++-- -----------------------------------------------------------------------------++newtype PortPos = PP CompassPoint+ deriving (Eq, Ord, Show, Read)++instance PrintDot PortPos where+ unqtDot (PP cp) = unqtDot cp++ toDot (PP cp) = toDot cp++instance ParseDot PortPos where+ parseUnqt = liftM PP parseUnqt++data CompassPoint = North+ | NorthEast+ | East+ | SouthEast+ | South+ | SouthWest+ | West+ | NorthWest+ | CenterPoint+ | NoCP+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot CompassPoint where+ unqtDot NorthEast = text "ne"+ unqtDot NorthWest = text "nw"+ unqtDot North = text "n"+ unqtDot East = text "e"+ unqtDot SouthEast = text "se"+ unqtDot SouthWest = text "sw"+ unqtDot South = text "s"+ unqtDot West = text "w"+ unqtDot CenterPoint = text "c"+ unqtDot NoCP = text "_"++instance ParseDot CompassPoint where+ -- Have to take care of longer parsing values first.+ parseUnqt = oneOf [ stringRep NorthEast "ne"+ , stringRep NorthWest "nw"+ , stringRep North "n"+ , stringRep SouthEast "se"+ , stringRep SouthWest "sw"+ , stringRep South "s"+ , stringRep East "e"+ , stringRep West "w"+ , stringRep CenterPoint "c"+ , stringRep NoCP "_"+ ]++-- -----------------------------------------------------------------------------++data ViewPort = VP { wVal :: Double+ , hVal :: Double+ , zVal :: Double+ , focus :: Maybe FocusType+ }+ deriving (Eq, Ord, Show, Read)++instance PrintDot ViewPort where+ unqtDot vp = maybe vs ((<>) (vs <> comma) . unqtDot)+ $ focus vp+ where+ vs = hcat . punctuate comma+ $ map (unqtDot . flip ($) vp) [wVal, hVal, zVal]++ toDot = doubleQuotes . unqtDot++instance ParseDot ViewPort where+ parseUnqt = do wv <- parseUnqt+ parseComma+ hv <- parseUnqt+ parseComma+ zv <- parseUnqt+ mf <- optional $ parseComma >> parseUnqt+ return $ VP wv hv zv mf++ parse = quotedParse parseUnqt++data FocusType = XY Point+ | NodeFocus String+ deriving (Eq, Ord, Show, Read)++instance PrintDot FocusType where+ unqtDot (XY p) = unqtDot p+ unqtDot (NodeFocus nm) = unqtDot nm++ toDot (XY p) = toDot p+ toDot (NodeFocus nm) = toDot nm++instance ParseDot FocusType where+ parseUnqt = liftM XY parseUnqt+ `onFail`+ liftM NodeFocus parseUnqt++ parse = liftM XY parse+ `onFail`+ liftM NodeFocus parse++-- -----------------------------------------------------------------------------++data VerticalPlacement = VTop+ | VCenter -- ^ Only valid for Nodes.+ | VBottom+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot VerticalPlacement where+ unqtDot VTop = char 't'+ unqtDot VCenter = char 'c'+ unqtDot VBottom = char 'b'++instance ParseDot VerticalPlacement where+ parseUnqt = oneOf [ stringRep VTop "t"+ , stringRep VCenter "c"+ , stringRep VBottom "b"+ ]++-- -----------------------------------------------------------------------------++data ScaleType = UniformScale+ | NoScale+ | FillWidth+ | FillHeight+ | FillBoth+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ScaleType where+ unqtDot UniformScale = unqtDot True+ unqtDot NoScale = unqtDot False+ unqtDot FillWidth = text "width"+ unqtDot FillHeight = text "height"+ unqtDot FillBoth = text "both"++instance ParseDot ScaleType where+ parseUnqt = oneOf [ stringRep UniformScale "true"+ , stringRep NoScale "false"+ , stringRep FillWidth "width"+ , stringRep FillHeight "height"+ , stringRep FillBoth "both"+ ]++-- -----------------------------------------------------------------------------++data Justification = JLeft+ | JRight+ | JCenter+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Justification where+ unqtDot JLeft = char 'l'+ unqtDot JRight = char 'r'+ unqtDot JCenter = char 'c'++instance ParseDot Justification where+ parseUnqt = oneOf [ stringRep JLeft "l"+ , stringRep JRight "r"+ , stringRep JCenter "c"+ ]++-- -----------------------------------------------------------------------------++data Ratios = AspectRatio Double+ | FillRatio+ | CompressRatio+ | ExpandRatio+ | AutoRatio+ deriving (Eq, Ord, Show, Read)++instance PrintDot Ratios where+ unqtDot (AspectRatio r) = unqtDot r+ unqtDot FillRatio = text "fill"+ unqtDot CompressRatio = text "compress"+ unqtDot ExpandRatio = text "expand"+ unqtDot AutoRatio = text "auto"++instance ParseDot Ratios where+ parseUnqt = oneOf [ liftM AspectRatio parseUnqt+ , stringRep FillRatio "fill"+ , stringRep CompressRatio "compress"+ , stringRep ExpandRatio "expand"+ , stringRep AutoRatio "auto"+ ]
+ tests/examples/Attributes.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Attributes.hs.parser.golden view
file too large to diff
+ tests/examples/Attributes.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Attributes.hs.prettyprinter.golden view
@@ -0,0 +1,1718 @@+module Data.GraphViz.Attributes+ (Attribute(..), Attributes, usedByGraphs, usedBySubGraphs,+ usedByClusters, usedByNodes, usedByEdges, EscString, URL(..),+ ArrowType(..), AspectType(..), Rect(..), ClusterMode(..),+ DirType(..), DEConstraints(..), DPoint(..), ModeType(..),+ Model(..), Label(..), Point(..), Overlap(..), LayerRange(..),+ LayerID(..), LayerList(..), OutputMode(..), Pack(..), PackMode(..),+ Pos(..), EdgeType(..), PageDir(..), Spline(..), QuadType(..),+ Root(..), RankType(..), RankDir(..), Shape(..), SmoothType(..),+ StartType(..), STStyle(..), StyleItem(..), StyleName(..),+ PortPos(..), CompassPoint(..), ViewPort(..), FocusType(..),+ VerticalPlacement(..), ScaleType(..), Justification(..),+ Ratios(..), module Data.GraphViz.Attributes.Colors, ArrowShape(..),+ ArrowModifier(..), ArrowFill(..), ArrowSide(..), box, crow,+ diamond, dotArrow, inv, noArrow, normal, tee, vee, oDot, invDot,+ invODot, oBox, oDiamond, eDiamond, openArr, halfOpen, emptyArr,+ invEmpty, noMods, openMod, defLayerSep, notLayerSep)+ where+import Data.GraphViz.Attributes.Colors+import Data.GraphViz.Util+import Data.GraphViz.Parsing+import Data.GraphViz.Printing+import Data.Char (toLower)+import Data.Maybe (isJust)+import Control.Arrow (first)+import Control.Monad (liftM, liftM2)++data Attribute = Damping Double+ | K Double+ | URL URL+ | ArrowHead ArrowType+ | ArrowSize Double+ | ArrowTail ArrowType+ | Aspect AspectType+ | Bb Rect+ | BgColor Color+ | Center Bool+ | Charset String+ | ClusterRank ClusterMode+ | ColorScheme ColorScheme+ | Color [Color]+ | Comment String+ | Compound Bool+ | Concentrate Bool+ | Constraint Bool+ | Decorate Bool+ | DefaultDist Double+ | Dimen Int+ | Dim Int+ | Dir DirType+ | DirEdgeConstraints DEConstraints+ | Distortion Double+ | DPI Double+ | EdgeURL URL+ | EdgeTarget EscString+ | EdgeTooltip EscString+ | Epsilon Double+ | ESep DPoint+ | FillColor Color+ | FixedSize Bool+ | FontColor Color+ | FontName String+ | FontNames String+ | FontPath String+ | FontSize Double+ | Group String+ | HeadURL URL+ | HeadClip Bool+ | HeadLabel Label+ | HeadPort PortPos+ | HeadTarget EscString+ | HeadTooltip EscString+ | Height Double+ | ID Label+ | Image String+ | ImageScale ScaleType+ | LabelURL URL+ | LabelAngle Double+ | LabelDistance Double+ | LabelFloat Bool+ | LabelFontColor Color+ | LabelFontName String+ | LabelFontSize Double+ | LabelJust Justification+ | LabelLoc VerticalPlacement+ | LabelTarget EscString+ | LabelTooltip EscString+ | Label Label+ | Landscape Bool+ | LayerSep String+ | Layers LayerList+ | Layer LayerRange+ | Layout String+ | Len Double+ | LevelsGap Double+ | Levels Int+ | LHead String+ | LPos Point+ | LTail String+ | Margin DPoint+ | MaxIter Int+ | MCLimit Double+ | MinDist Double+ | MinLen Int+ | Model Model+ | Mode ModeType+ | Mosek Bool+ | NodeSep Double+ | NoJustify Bool+ | Normalize Bool+ | Nslimit1 Double+ | Nslimit Double+ | Ordering String+ | Orientation Double+ | OutputOrder OutputMode+ | OverlapScaling Double+ | Overlap Overlap+ | PackMode PackMode+ | Pack Pack+ | Pad DPoint+ | PageDir PageDir+ | Page Point+ | PenColor Color+ | PenWidth Double+ | Peripheries Int+ | Pin Bool+ | Pos Pos+ | QuadTree QuadType+ | Quantum Double+ | RankDir RankDir+ | RankSep Double+ | Rank RankType+ | Ratio Ratios+ | Rects Rect+ | Regular Bool+ | ReMinCross Bool+ | RepulsiveForce Double+ | Root Root+ | Rotate Int+ | SameHead String+ | SameTail String+ | SamplePoints Int+ | SearchSize Int+ | Sep DPoint+ | ShapeFile String+ | Shape Shape+ | ShowBoxes Int+ | Sides Int+ | Size Point+ | Skew Double+ | Smoothing SmoothType+ | SortV Int+ | Splines EdgeType+ | Start StartType+ | StyleSheet String+ | Style [StyleItem]+ | TailURL URL+ | TailClip Bool+ | TailLabel Label+ | TailPort PortPos+ | TailTarget EscString+ | TailTooltip EscString+ | Target EscString+ | Tooltip EscString+ | TrueColor Bool+ | Vertices [Point]+ | ViewPort ViewPort+ | VoroMargin Double+ | Weight Double+ | Width Double+ | Z Double+ deriving (Eq, Ord, Show, Read)++type Attributes = [Attribute]++instance PrintDot Attribute where+ unqtDot (Damping v) = printField "Damping" v+ unqtDot (K v) = printField "K" v+ unqtDot (URL v) = printField "URL" v+ unqtDot (ArrowHead v) = printField "arrowhead" v+ unqtDot (ArrowSize v) = printField "arrowsize" v+ unqtDot (ArrowTail v) = printField "arrowtail" v+ unqtDot (Aspect v) = printField "aspect" v+ unqtDot (Bb v) = printField "bb" v+ unqtDot (BgColor v) = printField "bgcolor" v+ unqtDot (Center v) = printField "center" v+ unqtDot (Charset v) = printField "charset" v+ unqtDot (ClusterRank v) = printField "clusterrank" v+ unqtDot (ColorScheme v) = printField "colorscheme" v+ unqtDot (Color v) = printField "color" v+ unqtDot (Comment v) = printField "comment" v+ unqtDot (Compound v) = printField "compound" v+ unqtDot (Concentrate v) = printField "concentrate" v+ unqtDot (Constraint v) = printField "constraint" v+ unqtDot (Decorate v) = printField "decorate" v+ unqtDot (DefaultDist v) = printField "defaultdist" v+ unqtDot (Dimen v) = printField "dimen" v+ unqtDot (Dim v) = printField "dim" v+ unqtDot (Dir v) = printField "dir" v+ unqtDot (DirEdgeConstraints v) = printField "diredgeconstraints" v+ unqtDot (Distortion v) = printField "distortion" v+ unqtDot (DPI v) = printField "dpi" v+ unqtDot (EdgeURL v) = printField "edgeURL" v+ unqtDot (EdgeTarget v) = printField "edgetarget" v+ unqtDot (EdgeTooltip v) = printField "edgetooltip" v+ unqtDot (Epsilon v) = printField "epsilon" v+ unqtDot (ESep v) = printField "esep" v+ unqtDot (FillColor v) = printField "fillcolor" v+ unqtDot (FixedSize v) = printField "fixedsize" v+ unqtDot (FontColor v) = printField "fontcolor" v+ unqtDot (FontName v) = printField "fontname" v+ unqtDot (FontNames v) = printField "fontnames" v+ unqtDot (FontPath v) = printField "fontpath" v+ unqtDot (FontSize v) = printField "fontsize" v+ unqtDot (Group v) = printField "group" v+ unqtDot (HeadURL v) = printField "headURL" v+ unqtDot (HeadClip v) = printField "headclip" v+ unqtDot (HeadLabel v) = printField "headlabel" v+ unqtDot (HeadPort v) = printField "headport" v+ unqtDot (HeadTarget v) = printField "headtarget" v+ unqtDot (HeadTooltip v) = printField "headtooltip" v+ unqtDot (Height v) = printField "height" v+ unqtDot (ID v) = printField "id" v+ unqtDot (Image v) = printField "image" v+ unqtDot (ImageScale v) = printField "imagescale" v+ unqtDot (LabelURL v) = printField "labelURL" v+ unqtDot (LabelAngle v) = printField "labelangle" v+ unqtDot (LabelDistance v) = printField "labeldistance" v+ unqtDot (LabelFloat v) = printField "labelfloat" v+ unqtDot (LabelFontColor v) = printField "labelfontcolor" v+ unqtDot (LabelFontName v) = printField "labelfontname" v+ unqtDot (LabelFontSize v) = printField "labelfontsize" v+ unqtDot (LabelJust v) = printField "labeljust" v+ unqtDot (LabelLoc v) = printField "labelloc" v+ unqtDot (LabelTarget v) = printField "labeltarget" v+ unqtDot (LabelTooltip v) = printField "labeltooltip" v+ unqtDot (Label v) = printField "label" v+ unqtDot (Landscape v) = printField "landscape" v+ unqtDot (LayerSep v) = printField "layersep" v+ unqtDot (Layers v) = printField "layers" v+ unqtDot (Layer v) = printField "layer" v+ unqtDot (Layout v) = printField "layout" v+ unqtDot (Len v) = printField "len" v+ unqtDot (LevelsGap v) = printField "levelsgap" v+ unqtDot (Levels v) = printField "levels" v+ unqtDot (LHead v) = printField "lhead" v+ unqtDot (LPos v) = printField "lp" v+ unqtDot (LTail v) = printField "ltail" v+ unqtDot (Margin v) = printField "margin" v+ unqtDot (MaxIter v) = printField "maxiter" v+ unqtDot (MCLimit v) = printField "mclimit" v+ unqtDot (MinDist v) = printField "mindist" v+ unqtDot (MinLen v) = printField "minlen" v+ unqtDot (Model v) = printField "model" v+ unqtDot (Mode v) = printField "mode" v+ unqtDot (Mosek v) = printField "mosek" v+ unqtDot (NodeSep v) = printField "nodesep" v+ unqtDot (NoJustify v) = printField "nojustify" v+ unqtDot (Normalize v) = printField "normalize" v+ unqtDot (Nslimit1 v) = printField "nslimit1" v+ unqtDot (Nslimit v) = printField "nslimit" v+ unqtDot (Ordering v) = printField "ordering" v+ unqtDot (Orientation v) = printField "orientation" v+ unqtDot (OutputOrder v) = printField "outputorder" v+ unqtDot (OverlapScaling v) = printField "overlap_scaling" v+ unqtDot (Overlap v) = printField "overlap" v+ unqtDot (PackMode v) = printField "packmode" v+ unqtDot (Pack v) = printField "pack" v+ unqtDot (Pad v) = printField "pad" v+ unqtDot (PageDir v) = printField "pagedir" v+ unqtDot (Page v) = printField "page" v+ unqtDot (PenColor v) = printField "pencolor" v+ unqtDot (PenWidth v) = printField "penwidth" v+ unqtDot (Peripheries v) = printField "peripheries" v+ unqtDot (Pin v) = printField "pin" v+ unqtDot (Pos v) = printField "pos" v+ unqtDot (QuadTree v) = printField "quadtree" v+ unqtDot (Quantum v) = printField "quantum" v+ unqtDot (RankDir v) = printField "rankdir" v+ unqtDot (RankSep v) = printField "ranksep" v+ unqtDot (Rank v) = printField "rank" v+ unqtDot (Ratio v) = printField "ratio" v+ unqtDot (Rects v) = printField "rects" v+ unqtDot (Regular v) = printField "regular" v+ unqtDot (ReMinCross v) = printField "remincross" v+ unqtDot (RepulsiveForce v) = printField "repulsiveforce" v+ unqtDot (Root v) = printField "root" v+ unqtDot (Rotate v) = printField "rotate" v+ unqtDot (SameHead v) = printField "samehead" v+ unqtDot (SameTail v) = printField "sametail" v+ unqtDot (SamplePoints v) = printField "samplepoints" v+ unqtDot (SearchSize v) = printField "searchsize" v+ unqtDot (Sep v) = printField "sep" v+ unqtDot (ShapeFile v) = printField "shapefile" v+ unqtDot (Shape v) = printField "shape" v+ unqtDot (ShowBoxes v) = printField "showboxes" v+ unqtDot (Sides v) = printField "sides" v+ unqtDot (Size v) = printField "size" v+ unqtDot (Skew v) = printField "skew" v+ unqtDot (Smoothing v) = printField "smoothing" v+ unqtDot (SortV v) = printField "sortv" v+ unqtDot (Splines v) = printField "splines" v+ unqtDot (Start v) = printField "start" v+ unqtDot (StyleSheet v) = printField "stylesheet" v+ unqtDot (Style v) = printField "style" v+ unqtDot (TailURL v) = printField "tailURL" v+ unqtDot (TailClip v) = printField "tailclip" v+ unqtDot (TailLabel v) = printField "taillabel" v+ unqtDot (TailPort v) = printField "tailport" v+ unqtDot (TailTarget v) = printField "tailtarget" v+ unqtDot (TailTooltip v) = printField "tailtooltip" v+ unqtDot (Target v) = printField "target" v+ unqtDot (Tooltip v) = printField "tooltip" v+ unqtDot (TrueColor v) = printField "truecolor" v+ unqtDot (Vertices v) = printField "vertices" v+ unqtDot (ViewPort v) = printField "viewport" v+ unqtDot (VoroMargin v) = printField "voro_margin" v+ unqtDot (Weight v) = printField "weight" v+ unqtDot (Width v) = printField "width" v+ unqtDot (Z v) = printField "z" v+ listToDot = unqtListToDot++instance ParseDot Attribute where+ parseUnqt+ = oneOf+ [liftM Damping $ parseField "Damping", liftM K $ parseField "K",+ liftM URL $ parseFields ["URL", "href"],+ liftM ArrowHead $ parseField "arrowhead",+ liftM ArrowSize $ parseField "arrowsize",+ liftM ArrowTail $ parseField "arrowtail",+ liftM Aspect $ parseField "aspect", liftM Bb $ parseField "bb",+ liftM BgColor $ parseField "bgcolor",+ liftM Center $ parseFieldBool "center",+ liftM Charset $ parseField "charset",+ liftM ClusterRank $ parseField "clusterrank",+ liftM ColorScheme $ parseField "colorscheme",+ liftM Color $ parseField "color",+ liftM Comment $ parseField "comment",+ liftM Compound $ parseFieldBool "compound",+ liftM Concentrate $ parseFieldBool "concentrate",+ liftM Constraint $ parseFieldBool "constraint",+ liftM Decorate $ parseFieldBool "decorate",+ liftM DefaultDist $ parseField "defaultdist",+ liftM Dimen $ parseField "dimen", liftM Dim $ parseField "dim",+ liftM Dir $ parseField "dir",+ liftM DirEdgeConstraints $+ parseFieldDef EdgeConstraints "diredgeconstraints",+ liftM Distortion $ parseField "distortion",+ liftM DPI $ parseFields ["dpi", "resolution"],+ liftM EdgeURL $ parseFields ["edgeURL", "edgehref"],+ liftM EdgeTarget $ parseField "edgetarget",+ liftM EdgeTooltip $ parseField "edgetooltip",+ liftM Epsilon $ parseField "epsilon",+ liftM ESep $ parseField "esep",+ liftM FillColor $ parseField "fillcolor",+ liftM FixedSize $ parseFieldBool "fixedsize",+ liftM FontColor $ parseField "fontcolor",+ liftM FontName $ parseField "fontname",+ liftM FontNames $ parseField "fontnames",+ liftM FontPath $ parseField "fontpath",+ liftM FontSize $ parseField "fontsize",+ liftM Group $ parseField "group",+ liftM HeadURL $ parseFields ["headURL", "headhref"],+ liftM HeadClip $ parseFieldBool "headclip",+ liftM HeadLabel $ parseField "headlabel",+ liftM HeadPort $ parseField "headport",+ liftM HeadTarget $ parseField "headtarget",+ liftM HeadTooltip $ parseField "headtooltip",+ liftM Height $ parseField "height", liftM ID $ parseField "id",+ liftM Image $ parseField "image",+ liftM ImageScale $ parseFieldDef UniformScale "imagescale",+ liftM LabelURL $ parseFields ["labelURL", "labelhref"],+ liftM LabelAngle $ parseField "labelangle",+ liftM LabelDistance $ parseField "labeldistance",+ liftM LabelFloat $ parseFieldBool "labelfloat",+ liftM LabelFontColor $ parseField "labelfontcolor",+ liftM LabelFontName $ parseField "labelfontname",+ liftM LabelFontSize $ parseField "labelfontsize",+ liftM LabelJust $ parseField "labeljust",+ liftM LabelLoc $ parseField "labelloc",+ liftM LabelTarget $ parseField "labeltarget",+ liftM LabelTooltip $ parseField "labeltooltip",+ liftM Label $ parseField "label",+ liftM Landscape $ parseFieldBool "landscape",+ liftM LayerSep $ parseField "layersep",+ liftM Layers $ parseField "layers",+ liftM Layer $ parseField "layer",+ liftM Layout $ parseField "layout", liftM Len $ parseField "len",+ liftM LevelsGap $ parseField "levelsgap",+ liftM Levels $ parseField "levels",+ liftM LHead $ parseField "lhead", liftM LPos $ parseField "lp",+ liftM LTail $ parseField "ltail",+ liftM Margin $ parseField "margin",+ liftM MaxIter $ parseField "maxiter",+ liftM MCLimit $ parseField "mclimit",+ liftM MinDist $ parseField "mindist",+ liftM MinLen $ parseField "minlen",+ liftM Model $ parseField "model", liftM Mode $ parseField "mode",+ liftM Mosek $ parseFieldBool "mosek",+ liftM NodeSep $ parseField "nodesep",+ liftM NoJustify $ parseFieldBool "nojustify",+ liftM Normalize $ parseFieldBool "normalize",+ liftM Nslimit1 $ parseField "nslimit1",+ liftM Nslimit $ parseField "nslimit",+ liftM Ordering $ parseField "ordering",+ liftM Orientation $ parseField "orientation",+ liftM OutputOrder $ parseField "outputorder",+ liftM OverlapScaling $ parseField "overlap_scaling",+ liftM Overlap $ parseFieldDef KeepOverlaps "overlap",+ liftM PackMode $ parseField "packmode",+ liftM Pack $ parseFieldDef DoPack "pack",+ liftM Pad $ parseField "pad", liftM PageDir $ parseField "pagedir",+ liftM Page $ parseField "page",+ liftM PenColor $ parseField "pencolor",+ liftM PenWidth $ parseField "penwidth",+ liftM Peripheries $ parseField "peripheries",+ liftM Pin $ parseFieldBool "pin", liftM Pos $ parseField "pos",+ liftM QuadTree $ parseFieldDef NormalQT "quadtree",+ liftM Quantum $ parseField "quantum",+ liftM RankDir $ parseField "rankdir",+ liftM RankSep $ parseField "ranksep",+ liftM Rank $ parseField "rank", liftM Ratio $ parseField "ratio",+ liftM Rects $ parseField "rects",+ liftM Regular $ parseFieldBool "regular",+ liftM ReMinCross $ parseFieldBool "remincross",+ liftM RepulsiveForce $ parseField "repulsiveforce",+ liftM Root $ parseFieldDef IsCentral "root",+ liftM Rotate $ parseField "rotate",+ liftM SameHead $ parseField "samehead",+ liftM SameTail $ parseField "sametail",+ liftM SamplePoints $ parseField "samplepoints",+ liftM SearchSize $ parseField "searchsize",+ liftM Sep $ parseField "sep",+ liftM ShapeFile $ parseField "shapefile",+ liftM Shape $ parseField "shape",+ liftM ShowBoxes $ parseField "showboxes",+ liftM Sides $ parseField "sides", liftM Size $ parseField "size",+ liftM Skew $ parseField "skew",+ liftM Smoothing $ parseField "smoothing",+ liftM SortV $ parseField "sortv",+ liftM Splines $ parseFieldDef SplineEdges "splines",+ liftM Start $ parseField "start",+ liftM StyleSheet $ parseField "stylesheet",+ liftM Style $ parseField "style",+ liftM TailURL $ parseFields ["tailURL", "tailhref"],+ liftM TailClip $ parseFieldBool "tailclip",+ liftM TailLabel $ parseField "taillabel",+ liftM TailPort $ parseField "tailport",+ liftM TailTarget $ parseField "tailtarget",+ liftM TailTooltip $ parseField "tailtooltip",+ liftM Target $ parseField "target",+ liftM Tooltip $ parseField "tooltip",+ liftM TrueColor $ parseFieldBool "truecolor",+ liftM Vertices $ parseField "vertices",+ liftM ViewPort $ parseField "viewport",+ liftM VoroMargin $ parseField "voro_margin",+ liftM Weight $ parseField "weight",+ liftM Width $ parseField "width", liftM Z $ parseField "z"]+ parse = parseUnqt+ parseList = parseUnqtList++usedByGraphs :: Attribute -> Bool+usedByGraphs Damping{} = True+usedByGraphs K{} = True+usedByGraphs URL{} = True+usedByGraphs Aspect{} = True+usedByGraphs Bb{} = True+usedByGraphs BgColor{} = True+usedByGraphs Center{} = True+usedByGraphs Charset{} = True+usedByGraphs ClusterRank{} = True+usedByGraphs ColorScheme{} = True+usedByGraphs Comment{} = True+usedByGraphs Compound{} = True+usedByGraphs Concentrate{} = True+usedByGraphs DefaultDist{} = True+usedByGraphs Dimen{} = True+usedByGraphs Dim{} = True+usedByGraphs DirEdgeConstraints{} = True+usedByGraphs DPI{} = True+usedByGraphs Epsilon{} = True+usedByGraphs ESep{} = True+usedByGraphs FontColor{} = True+usedByGraphs FontName{} = True+usedByGraphs FontNames{} = True+usedByGraphs FontPath{} = True+usedByGraphs FontSize{} = True+usedByGraphs ID{} = True+usedByGraphs LabelJust{} = True+usedByGraphs LabelLoc{} = True+usedByGraphs Label{} = True+usedByGraphs Landscape{} = True+usedByGraphs LayerSep{} = True+usedByGraphs Layers{} = True+usedByGraphs Layout{} = True+usedByGraphs LevelsGap{} = True+usedByGraphs Levels{} = True+usedByGraphs LPos{} = True+usedByGraphs Margin{} = True+usedByGraphs MaxIter{} = True+usedByGraphs MCLimit{} = True+usedByGraphs MinDist{} = True+usedByGraphs Model{} = True+usedByGraphs Mode{} = True+usedByGraphs Mosek{} = True+usedByGraphs NodeSep{} = True+usedByGraphs NoJustify{} = True+usedByGraphs Normalize{} = True+usedByGraphs Nslimit1{} = True+usedByGraphs Nslimit{} = True+usedByGraphs Ordering{} = True+usedByGraphs OutputOrder{} = True+usedByGraphs OverlapScaling{} = True+usedByGraphs Overlap{} = True+usedByGraphs PackMode{} = True+usedByGraphs Pack{} = True+usedByGraphs Pad{} = True+usedByGraphs PageDir{} = True+usedByGraphs Page{} = True+usedByGraphs QuadTree{} = True+usedByGraphs Quantum{} = True+usedByGraphs RankDir{} = True+usedByGraphs RankSep{} = True+usedByGraphs Ratio{} = True+usedByGraphs ReMinCross{} = True+usedByGraphs RepulsiveForce{} = True+usedByGraphs Root{} = True+usedByGraphs Rotate{} = True+usedByGraphs SearchSize{} = True+usedByGraphs Sep{} = True+usedByGraphs ShowBoxes{} = True+usedByGraphs Size{} = True+usedByGraphs Smoothing{} = True+usedByGraphs SortV{} = True+usedByGraphs Splines{} = True+usedByGraphs Start{} = True+usedByGraphs StyleSheet{} = True+usedByGraphs Target{} = True+usedByGraphs TrueColor{} = True+usedByGraphs ViewPort{} = True+usedByGraphs VoroMargin{} = True+usedByGraphs _ = False++usedByClusters :: Attribute -> Bool+usedByClusters K{} = True+usedByClusters URL{} = True+usedByClusters BgColor{} = True+usedByClusters ColorScheme{} = True+usedByClusters Color{} = True+usedByClusters FillColor{} = True+usedByClusters FontColor{} = True+usedByClusters FontName{} = True+usedByClusters FontSize{} = True+usedByClusters LabelJust{} = True+usedByClusters LabelLoc{} = True+usedByClusters Label{} = True+usedByClusters LPos{} = True+usedByClusters NoJustify{} = True+usedByClusters PenColor{} = True+usedByClusters PenWidth{} = True+usedByClusters Peripheries{} = True+usedByClusters Rank{} = True+usedByClusters SortV{} = True+usedByClusters Style{} = True+usedByClusters Target{} = True+usedByClusters Tooltip{} = True+usedByClusters _ = False++usedBySubGraphs :: Attribute -> Bool+usedBySubGraphs Rank{} = True+usedBySubGraphs _ = False++usedByNodes :: Attribute -> Bool+usedByNodes URL{} = True+usedByNodes ColorScheme{} = True+usedByNodes Color{} = True+usedByNodes Comment{} = True+usedByNodes Distortion{} = True+usedByNodes FillColor{} = True+usedByNodes FixedSize{} = True+usedByNodes FontColor{} = True+usedByNodes FontName{} = True+usedByNodes FontSize{} = True+usedByNodes Group{} = True+usedByNodes Height{} = True+usedByNodes ID{} = True+usedByNodes Image{} = True+usedByNodes ImageScale{} = True+usedByNodes LabelLoc{} = True+usedByNodes Label{} = True+usedByNodes Layer{} = True+usedByNodes Margin{} = True+usedByNodes NoJustify{} = True+usedByNodes Orientation{} = True+usedByNodes PenWidth{} = True+usedByNodes Peripheries{} = True+usedByNodes Pin{} = True+usedByNodes Pos{} = True+usedByNodes Rects{} = True+usedByNodes Regular{} = True+usedByNodes Root{} = True+usedByNodes SamplePoints{} = True+usedByNodes ShapeFile{} = True+usedByNodes Shape{} = True+usedByNodes ShowBoxes{} = True+usedByNodes Sides{} = True+usedByNodes Skew{} = True+usedByNodes SortV{} = True+usedByNodes Style{} = True+usedByNodes Target{} = True+usedByNodes Tooltip{} = True+usedByNodes Vertices{} = True+usedByNodes Width{} = True+usedByNodes Z{} = True+usedByNodes _ = False++usedByEdges :: Attribute -> Bool+usedByEdges URL{} = True+usedByEdges ArrowHead{} = True+usedByEdges ArrowSize{} = True+usedByEdges ArrowTail{} = True+usedByEdges ColorScheme{} = True+usedByEdges Color{} = True+usedByEdges Comment{} = True+usedByEdges Constraint{} = True+usedByEdges Decorate{} = True+usedByEdges Dir{} = True+usedByEdges EdgeURL{} = True+usedByEdges EdgeTarget{} = True+usedByEdges EdgeTooltip{} = True+usedByEdges FontColor{} = True+usedByEdges FontName{} = True+usedByEdges FontSize{} = True+usedByEdges HeadURL{} = True+usedByEdges HeadClip{} = True+usedByEdges HeadLabel{} = True+usedByEdges HeadPort{} = True+usedByEdges HeadTarget{} = True+usedByEdges HeadTooltip{} = True+usedByEdges ID{} = True+usedByEdges LabelURL{} = True+usedByEdges LabelAngle{} = True+usedByEdges LabelDistance{} = True+usedByEdges LabelFloat{} = True+usedByEdges LabelFontColor{} = True+usedByEdges LabelFontName{} = True+usedByEdges LabelFontSize{} = True+usedByEdges LabelTarget{} = True+usedByEdges LabelTooltip{} = True+usedByEdges Label{} = True+usedByEdges Layer{} = True+usedByEdges Len{} = True+usedByEdges LHead{} = True+usedByEdges LPos{} = True+usedByEdges LTail{} = True+usedByEdges MinLen{} = True+usedByEdges NoJustify{} = True+usedByEdges PenWidth{} = True+usedByEdges Pos{} = True+usedByEdges SameHead{} = True+usedByEdges SameTail{} = True+usedByEdges ShowBoxes{} = True+usedByEdges Style{} = True+usedByEdges TailURL{} = True+usedByEdges TailClip{} = True+usedByEdges TailLabel{} = True+usedByEdges TailPort{} = True+usedByEdges TailTarget{} = True+usedByEdges TailTooltip{} = True+usedByEdges Target{} = True+usedByEdges Tooltip{} = True+usedByEdges Weight{} = True+usedByEdges _ = False++type EscString = String++newtype URL = UStr{urlString :: EscString}+ deriving (Eq, Ord, Show, Read)++instance PrintDot URL where+ unqtDot = wrap (char '<') (char '>') . text . urlString++instance ParseDot URL where+ parseUnqt+ = liftM UStr $+ bracket (character open) (character close)+ (many1 $ satisfy ((/=) close))+ where open = '<'+ close = '>'+ parse = parseUnqt++newtype ArrowType = AType [(ArrowModifier, ArrowShape)]+ deriving (Eq, Ord, Show, Read)++box, crow, diamond, dotArrow, inv, noArrow, normal, tee, vee ::+ ArrowType++oDot, invDot, invODot, oBox, oDiamond :: ArrowType++eDiamond, openArr, halfOpen, emptyArr, invEmpty :: ArrowType+normal = AType [(noMods, Normal)]+inv = AType [(noMods, Inv)]+dotArrow = AType [(noMods, DotArrow)]+invDot = AType [(noMods, Inv), (noMods, DotArrow)]+oDot = AType [(ArrMod OpenArrow BothSides, DotArrow)]+invODot = AType [(noMods, Inv), (openMod, DotArrow)]+noArrow = AType [(noMods, NoArrow)]+tee = AType [(noMods, Tee)]+emptyArr = AType [(openMod, Normal)]+invEmpty = AType [(noMods, Inv), (openMod, Normal)]+diamond = AType [(noMods, Diamond)]+oDiamond = AType [(openMod, Diamond)]+eDiamond = oDiamond+crow = AType [(noMods, Crow)]+box = AType [(noMods, Box)]+oBox = AType [(openMod, Box)]+openArr = vee+halfOpen = AType [(ArrMod FilledArrow LeftSide, Vee)]+vee = AType [(noMods, Vee)]++instance PrintDot ArrowType where+ unqtDot (AType mas) = hcat $ map appMod mas+ where appMod (m, a) = unqtDot m <> unqtDot a++instance ParseDot ArrowType where+ parseUnqt+ = do mas <- many1 $+ do m <- parseUnqt+ a <- parseUnqt+ return (m, a)+ return $ AType mas+ `onFail` specialArrowParse++specialArrowParse :: Parse ArrowType+specialArrowParse+ = oneOf+ [stringRep eDiamond "ediamond", stringRep openArr "open",+ stringRep halfOpen "halfopen", stringRep emptyArr "empty",+ stringRep invEmpty "invempty"]++data ArrowShape = Box+ | Crow+ | Diamond+ | DotArrow+ | Inv+ | NoArrow+ | Normal+ | Tee+ | Vee+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowShape where+ unqtDot Box = unqtDot "box"+ unqtDot Crow = unqtDot "crow"+ unqtDot Diamond = unqtDot "diamond"+ unqtDot DotArrow = unqtDot "dot"+ unqtDot Inv = unqtDot "inv"+ unqtDot NoArrow = unqtDot "none"+ unqtDot Normal = unqtDot "normal"+ unqtDot Tee = unqtDot "tee"+ unqtDot Vee = unqtDot "vee"++instance ParseDot ArrowShape where+ parseUnqt+ = oneOf+ [stringRep Box "box", stringRep Crow "crow",+ stringRep Diamond "diamond", stringRep DotArrow "dot",+ stringRep Inv "inv", stringRep NoArrow "none",+ stringRep Normal "normal", stringRep Tee "tee",+ stringRep Vee "vee"]++data ArrowModifier = ArrMod{arrowFill :: ArrowFill,+ arrowSide :: ArrowSide}+ deriving (Eq, Ord, Show, Read)++noMods :: ArrowModifier+noMods = ArrMod FilledArrow BothSides++openMod :: ArrowModifier+openMod = ArrMod OpenArrow BothSides++instance PrintDot ArrowModifier where+ unqtDot (ArrMod f s) = unqtDot f <> unqtDot s++instance ParseDot ArrowModifier where+ parseUnqt+ = do f <- parseUnqt+ s <- parseUnqt+ return $ ArrMod f s++data ArrowFill = OpenArrow+ | FilledArrow+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowFill where+ unqtDot OpenArrow = char 'o'+ unqtDot FilledArrow = empty++instance ParseDot ArrowFill where+ parseUnqt+ = liftM (bool FilledArrow OpenArrow . isJust) $+ optional (character 'o')+ parse = parseUnqt++data ArrowSide = LeftSide+ | RightSide+ | BothSides+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ArrowSide where+ unqtDot LeftSide = char 'l'+ unqtDot RightSide = char 'r'+ unqtDot BothSides = empty++instance ParseDot ArrowSide where+ parseUnqt+ = liftM getSideType $ optional (oneOf $ map character ['l', 'r'])+ where getSideType+ = maybe BothSides (bool RightSide LeftSide . (==) 'l')+ parse = parseUnqt++data AspectType = RatioOnly Double+ | RatioPassCount Double Int+ deriving (Eq, Ord, Show, Read)++instance PrintDot AspectType where+ unqtDot (RatioOnly r) = unqtDot r+ unqtDot (RatioPassCount r p) = commaDel r p+ toDot at@RatioOnly{} = unqtDot at+ toDot at@RatioPassCount{} = doubleQuotes $ unqtDot at++instance ParseDot AspectType where+ parseUnqt+ = liftM (uncurry RatioPassCount) commaSepUnqt `onFail`+ liftM RatioOnly parseUnqt+ parse+ = quotedParse (liftM (uncurry RatioPassCount) commaSepUnqt)+ `onFail` liftM RatioOnly parse++data Rect = Rect Point Point+ deriving (Eq, Ord, Show, Read)++instance PrintDot Rect where+ unqtDot (Rect p1 p2) = commaDel p1 p2+ toDot = doubleQuotes . unqtDot++instance ParseDot Rect where+ parseUnqt = liftM (uncurry Rect) commaSepUnqt+ parse = quotedParse parseUnqt++data ClusterMode = Local+ | Global+ | NoCluster+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ClusterMode where+ unqtDot Local = unqtDot "local"+ unqtDot Global = unqtDot "global"+ unqtDot NoCluster = unqtDot "none"++instance ParseDot ClusterMode where+ parseUnqt+ = oneOf+ [stringRep Local "local", stringRep Global "global",+ stringRep NoCluster "none"]++data DirType = Forward+ | Back+ | Both+ | NoDir+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DirType where+ unqtDot Forward = unqtDot "forward"+ unqtDot Back = unqtDot "back"+ unqtDot Both = unqtDot "both"+ unqtDot NoDir = unqtDot "none"++instance ParseDot DirType where+ parseUnqt+ = oneOf+ [stringRep Forward "forward", stringRep Back "back",+ stringRep Both "both", stringRep NoDir "none"]++data DEConstraints = EdgeConstraints+ | NoConstraints+ | HierConstraints+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot DEConstraints where+ unqtDot EdgeConstraints = unqtDot True+ unqtDot NoConstraints = unqtDot False+ unqtDot HierConstraints = text "hier"++instance ParseDot DEConstraints where+ parseUnqt+ = liftM (bool NoConstraints EdgeConstraints) parse `onFail`+ stringRep HierConstraints "hier"++data DPoint = DVal Double+ | PVal Point+ deriving (Eq, Ord, Show, Read)++instance PrintDot DPoint where+ unqtDot (DVal d) = unqtDot d+ unqtDot (PVal p) = unqtDot p+ toDot (DVal d) = toDot d+ toDot (PVal p) = toDot p++instance ParseDot DPoint where+ parseUnqt = liftM PVal parseUnqt `onFail` liftM DVal parseUnqt+ parse = liftM PVal parse `onFail` liftM DVal parse++data ModeType = Major+ | KK+ | Hier+ | IpSep+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ModeType where+ unqtDot Major = text "major"+ unqtDot KK = text "KK"+ unqtDot Hier = text "hier"+ unqtDot IpSep = text "ipsep"++instance ParseDot ModeType where+ parseUnqt+ = oneOf+ [stringRep Major "major", stringRep KK "KK", stringRep Hier "hier",+ stringRep IpSep "ipsep"]++data Model = ShortPath+ | SubSet+ | Circuit+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Model where+ unqtDot ShortPath = text "shortpath"+ unqtDot SubSet = text "subset"+ unqtDot Circuit = text "circuit"++instance ParseDot Model where+ parseUnqt+ = oneOf+ [stringRep ShortPath "shortpath", stringRep SubSet "subset",+ stringRep Circuit "circuit"]++data Label = StrLabel EscString+ | URLLabel URL+ deriving (Eq, Ord, Show, Read)++instance PrintDot Label where+ unqtDot (StrLabel s) = unqtDot s+ unqtDot (URLLabel u) = unqtDot u+ toDot (StrLabel s) = toDot s+ toDot (URLLabel u) = toDot u++instance ParseDot Label where+ parseUnqt+ = liftM StrLabel parseUnqt `onFail` liftM URLLabel parseUnqt+ parse = liftM StrLabel parse `onFail` liftM URLLabel parse++data Point = Point Int Int+ | PointD Double Double+ deriving (Eq, Ord, Show, Read)++instance PrintDot Point where+ unqtDot (Point x y) = commaDel x y+ unqtDot (PointD x y) = commaDel x y+ toDot = doubleQuotes . unqtDot+ unqtListToDot = hsep . map unqtDot+ listToDot = doubleQuotes . unqtListToDot++instance ParseDot Point where+ parseUnqt+ = intDblPoint `onFail` liftM (uncurry Point) commaSepUnqt `onFail`+ liftM (uncurry PointD) commaSepUnqt+ where intDblPoint+ = liftM (uncurry PointD . first fI) $+ commaSep' parseUnqt parseStrictFloat+ + fI :: Int -> Double+ fI = fromIntegral+ parse = quotedParse parseUnqt+ parseUnqtList = sepBy1 parseUnqt whitespace++data Overlap = KeepOverlaps+ | RemoveOverlaps+ | ScaleOverlaps+ | ScaleXYOverlaps+ | PrismOverlap (Maybe Int)+ | CompressOverlap+ | VpscOverlap+ | IpsepOverlap+ deriving (Eq, Ord, Show, Read)++instance PrintDot Overlap where+ unqtDot KeepOverlaps = unqtDot True+ unqtDot RemoveOverlaps = unqtDot False+ unqtDot ScaleOverlaps = text "scale"+ unqtDot ScaleXYOverlaps = text "scalexy"+ unqtDot (PrismOverlap i)+ = maybe id (flip (<>) . unqtDot) i $ text "prism"+ unqtDot CompressOverlap = text "compress"+ unqtDot VpscOverlap = text "vpsc"+ unqtDot IpsepOverlap = text "ipsep"++instance ParseDot Overlap where+ parseUnqt+ = oneOf+ [stringRep KeepOverlaps "true", stringRep RemoveOverlaps "false",+ stringRep ScaleXYOverlaps "scalexy",+ stringRep ScaleOverlaps "scale",+ string "prism" >> liftM PrismOverlap (optional parse),+ stringRep CompressOverlap "compress", stringRep VpscOverlap "vpsc",+ stringRep IpsepOverlap "ipsep"]++data LayerRange = LRID LayerID+ | LRS LayerID String LayerID+ deriving (Eq, Ord, Show, Read)++instance PrintDot LayerRange where+ unqtDot (LRID lid) = unqtDot lid+ unqtDot (LRS id1 s id2) = unqtDot id1 <> unqtDot s <> unqtDot id2+ toDot (LRID lid) = toDot lid+ toDot lrs = doubleQuotes $ unqtDot lrs++instance ParseDot LayerRange where+ parseUnqt+ = do id1 <- parseUnqt+ s <- parseLayerSep+ id2 <- parseUnqt+ return $ LRS id1 s id2+ `onFail` liftM LRID parseUnqt+ parse+ = quotedParse+ (do id1 <- parseUnqt+ s <- parseLayerSep+ id2 <- parseUnqt+ return $ LRS id1 s id2)+ `onFail` liftM LRID parse++parseLayerSep :: Parse String+parseLayerSep = many1 . oneOf $ map character defLayerSep++defLayerSep :: [Char]+defLayerSep = [' ', ':', '\t']++parseLayerName :: Parse String+parseLayerName+ = many1 . orQuote $+ satisfy (liftM2 (&&) notLayerSep ((/=) quoteChar))++parseLayerName' :: Parse String+parseLayerName' = stringBlock `onFail` quotedParse parseLayerName++notLayerSep :: Char -> Bool+notLayerSep = flip notElem defLayerSep++data LayerID = AllLayers+ | LRInt Int+ | LRName String+ deriving (Eq, Ord, Show, Read)++instance PrintDot LayerID where+ unqtDot AllLayers = text "all"+ unqtDot (LRInt n) = unqtDot n+ unqtDot (LRName nm) = unqtDot nm+ toDot (LRName nm) = toDot nm+ toDot li = unqtDot li++instance ParseDot LayerID where+ parseUnqt = liftM checkLayerName parseLayerName+ parse+ = oneOf [liftM checkLayerName parseLayerName', liftM LRInt parse]++checkLayerName :: String -> LayerID+checkLayerName str = maybe checkAll LRInt $ stringToInt str+ where checkAll+ = if map toLower str == "all" then AllLayers else LRName str++data LayerList = LL String [(String, String)]+ deriving (Eq, Ord, Show, Read)++instance PrintDot LayerList where+ unqtDot (LL l1 ols) = unqtDot l1 <> hcat (map subLL ols)+ where subLL (s, l) = unqtDot s <> unqtDot l+ toDot (LL l1 []) = toDot l1+ toDot ll = doubleQuotes $ unqtDot ll++instance ParseDot LayerList where+ parseUnqt+ = do l1 <- parseLayerName+ ols <- many $+ do s <- parseLayerSep+ lnm <- parseLayerName+ return (s, lnm)+ return $ LL l1 ols+ parse+ = quotedParse parseUnqt `onFail`+ liftM (flip LL []) (parseLayerName' `onFail` numString)++data OutputMode = BreadthFirst+ | NodesFirst+ | EdgesFirst+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot OutputMode where+ unqtDot BreadthFirst = text "breadthfirst"+ unqtDot NodesFirst = text "nodesfirst"+ unqtDot EdgesFirst = text "edgesfirst"++instance ParseDot OutputMode where+ parseUnqt+ = oneOf+ [stringRep BreadthFirst "breadthfirst",+ stringRep NodesFirst "nodesfirst",+ stringRep EdgesFirst "edgesfirst"]++data Pack = DoPack+ | DontPack+ | PackMargin Int+ deriving (Eq, Ord, Show, Read)++instance PrintDot Pack where+ unqtDot DoPack = unqtDot True+ unqtDot DontPack = unqtDot False+ unqtDot (PackMargin m) = unqtDot m++instance ParseDot Pack where+ parseUnqt+ = oneOf+ [liftM PackMargin parseUnqt, liftM (bool DontPack DoPack) onlyBool]++data PackMode = PackNode+ | PackClust+ | PackGraph+ | PackArray Bool Bool (Maybe Int)+ deriving (Eq, Ord, Show, Read)++instance PrintDot PackMode where+ unqtDot PackNode = text "node"+ unqtDot PackClust = text "clust"+ unqtDot PackGraph = text "graph"+ unqtDot (PackArray c u mi)+ = addNum . isU . isC . isUnder $ text "array"+ where addNum = maybe id (flip (<>) . unqtDot) mi+ isUnder = if c || u then flip (<>) $ char '_' else id+ isC = if c then flip (<>) $ char 'c' else id+ isU = if u then flip (<>) $ char 'u' else id++instance ParseDot PackMode where+ parseUnqt+ = oneOf+ [stringRep PackNode "node", stringRep PackClust "clust",+ stringRep PackGraph "graph",+ do string "array"+ mcu <- optional $+ do character '_'+ many1 $ satisfy isCU+ let c = hasCharacter mcu 'c'+ u = hasCharacter mcu 'u'+ mi <- optional parseUnqt+ return $ PackArray c u mi]+ where hasCharacter ms c = maybe False (elem c) ms+ isCU = flip elem ['c', 'u']++data Pos = PointPos Point+ | SplinePos [Spline]+ deriving (Eq, Ord, Show, Read)++instance PrintDot Pos where+ unqtDot (PointPos p) = unqtDot p+ unqtDot (SplinePos ss) = unqtDot ss+ toDot (PointPos p) = toDot p+ toDot (SplinePos ss) = toDot ss++instance ParseDot Pos where+ parseUnqt+ = do splns <- parseUnqt+ case splns of+ [Spline Nothing Nothing [p]] -> return $ PointPos p+ _ -> return $ SplinePos splns+ parse = quotedParse parseUnqt++data EdgeType = SplineEdges+ | LineEdges+ | NoEdges+ | PolyLine+ | CompoundEdge+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot EdgeType where+ unqtDot SplineEdges = toDot True+ unqtDot LineEdges = toDot False+ unqtDot NoEdges = empty+ unqtDot PolyLine = text "polyline"+ unqtDot CompoundEdge = text "compound"+ toDot NoEdges = doubleQuotes empty+ toDot et = unqtDot et++instance ParseDot EdgeType where+ parseUnqt+ = oneOf+ [liftM (bool LineEdges SplineEdges) parse,+ stringRep SplineEdges "spline", stringRep LineEdges "line",+ stringRep PolyLine "polyline", stringRep CompoundEdge "compound"]+ parse = stringRep NoEdges "\"\"" `onFail` optionalQuoted parseUnqt++data PageDir = Bl+ | Br+ | Tl+ | Tr+ | Rb+ | Rt+ | Lb+ | Lt+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot PageDir where+ unqtDot Bl = text "BL"+ unqtDot Br = text "BR"+ unqtDot Tl = text "TL"+ unqtDot Tr = text "TR"+ unqtDot Rb = text "RB"+ unqtDot Rt = text "RT"+ unqtDot Lb = text "LB"+ unqtDot Lt = text "LT"++instance ParseDot PageDir where+ parseUnqt+ = oneOf+ [stringRep Bl "BL", stringRep Br "BR", stringRep Tl "TL",+ stringRep Tr "TR", stringRep Rb "RB", stringRep Rt "RT",+ stringRep Lb "LB", stringRep Lt "LT"]++data Spline = Spline (Maybe Point) (Maybe Point) [Point]+ deriving (Eq, Ord, Show, Read)++instance PrintDot Spline where+ unqtDot (Spline ms me ps) = addS . addE . hsep $ map unqtDot ps+ where addP t = maybe id ((<+>) . commaDel t)+ addS = addP 's' ms+ addE = addP 'e' me+ toDot = doubleQuotes . unqtDot+ unqtListToDot = hcat . punctuate semi . map unqtDot+ listToDot = doubleQuotes . unqtListToDot++instance ParseDot Spline where+ parseUnqt+ = do ms <- parseP 's'+ me <- parseP 'e'+ ps <- sepBy1 parseUnqt whitespace+ return $ Spline ms me ps+ where parseP t+ = optional $+ do character t+ parseComma+ parseUnqt `discard` whitespace+ parse = quotedParse parseUnqt+ parseUnqtList = sepBy1 parseUnqt (character ';')++data QuadType = NormalQT+ | FastQT+ | NoQT+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot QuadType where+ unqtDot NormalQT = text "normal"+ unqtDot FastQT = text "fast"+ unqtDot NoQT = text "none"++instance ParseDot QuadType where+ parseUnqt+ = oneOf+ [stringRep NormalQT "normal", stringRep FastQT "fast",+ stringRep NoQT "none", character '2' >> return FastQT,+ liftM (bool NoQT NormalQT) parse]++data Root = IsCentral+ | NotCentral+ | NodeName String+ deriving (Eq, Ord, Show, Read)++instance PrintDot Root where+ unqtDot IsCentral = unqtDot True+ unqtDot NotCentral = unqtDot False+ unqtDot (NodeName n) = unqtDot n+ toDot (NodeName n) = toDot n+ toDot r = unqtDot r++instance ParseDot Root where+ parseUnqt+ = liftM (bool NotCentral IsCentral) onlyBool `onFail`+ liftM NodeName parseUnqt+ parse+ = optionalQuoted (liftM (bool NotCentral IsCentral) onlyBool)+ `onFail` liftM NodeName parse++data RankType = SameRank+ | MinRank+ | SourceRank+ | MaxRank+ | SinkRank+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankType where+ unqtDot SameRank = text "same"+ unqtDot MinRank = text "min"+ unqtDot SourceRank = text "source"+ unqtDot MaxRank = text "max"+ unqtDot SinkRank = text "sink"++instance ParseDot RankType where+ parseUnqt+ = oneOf+ [stringRep SameRank "same", stringRep MinRank "min",+ stringRep SourceRank "source", stringRep MaxRank "max",+ stringRep SinkRank "sink"]++data RankDir = FromTop+ | FromLeft+ | FromBottom+ | FromRight+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot RankDir where+ unqtDot FromTop = text "TB"+ unqtDot FromLeft = text "LR"+ unqtDot FromBottom = text "BT"+ unqtDot FromRight = text "RL"++instance ParseDot RankDir where+ parseUnqt+ = oneOf+ [stringRep FromTop "TB", stringRep FromLeft "LR",+ stringRep FromBottom "BT", stringRep FromRight "RL"]++data Shape = BoxShape+ | Polygon+ | Ellipse+ | Circle+ | PointShape+ | Egg+ | Triangle+ | PlainText+ | DiamondShape+ | Trapezium+ | Parallelogram+ | House+ | Pentagon+ | Hexagon+ | Septagon+ | Octagon+ | DoubleCircle+ | DoubleOctagon+ | TripleOctagon+ | InvTriangle+ | InvTrapezium+ | InvHouse+ | MDiamond+ | MSquare+ | MCircle+ | Note+ | Tab+ | Folder+ | Box3D+ | Component+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Shape where+ unqtDot BoxShape = text "box"+ unqtDot Polygon = text "polygon"+ unqtDot Ellipse = text "ellipse"+ unqtDot Circle = text "circle"+ unqtDot PointShape = text "point"+ unqtDot Egg = text "egg"+ unqtDot Triangle = text "triangle"+ unqtDot PlainText = text "plaintext"+ unqtDot DiamondShape = text "diamond"+ unqtDot Trapezium = text "trapezium"+ unqtDot Parallelogram = text "parallelogram"+ unqtDot House = text "house"+ unqtDot Pentagon = text "pentagon"+ unqtDot Hexagon = text "hexagon"+ unqtDot Septagon = text "septagon"+ unqtDot Octagon = text "octagon"+ unqtDot DoubleCircle = text "doublecircle"+ unqtDot DoubleOctagon = text "doubleoctagon"+ unqtDot TripleOctagon = text "tripleoctagon"+ unqtDot InvTriangle = text "invtriangle"+ unqtDot InvTrapezium = text "invtrapezium"+ unqtDot InvHouse = text "invhouse"+ unqtDot MDiamond = text "Mdiamond"+ unqtDot MSquare = text "Msquare"+ unqtDot MCircle = text "Mcircle"+ unqtDot Note = text "note"+ unqtDot Tab = text "tab"+ unqtDot Folder = text "folder"+ unqtDot Box3D = text "box3d"+ unqtDot Component = text "component"++instance ParseDot Shape where+ parseUnqt+ = oneOf+ [stringRep Box3D "box3d",+ stringReps BoxShape ["box", "rectangle", "rect"],+ stringRep Polygon "polygon", stringRep Ellipse "ellipse",+ stringRep Circle "circle", stringRep PointShape "point",+ stringRep Egg "egg", stringRep Triangle "triangle",+ stringReps PlainText ["plaintext", "none"],+ stringRep DiamondShape "diamond", stringRep Trapezium "trapezium",+ stringRep Parallelogram "parallelogram", stringRep House "house",+ stringRep Pentagon "pentagon", stringRep Hexagon "hexagon",+ stringRep Septagon "septagon", stringRep Octagon "octagon",+ stringRep DoubleCircle "doublecircle",+ stringRep DoubleOctagon "doubleoctagon",+ stringRep TripleOctagon "tripleoctagon",+ stringRep InvTriangle "invtriangle",+ stringRep InvTrapezium "invtrapezium",+ stringRep InvHouse "invhouse", stringRep MDiamond "Mdiamond",+ stringRep MSquare "Msquare", stringRep MCircle "Mcircle",+ stringRep Note "note", stringRep Tab "tab",+ stringRep Folder "folder", stringRep Component "component"]++data SmoothType = NoSmooth+ | AvgDist+ | GraphDist+ | PowerDist+ | RNG+ | Spring+ | TriangleSmooth+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot SmoothType where+ unqtDot NoSmooth = text "none"+ unqtDot AvgDist = text "avg_dist"+ unqtDot GraphDist = text "graph_dist"+ unqtDot PowerDist = text "power_dist"+ unqtDot RNG = text "rng"+ unqtDot Spring = text "spring"+ unqtDot TriangleSmooth = text "triangle"++instance ParseDot SmoothType where+ parseUnqt+ = oneOf+ [stringRep NoSmooth "none", stringRep AvgDist "avg_dist",+ stringRep GraphDist "graph_dist", stringRep PowerDist "power_dist",+ stringRep RNG "rng", stringRep Spring "spring",+ stringRep TriangleSmooth "triangle"]++data StartType = StartStyle STStyle+ | StartSeed Int+ | StartStyleSeed STStyle Int+ deriving (Eq, Ord, Show, Read)++instance PrintDot StartType where+ unqtDot (StartStyle ss) = unqtDot ss+ unqtDot (StartSeed s) = unqtDot s+ unqtDot (StartStyleSeed ss s) = unqtDot ss <> unqtDot s++instance ParseDot StartType where+ parseUnqt+ = oneOf+ [do ss <- parseUnqt+ s <- parseUnqt+ return $ StartStyleSeed ss s,+ liftM StartStyle parseUnqt, liftM StartSeed parseUnqt]++data STStyle = RegularStyle+ | SelfStyle+ | RandomStyle+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot STStyle where+ unqtDot RegularStyle = text "regular"+ unqtDot SelfStyle = text "self"+ unqtDot RandomStyle = text "random"++instance ParseDot STStyle where+ parseUnqt+ = oneOf+ [stringRep RegularStyle "regular", stringRep SelfStyle "self",+ stringRep RandomStyle "random"]++data StyleItem = SItem StyleName [String]+ deriving (Eq, Ord, Show, Read)++instance PrintDot StyleItem where+ unqtDot (SItem nm args)+ | null args = dnm+ | otherwise = dnm <> parens args'+ where dnm = unqtDot nm+ args' = hcat . punctuate comma $ map unqtDot args+ toDot si@(SItem nm args)+ | null args = toDot nm+ | otherwise = doubleQuotes $ unqtDot si+ unqtListToDot = hcat . punctuate comma . map unqtDot+ listToDot [SItem nm []] = toDot nm+ listToDot sis = doubleQuotes $ unqtListToDot sis++instance ParseDot StyleItem where+ parseUnqt+ = do nm <- parseUnqt+ args <- tryParseList' parseArgs+ return $ SItem nm args+ parse+ = quotedParse (liftM2 SItem parseUnqt parseArgs) `onFail`+ liftM (flip SItem []) parse+ parseUnqtList = sepBy1 parseUnqt parseComma+ parseList = quotedParse parseUnqtList `onFail` liftM return parse++parseArgs :: Parse [String]+parseArgs+ = bracketSep (character '(') parseComma (character ')')+ parseStyleName++data StyleName = Dashed+ | Dotted+ | Solid+ | Bold+ | Invisible+ | Filled+ | Diagonals+ | Rounded+ | DD String+ deriving (Eq, Ord, Show, Read)++instance PrintDot StyleName where+ unqtDot Dashed = text "dashed"+ unqtDot Dotted = text "dotted"+ unqtDot Solid = text "solid"+ unqtDot Bold = text "bold"+ unqtDot Invisible = text "invis"+ unqtDot Filled = text "filled"+ unqtDot Diagonals = text "diagonals"+ unqtDot Rounded = text "rounded"+ unqtDot (DD nm) = unqtDot nm+ toDot (DD nm) = toDot nm+ toDot sn = unqtDot sn++instance ParseDot StyleName where+ parseUnqt = liftM checkDD parseStyleName+ parse+ = liftM checkDD $+ quotedParse parseStyleName `onFail`+ do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ', ']']+ r <- many (orQuote $ noneOf [quoteChar, '(', ')', ',', ']'])+ return $ f : r++checkDD :: String -> StyleName+checkDD str+ = case map toLower str of+ "dashed" -> Dashed+ "dotted" -> Dotted+ "solid" -> Solid+ "bold" -> Bold+ "invis" -> Invisible+ "filled" -> Filled+ "diagonals" -> Diagonals+ "rounded" -> Rounded+ _ -> DD str++parseStyleName :: Parse String+parseStyleName+ = do f <- orQuote $ noneOf [quoteChar, '(', ')', ',', ' ']+ r <- many (orQuote $ noneOf [quoteChar, '(', ')', ','])+ return $ f : r++newtype PortPos = PP CompassPoint+ deriving (Eq, Ord, Show, Read)++instance PrintDot PortPos where+ unqtDot (PP cp) = unqtDot cp+ toDot (PP cp) = toDot cp++instance ParseDot PortPos where+ parseUnqt = liftM PP parseUnqt++data CompassPoint = North+ | NorthEast+ | East+ | SouthEast+ | South+ | SouthWest+ | West+ | NorthWest+ | CenterPoint+ | NoCP+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot CompassPoint where+ unqtDot NorthEast = text "ne"+ unqtDot NorthWest = text "nw"+ unqtDot North = text "n"+ unqtDot East = text "e"+ unqtDot SouthEast = text "se"+ unqtDot SouthWest = text "sw"+ unqtDot South = text "s"+ unqtDot West = text "w"+ unqtDot CenterPoint = text "c"+ unqtDot NoCP = text "_"++instance ParseDot CompassPoint where+ parseUnqt+ = oneOf+ [stringRep NorthEast "ne", stringRep NorthWest "nw",+ stringRep North "n", stringRep SouthEast "se",+ stringRep SouthWest "sw", stringRep South "s", stringRep East "e",+ stringRep West "w", stringRep CenterPoint "c", stringRep NoCP "_"]++data ViewPort = VP{wVal :: Double, hVal :: Double, zVal :: Double,+ focus :: Maybe FocusType}+ deriving (Eq, Ord, Show, Read)++instance PrintDot ViewPort where+ unqtDot vp = maybe vs ((<>) (vs <> comma) . unqtDot) $ focus vp+ where vs+ = hcat . punctuate comma $+ map (unqtDot . flip ($) vp) [wVal, hVal, zVal]+ toDot = doubleQuotes . unqtDot++instance ParseDot ViewPort where+ parseUnqt+ = do wv <- parseUnqt+ parseComma+ hv <- parseUnqt+ parseComma+ zv <- parseUnqt+ mf <- optional $ parseComma >> parseUnqt+ return $ VP wv hv zv mf+ parse = quotedParse parseUnqt++data FocusType = XY Point+ | NodeFocus String+ deriving (Eq, Ord, Show, Read)++instance PrintDot FocusType where+ unqtDot (XY p) = unqtDot p+ unqtDot (NodeFocus nm) = unqtDot nm+ toDot (XY p) = toDot p+ toDot (NodeFocus nm) = toDot nm++instance ParseDot FocusType where+ parseUnqt = liftM XY parseUnqt `onFail` liftM NodeFocus parseUnqt+ parse = liftM XY parse `onFail` liftM NodeFocus parse++data VerticalPlacement = VTop+ | VCenter+ | VBottom+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot VerticalPlacement where+ unqtDot VTop = char 't'+ unqtDot VCenter = char 'c'+ unqtDot VBottom = char 'b'++instance ParseDot VerticalPlacement where+ parseUnqt+ = oneOf+ [stringRep VTop "t", stringRep VCenter "c", stringRep VBottom "b"]++data ScaleType = UniformScale+ | NoScale+ | FillWidth+ | FillHeight+ | FillBoth+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot ScaleType where+ unqtDot UniformScale = unqtDot True+ unqtDot NoScale = unqtDot False+ unqtDot FillWidth = text "width"+ unqtDot FillHeight = text "height"+ unqtDot FillBoth = text "both"++instance ParseDot ScaleType where+ parseUnqt+ = oneOf+ [stringRep UniformScale "true", stringRep NoScale "false",+ stringRep FillWidth "width", stringRep FillHeight "height",+ stringRep FillBoth "both"]++data Justification = JLeft+ | JRight+ | JCenter+ deriving (Eq, Ord, Bounded, Enum, Show, Read)++instance PrintDot Justification where+ unqtDot JLeft = char 'l'+ unqtDot JRight = char 'r'+ unqtDot JCenter = char 'c'++instance ParseDot Justification where+ parseUnqt+ = oneOf+ [stringRep JLeft "l", stringRep JRight "r", stringRep JCenter "c"]++data Ratios = AspectRatio Double+ | FillRatio+ | CompressRatio+ | ExpandRatio+ | AutoRatio+ deriving (Eq, Ord, Show, Read)++instance PrintDot Ratios where+ unqtDot (AspectRatio r) = unqtDot r+ unqtDot FillRatio = text "fill"+ unqtDot CompressRatio = text "compress"+ unqtDot ExpandRatio = text "expand"+ unqtDot AutoRatio = text "auto"++instance ParseDot Ratios where+ parseUnqt+ = oneOf+ [liftM AspectRatio parseUnqt, stringRep FillRatio "fill",+ stringRep CompressRatio "compress", stringRep ExpandRatio "expand",+ stringRep AutoRatio "auto"]
+ tests/examples/BadStringLineBreak.hs view
@@ -0,0 +1,5 @@+module BadStringLineBreak where++main = print $ "hello" ++ "world+-- any random junk that goes here gets added onto the character count+-- and the quote ends it with some garbage "
+ tests/examples/BadStringLineBreak.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27) "Improperly terminated string"
+ tests/examples/BadStringLineBreak.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27)+ "Improperly terminated string"
+ tests/examples/BadStringLineBreak.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27) "Improperly terminated string"
+ tests/examples/BadStringLineBreak.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BadStringLineBreak.hs" 3 27) "Improperly terminated string"
+ tests/examples/BangPatterns.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE BangPatterns #-}+module BangPatterns where++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+ | n >= m = return n+ | otherwise = do w <- peekElemOff ptr n+ if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n
+ tests/examples/BangPatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangPatterns.hs.parser.golden view
@@ -0,0 +1,768 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 1 1 1 1+ , SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 1+ , SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 1+ , SrcSpan "tests/examples/BangPatterns.hs" 4 1 4 1+ , SrcSpan "tests/examples/BangPatterns.hs" 5 1 5 1+ , SrcSpan "tests/examples/BangPatterns.hs" 9 1 9 1+ , SrcSpan "tests/examples/BangPatterns.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 2 1 2 7+ , SrcSpan "tests/examples/BangPatterns.hs" 2 21 2 26+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 2 8 2 20+ , srcInfoPoints = []+ }+ "BangPatterns")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 1 1 1 13+ , SrcSpan "tests/examples/BangPatterns.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "BangPatterns"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 1 4 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 4 15 4 17 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 1 4 14+ , srcInfoPoints = []+ }+ "firstnonspace"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 4 28 4 30 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 18 4 21+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 22 4 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 22 4 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 22 4 27+ , srcInfoPoints = []+ }+ "Word8"))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 4 35 4 37 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 31 4 34+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 4 42 4 44 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 38 4 41+ , srcInfoPoints = []+ }+ "Int")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 51+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 45 4 47+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 48 4 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 48 4 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 4 48 4 51+ , srcInfoPoints = []+ }+ "Int")))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 1 8 84+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 1 8 84+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 1 5 14+ , srcInfoPoints = []+ }+ "firstnonspace")+ [ PBangPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 15 5 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ "ptr"))+ , PBangPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 20 5 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ "n"))+ , PBangPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 23 5 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 24 5 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 5 24 5 25+ , srcInfoPoints = []+ }+ "m"))+ ]+ (GuardedRhss+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 5 8 84+ , srcInfoPoints = []+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 5 6 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 6 5 6 6+ , SrcSpan "tests/examples/BangPatterns.hs" 6 17 6 18+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 13+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ ">=")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ "m"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 6 19 6 25+ , srcInfoPoints = []+ }+ "return")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ "n"))))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 5 8 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 7 5 7 6+ , SrcSpan "tests/examples/BangPatterns.hs" 7 17 7 18+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 7 7 16+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 19 8 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 7 19 7 21+ , SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 22+ , SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 22+ , SrcSpan "tests/examples/BangPatterns.hs" 9 1 9 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 7 24 7 26 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 22 7 23+ , srcInfoPoints = []+ }+ "w"))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 44+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 27 7 38+ , srcInfoPoints = []+ }+ "peekElemOff")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 39 7 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 39 7 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 39 7 42+ , srcInfoPoints = []+ }+ "ptr"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 43 7 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 43 7 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 7 43 7 44+ , srcInfoPoints = []+ }+ "n"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 24+ , SrcSpan "tests/examples/BangPatterns.hs" 8 40 8 44+ , SrcSpan "tests/examples/BangPatterns.hs" 8 71 8 75+ ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 8 22 8 24+ , SrcSpan "tests/examples/BangPatterns.hs" 8 40 8 44+ , SrcSpan "tests/examples/BangPatterns.hs" 8 71 8 75+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 25 8 37+ , srcInfoPoints = []+ }+ "isSpaceWord8")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 38 8 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 38 8 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 38 8 39+ , srcInfoPoints = []+ }+ "w"))))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 70+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 68+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 62+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 45 8 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 45 8 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 45 8 58+ , srcInfoPoints = []+ }+ "firstnonspace")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 59 8 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 59 8 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 59 8 62+ , srcInfoPoints = []+ }+ "ptr"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 63 8 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangPatterns.hs" 8 63 8 64+ , SrcSpan "tests/examples/BangPatterns.hs" 8 67 8 68+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 64 8 67+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 64 8 65+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 64 8 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs"+ 8+ 64+ 8+ 65+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 65 8 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 65 8 66+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs"+ 8+ 65+ 8+ 66+ , srcInfoPoints = []+ }+ "+")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 66 8 67+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BangPatterns.hs" 8 66 8 67+ , srcInfoPoints = []+ }+ 1+ "1")))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 69 8 70+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 69 8 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 69 8 70+ , srcInfoPoints = []+ }+ "m"))))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 84+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 82+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 82+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 76 8 82+ , srcInfoPoints = []+ }+ "return")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 83 8 84+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 83 8 84+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BangPatterns.hs" 8 83 8 84+ , srcInfoPoints = []+ }+ "n")))))+ ])+ ])+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/BangPatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangPatterns.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE BangPatterns #-}+module BangPatterns where++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+ | n >= m = return n+ | otherwise =+ do w <- peekElemOff ptr n+ if isSpaceWord8 w then firstnonspace ptr (n + 1) m else return n
+ tests/examples/BangViewPat.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE BangPatterns, ViewPatterns #-}+someFun (id -> !arg) = undefined
+ tests/examples/BangViewPat.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangViewPat.hs.parser.golden view
@@ -0,0 +1,129 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangViewPat.hs" 1 1 1 1+ , SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 1+ , SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 1+ , SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 1+ , SrcSpan "tests/examples/BangViewPat.hs" 3 1 3 1+ , SrcSpan "tests/examples/BangViewPat.hs" 3 1 3 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 1 1 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangViewPat.hs" 1 1 1 13+ , SrcSpan "tests/examples/BangViewPat.hs" 1 26 1 27+ , SrcSpan "tests/examples/BangViewPat.hs" 1 41 1 44+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "BangPatterns"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 1 28 1 40+ , srcInfoPoints = []+ }+ "ViewPatterns"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 33+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 1 2 8+ , srcInfoPoints = []+ }+ "someFun")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 9 2 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangViewPat.hs" 2 9 2 10+ , SrcSpan "tests/examples/BangViewPat.hs" 2 20 2 21+ ]+ }+ (PViewPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangViewPat.hs" 2 13 2 15 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 10 2 12+ , srcInfoPoints = []+ }+ "id")))+ (PBangPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 16 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangViewPat.hs" 2 16 2 17 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 17 2 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 17 2 20+ , srcInfoPoints = []+ }+ "arg"))))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 22 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BangViewPat.hs" 2 22 2 23 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 24 2 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 24 2 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BangViewPat.hs" 2 24 2 33+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/BangViewPat.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BangViewPat.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE BangPatterns, ViewPatterns #-}+someFun (id -> !arg) = undefined
+ tests/examples/BinaryLiteralsBad.hs view
@@ -0,0 +1,4 @@+-- Missing binary literals extension. Should fail.+f :: Int -> ()+f 0b0 = ()+f _ = ()
+ tests/examples/BinaryLiteralsBad.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1) "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsBad.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1)+ "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsBad.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1) "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsBad.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/BinaryLiteralsBad.hs" 3 1) "arity mismatch for 'f'"
+ tests/examples/BinaryLiteralsGood.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE BinaryLiterals #-}+{-# LANGUAGE MagicHash #-}++import GHC.Types++main = do+ print [ I# 0b0#, I# -0b0#, I# 0b1#, I# -0b1#+ , I# 0b00000000000000000000000000000000000000000000000000000000000000000000000000001#+ , I# -0b00000000000000000000000000000000000000000000000000000000000000000000000000001#+ , I# -0b11001001#, I# -0b11001001#+ , I# -0b11111111#, I# -0b11111111#+ ]+ print [ W# 0b0##, W# 0b1##, W# 0b11001001##, W# 0b11##, W# 0b11111111##+ , W# 0b00000000000000000000000000000000000000000000000000000000000000000000000000001##+ ]++ print [ 0b0, 0b1, 0b10, 0b11, 0b100, 0b101, 0b110, 0b111 :: Integer+ , -0b0, -0b1, -0b10, -0b11, -0b100, -0b101, -0b110, -0b111+ , 0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111+ , -0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111+ ]++ print [ I8# -0B10000000#, I8# 0B1111111# ]
+ tests/examples/BinaryLiteralsGood.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BinaryLiteralsGood.hs.parser.golden view
@@ -0,0 +1,1539 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 24 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 1 1+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 1 2 1+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 1+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 1+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 1+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 6 1+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 24 1 24 1+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 24 1 24 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 1 1 13+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "BinaryLiterals"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 1 2 13+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 24 2 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 2 14 2 23+ , srcInfoPoints = []+ }+ "MagicHash"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 4 8 4 17+ , srcInfoPoints = []+ }+ "GHC.Types"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 23 47+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 6 23 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 6 6 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 8 23 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 6 8 6 10+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 5+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 5+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 5+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 5+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 24 1 24 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 12 12+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 12 12+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 5 7 10+ , srcInfoPoints = []+ }+ "print")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 11 12 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 11 7 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 20 7 21+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 30 7 31+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 39 7 40+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 11 8 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 11 9 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 11 10 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 28 10 29+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 11 11 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 28 11 29+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 12 11 12 12+ ]+ }+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 13 7 20+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 13 7 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 13 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 7 13 7 15+ , srcInfoPoints = []+ }+ "I#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 16 7 20+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 16 7 20+ , srcInfoPoints = []+ }+ 0+ "0b0"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 22 7 30+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 22 7 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 22 7 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 7 22 7 24+ , srcInfoPoints = []+ }+ "I#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 26 7 30+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 26 7 30+ , srcInfoPoints = []+ }+ 0+ "0b0"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 32 7 39+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 32 7 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 32 7 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 7 32 7 34+ , srcInfoPoints = []+ }+ "I#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 35 7 39+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 35 7 39+ , srcInfoPoints = []+ }+ 1+ "0b1"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 41 7 49+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 41 7 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 41 7 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 7 41 7 43+ , srcInfoPoints = []+ }+ "I#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 44 7 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 44 7 45+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 7 44 7 45+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 45 7 49+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 7 45 7 49+ , srcInfoPoints = []+ }+ 1+ "0b1"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 13 8 96+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 13 8 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 13 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 8 13 8 15+ , srcInfoPoints = []+ }+ "I#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 16 8 96+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 8 16 8 96+ , srcInfoPoints = []+ }+ 1+ "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 13 9 97+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ "I#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 17 9 97+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 9 17 9 97+ , srcInfoPoints = []+ }+ 1+ "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 13 10 28+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 13 10 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 13 10 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 10 13 10 15+ , srcInfoPoints = []+ }+ "I#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 16 10 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 16 10 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 10 16 10 17+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 17 10 28+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 17 10 28+ , srcInfoPoints = []+ }+ 201+ "0b11001001"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 30 10 45+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 30 10 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 30 10 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 10 30 10 32+ , srcInfoPoints = []+ }+ "I#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 33 10 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 33 10 34+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 10 33 10 34+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 34 10 45+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 10 34 10 45+ , srcInfoPoints = []+ }+ 201+ "0b11001001"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 13 11 28+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 13 11 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 13 11 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 11 13 11 15+ , srcInfoPoints = []+ }+ "I#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 16 11 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 16 11 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 11 16 11 17+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 17 11 28+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 17 11 28+ , srcInfoPoints = []+ }+ 255+ "0b11111111"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 30 11 45+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 30 11 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 30 11 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 11 30 11 32+ , srcInfoPoints = []+ }+ "I#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 33 11 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 33 11 34+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 11 33 11 34+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 34 11 45+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 11 34 11 45+ , srcInfoPoints = []+ }+ 255+ "0b11111111"))+ ]))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 15 12+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 15 12+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 5 13 10+ , srcInfoPoints = []+ }+ "print")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 11 15 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 11 13 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 21 13 22+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 31 13 32+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 48 13 49+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 59 13 60+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 11 14 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 15 11 15 12+ ]+ }+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 13 13 21+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 13 13 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 13 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 13 13 13 15+ , srcInfoPoints = []+ }+ "W#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 16 13 21+ , srcInfoPoints = []+ }+ (PrimWord+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 16 13 21+ , srcInfoPoints = []+ }+ 0+ "0b0"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 23 13 31+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 23 13 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 23 13 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 13 23 13 25+ , srcInfoPoints = []+ }+ "W#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 26 13 31+ , srcInfoPoints = []+ }+ (PrimWord+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 26 13 31+ , srcInfoPoints = []+ }+ 1+ "0b1"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 33 13 48+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 33 13 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 33 13 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 13 33 13 35+ , srcInfoPoints = []+ }+ "W#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 36 13 48+ , srcInfoPoints = []+ }+ (PrimWord+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 36 13 48+ , srcInfoPoints = []+ }+ 201+ "0b11001001"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 50 13 59+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 50 13 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 50 13 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 13 50 13 52+ , srcInfoPoints = []+ }+ "W#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 53 13 59+ , srcInfoPoints = []+ }+ (PrimWord+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 53 13 59+ , srcInfoPoints = []+ }+ 3+ "0b11"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 61 13 76+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 61 13 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 61 13 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 13 61 13 63+ , srcInfoPoints = []+ }+ "W#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 64 13 76+ , srcInfoPoints = []+ }+ (PrimWord+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 13 64 13 76+ , srcInfoPoints = []+ }+ 255+ "0b11111111"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 13 14 97+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 13 14 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 13 14 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 14 13 14 15+ , srcInfoPoints = []+ }+ "W#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 16 14 97+ , srcInfoPoints = []+ }+ (PrimWord+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 14 16 14 97+ , srcInfoPoints = []+ }+ 1+ "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))+ ]))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 21 12+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 21 12+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 5 17 10+ , srcInfoPoints = []+ }+ "print")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 11 21 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 11 17 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 16 17 17+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 21 17 22+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 27 17 28+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 33 17 34+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 40 17 41+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 47 17 48+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 54 17 55+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 11 18 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 17 18 18+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 23 18 24+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 30 18 31+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 37 18 38+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 45 18 46+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 53 18 54+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 61 18 62+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 19 11 19 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 11 20 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 21 11 21 12+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 13 17 16+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 13 17 16+ , srcInfoPoints = []+ }+ 0+ "0b0")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 18 17 21+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 18 17 21+ , srcInfoPoints = []+ }+ 1+ "0b1")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ 2+ "0b10")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 29 17 33+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 29 17 33+ , srcInfoPoints = []+ }+ 3+ "0b11")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 35 17 40+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 35 17 40+ , srcInfoPoints = []+ }+ 4+ "0b100")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 42 17 47+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 42 17 47+ , srcInfoPoints = []+ }+ 5+ "0b101")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 49 17 54+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 49 17 54+ , srcInfoPoints = []+ }+ 6+ "0b110")+ , ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 56 17 72+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 62 17 64 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 56 17 61+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 56 17 61+ , srcInfoPoints = []+ }+ 7+ "0b111"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 65 17 72+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 17 65 17 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 17 65 17 72+ , srcInfoPoints = []+ }+ "Integer")))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 13 18 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 13 18 14 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 14 18 17+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 14 18 17+ , srcInfoPoints = []+ }+ 0+ "0b0"))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 19 18 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 19 18 20 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 20 18 23+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 20 18 23+ , srcInfoPoints = []+ }+ 1+ "0b1"))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 25 18 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 25 18 26 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 26 18 30+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 26 18 30+ , srcInfoPoints = []+ }+ 2+ "0b10"))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 32 18 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 32 18 33 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 33 18 37+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 33 18 37+ , srcInfoPoints = []+ }+ 3+ "0b11"))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 39 18 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 39 18 40 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 40 18 45+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 40 18 45+ , srcInfoPoints = []+ }+ 4+ "0b100"))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 47 18 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 47 18 48 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 48 18 53+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 48 18 53+ , srcInfoPoints = []+ }+ 5+ "0b101"))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 55 18 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 55 18 56 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 56 18 61+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 56 18 61+ , srcInfoPoints = []+ }+ 6+ "0b110"))+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 63 18 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 63 18 64 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 64 18 69+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 18 64 18 69+ , srcInfoPoints = []+ }+ 7+ "0b111"))+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 19 13 19 143+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 19 13 19 143+ , srcInfoPoints = []+ }+ 340282366920938463463374607431768211455+ "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")+ , NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 13 20 144+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 13 20 14 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 20 14 20 144+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 20 14 20 144+ , srcInfoPoints = []+ }+ 340282366920938463463374607431768211455+ "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"))+ ]))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 47+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 47+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 5 23 10+ , srcInfoPoints = []+ }+ "print")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 11 23 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 11 23 12+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 29 23 30+ , SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 46 23 47+ ]+ }+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 13 23 29+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 13 23 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 13 23 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 23 13 23 16+ , srcInfoPoints = []+ }+ "I8#")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 17 23 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 17 23 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 23 17 23 18+ , srcInfoPoints = []+ }+ "-")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 18 23 29+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 18 23 29+ , srcInfoPoints = []+ }+ 128+ "0B10000000"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 31 23 45+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 31 23 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 31 23 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BinaryLiteralsGood.hs" 23 31 23 34+ , srcInfoPoints = []+ }+ "I8#")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 35 23 45+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BinaryLiteralsGood.hs" 23 35 23 45+ , srcInfoPoints = []+ }+ 127+ "0B1111111"))+ ]))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/BinaryLiteralsGood.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () Nothing [LanguagePragma () [Ident () "BinaryLiterals"],LanguagePragma () [Ident () "MagicHash"]] [ImportDecl {importAnn = (), importModule = ModuleName () "GHC.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing}] [PatBind () (PVar () (Ident () "main")) (UnGuardedRhs () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 0 "0b0")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 0 "0b0")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "0b1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "0b1")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "0b00000000000000000000000000000000000000000000000000000000000000000000000000001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "0b00000000000000000000000000000000000000000000000000000000000000000000000000001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "0b11001001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "0b11001001")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "0b11111111")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "0b11111111"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 0 "0b0")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "0b1")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 201 "0b11001001")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 3 "0b11")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 255 "0b11111111")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "0b00000000000000000000000000000000000000000000000000000000000000000000000000001"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [Lit () (Int () 0 "0b0"),Lit () (Int () 1 "0b1"),Lit () (Int () 2 "0b10"),Lit () (Int () 3 "0b11"),Lit () (Int () 4 "0b100"),Lit () (Int () 5 "0b101"),Lit () (Int () 6 "0b110"),ExpTypeSig () (Lit () (Int () 7 "0b111")) (TyCon () (UnQual () (Ident () "Integer"))),NegApp () (Lit () (Int () 0 "0b0")),NegApp () (Lit () (Int () 1 "0b1")),NegApp () (Lit () (Int () 2 "0b10")),NegApp () (Lit () (Int () 3 "0b11")),NegApp () (Lit () (Int () 4 "0b100")),NegApp () (Lit () (Int () 5 "0b101")),NegApp () (Lit () (Int () 6 "0b110")),NegApp () (Lit () (Int () 7 "0b111")),Lit () (Int () 340282366920938463463374607431768211455 "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"),NegApp () (Lit () (Int () 340282366920938463463374607431768211455 "0b11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [InfixApp () (Con () (UnQual () (Ident () "I8#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 128 "0B10000000")),App () (Con () (UnQual () (Ident () "I8#"))) (Lit () (PrimInt () 127 "0B1111111"))]))])) Nothing]++AST 2:++Module () Nothing [LanguagePragma () [Ident () "BinaryLiterals"],LanguagePragma () [Ident () "MagicHash"]] [ImportDecl {importAnn = (), importModule = ModuleName () "GHC.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing}] [PatBind () (PVar () (Ident () "main")) (UnGuardedRhs () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 0 "0")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 0 "0")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "1")),App () (Con () (UnQual () (Ident () "I#"))) (Lit () (PrimInt () 1 "1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 1 "1")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "201")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 201 "201")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "255")),InfixApp () (Con () (UnQual () (Ident () "I#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 255 "255"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 0 "0")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "1")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 201 "201")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 3 "3")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 255 "255")),App () (Con () (UnQual () (Ident () "W#"))) (Lit () (PrimWord () 1 "1"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [Lit () (Int () 0 "0"),Lit () (Int () 1 "1"),Lit () (Int () 2 "2"),Lit () (Int () 3 "3"),Lit () (Int () 4 "4"),Lit () (Int () 5 "5"),Lit () (Int () 6 "6"),ExpTypeSig () (Lit () (Int () 7 "7")) (TyCon () (UnQual () (Ident () "Integer"))),NegApp () (Lit () (Int () 0 "0")),NegApp () (Lit () (Int () 1 "1")),NegApp () (Lit () (Int () 2 "2")),NegApp () (Lit () (Int () 3 "3")),NegApp () (Lit () (Int () 4 "4")),NegApp () (Lit () (Int () 5 "5")),NegApp () (Lit () (Int () 6 "6")),NegApp () (Lit () (Int () 7 "7")),Lit () (Int () 340282366920938463463374607431768211455 "340282366920938463463374607431768211455"),NegApp () (Lit () (Int () 340282366920938463463374607431768211455 "340282366920938463463374607431768211455"))])),Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (List () [InfixApp () (Con () (UnQual () (Ident () "I8#"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (PrimInt () 128 "128")),App () (Con () (UnQual () (Ident () "I8#"))) (Lit () (PrimInt () 127 "127"))]))])) Nothing]+
+ tests/examples/BinaryLiteralsGood.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE BinaryLiterals #-}+{-# LANGUAGE MagicHash #-}+import GHC.Types+main+ = do print+ [I# 0#, I# - 0#, I# 1#, I# - 1#, I# 1#, I# - 1#, I# - 201#,+ I# - 201#, I# - 255#, I# - 255#]+ print [W# 0##, W# 1##, W# 201##, W# 3##, W# 255##, W# 1##]+ print+ [0, 1, 2, 3, 4, 5, 6, 7 :: Integer, -0, -1, -2, -3, -4, -5, -6, -7,+ 340282366920938463463374607431768211455,+ -340282366920938463463374607431768211455]+ print [I8# - 128#, I8# 127#]
+ tests/examples/BlockArguments.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE BlockArguments #-}+module BlockArguments where++foo = when (x > 0) do+ print x+ exitFailure++bar = withForeignPtr fptr \ptr -> c_memcpy buf ptr size++baz arg1 arg2 arg3 arg4 = initialValue+ & someFunction arg1 arg2+ >>= traverse \(x, y) -> do+ a <- f x+ b <- g y+ h a b+ >>= anotherFunction arg3 arg4
+ tests/examples/BlockArguments.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BlockArguments.hs.parser.golden view
@@ -0,0 +1,1099 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 17 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 1+ , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1+ , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1+ , SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 1+ , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 1+ , SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 1+ , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1+ , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 7+ , SrcSpan "tests/examples/BlockArguments.hs" 2 23 2 28+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 8 2 22+ , srcInfoPoints = []+ }+ "BlockArguments")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 13+ , SrcSpan "tests/examples/BlockArguments.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "BlockArguments"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 6 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 5 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 4 5 4 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 6 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+ , srcInfoPoints = []+ }+ "when")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 13+ , SrcSpan "tests/examples/BlockArguments.hs" 4 18 4 19+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18+ , srcInfoPoints = []+ }+ 0+ "0")))))+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 20 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 4 20 4 22+ , SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 3+ , SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 3+ , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+ , srcInfoPoints = []+ }+ "print")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ "x"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ "exitFailure")))+ ])))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 56+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ "bar"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+ , srcInfoPoints = []+ }+ "withForeignPtr")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+ , srcInfoPoints = []+ }+ "fptr"))))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 28+ , SrcSpan "tests/examples/BlockArguments.hs" 8 32 8 34+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31+ , srcInfoPoints = []+ }+ "ptr")+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 51+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 47+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+ , srcInfoPoints = []+ }+ "c_memcpy")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+ , srcInfoPoints = []+ }+ "buf"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+ , srcInfoPoints = []+ }+ "ptr"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+ , srcInfoPoints = []+ }+ "size")))))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 4+ , srcInfoPoints = []+ }+ "baz")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9+ , srcInfoPoints = []+ }+ "arg1")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14+ , srcInfoPoints = []+ }+ "arg2")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19+ , srcInfoPoints = []+ }+ "arg3")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24+ , srcInfoPoints = []+ }+ "arg4")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 25 16 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 10 25 10 26 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 16 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 11 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+ , srcInfoPoints = []+ }+ "initialValue")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+ , srcInfoPoints = []+ }+ "&")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 29+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+ , srcInfoPoints = []+ }+ "someFunction")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+ , srcInfoPoints = []+ }+ "arg1"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+ , srcInfoPoints = []+ }+ "arg2")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+ , srcInfoPoints = []+ }+ ">>=")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 16 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+ , srcInfoPoints = []+ }+ "traverse")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 16 16 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 12 16 12 17+ , SrcSpan "tests/examples/BlockArguments.hs" 12 24 12 26+ ]+ }+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 18+ , SrcSpan "tests/examples/BlockArguments.hs" 12 19 12 20+ , SrcSpan "tests/examples/BlockArguments.hs" 12 22 12 23+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22+ , srcInfoPoints = []+ }+ "y")+ ]+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 27 16 32+ , srcInfoPoints = []+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 27 15 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 12 27 12 29+ , SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 9+ , SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 9+ , SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 9+ , SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 13 11 13 13 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ "a"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 13 14 13 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 13+ 14+ 13+ 15+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 13+ 16+ 13+ 17+ , srcInfoPoints = []+ }+ "x"))))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 14 11 14 13 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ "b"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 14 14 14 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 14 14 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 14 14 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 14+ 14+ 14+ 15+ , srcInfoPoints = []+ }+ "g")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 16 14 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 16 14 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 14+ 16+ 14+ 17+ , srcInfoPoints = []+ }+ "y"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 9 15 12+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 9+ 15+ 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 9+ 15+ 10+ , srcInfoPoints = []+ }+ "h")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 11+ 15+ 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 11+ 15+ 12+ , srcInfoPoints = []+ }+ "a"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 13 15 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 13 15 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 13+ 15+ 14+ , srcInfoPoints = []+ }+ "b"))))+ ])+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+ , srcInfoPoints = []+ }+ ">>=")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 7 16 22+ , srcInfoPoints = []+ }+ "anotherFunction")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 23 16 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 23 16 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 23 16 27+ , srcInfoPoints = []+ }+ "arg3"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 28 16 32+ , srcInfoPoints = []+ }+ "arg4")))))))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/BlockArguments.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))]))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size"))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4"))))))))) Nothing]]++AST 2:++Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Paren () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))])))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Paren () (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size")))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Paren () (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4")))))))))) Nothing]]+
+ tests/examples/BlockArguments.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# LANGUAGE BlockArguments #-}+module BlockArguments where+foo+ = when (x > 0)+ (do print x+ exitFailure)+bar = withForeignPtr fptr (\ ptr -> c_memcpy buf ptr size)+baz arg1 arg2 arg3 arg4+ = initialValue & someFunction arg1 arg2 >>=+ traverse+ (\ (x, y) ->+ do a <- f x+ b <- g y+ h a b+ >>= anotherFunction arg3 arg4)
+ tests/examples/BracketInstanceHead.hs view
@@ -0,0 +1,1 @@+instance (Bounded a => Bounded [a]) where
+ tests/examples/BracketInstanceHead.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BracketInstanceHead.hs.parser.golden view
@@ -0,0 +1,151 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 1+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 1+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 1+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+ ]+ }+ Nothing+ []+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 2 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 1 1 9+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 37 1 42+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 1 2 1+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 2 0 2 0+ ]+ }+ Nothing+ (IParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 10 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 10 1 11+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 35 1 36+ ]+ }+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 35+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18+ , srcInfoPoints = []+ }+ "Bounded")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 35+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 24 1 31+ , srcInfoPoints = []+ }+ "Bounded")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 32 1 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 32 1 33+ , SrcSpan "tests/examples/BracketInstanceHead.hs" 1 34 1 35+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 33 1 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 33 1 34+ , srcInfoPoints = []+ }+ "a"))))))+ (Just [])+ ]+ , []+ )
+ tests/examples/BracketInstanceHead.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BracketInstanceHead.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+instance (Bounded a => Bounded [a]) where
+ tests/examples/Bug.hs view
@@ -0,0 +1,2 @@+import Test.QuickCheck+-- prop_susShortest = 2 > 1 ==> 1 /= 2
+ tests/examples/Bug.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bug.hs.parser.golden view
@@ -0,0 +1,42 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bug.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bug.hs" 1 1 1 1+ , SrcSpan "tests/examples/Bug.hs" 1 1 1 1+ , SrcSpan "tests/examples/Bug.hs" 1 1 1 1+ , SrcSpan "tests/examples/Bug.hs" 3 1 3 1+ , SrcSpan "tests/examples/Bug.hs" 3 1 3 1+ ]+ }+ Nothing+ []+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bug.hs" 1 1 1 23+ , srcInfoPoints = [ SrcSpan "tests/examples/Bug.hs" 1 1 1 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bug.hs" 1 8 1 23+ , srcInfoPoints = []+ }+ "Test.QuickCheck"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ []+ , [ Comment+ False+ (SrcSpan "tests/examples/Bug.hs" 2 1 2 39)+ " prop_susShortest = 2 > 1 ==> 1 /= 2"+ ]+ )
+ tests/examples/Bug.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bug.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+import Test.QuickCheck
+ tests/examples/Bundles.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE PatternSynonyms #-}+module Bundles(Foo(..), Baz(..,Q), Qux(F,..), Tux(Q,..,F)) where++main = main
+ tests/examples/Bundles.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bundles.hs.parser.golden view
@@ -0,0 +1,252 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 1 1 1 1+ , SrcSpan "tests/examples/Bundles.hs" 2 1 2 1+ , SrcSpan "tests/examples/Bundles.hs" 2 1 2 1+ , SrcSpan "tests/examples/Bundles.hs" 4 1 4 1+ , SrcSpan "tests/examples/Bundles.hs" 5 1 5 1+ , SrcSpan "tests/examples/Bundles.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 1 2 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 2 1 2 7+ , SrcSpan "tests/examples/Bundles.hs" 2 60 2 65+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 8 2 15+ , srcInfoPoints = []+ }+ "Bundles")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 15 2 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 2 15 2 16+ , SrcSpan "tests/examples/Bundles.hs" 2 23 2 24+ , SrcSpan "tests/examples/Bundles.hs" 2 34 2 35+ , SrcSpan "tests/examples/Bundles.hs" 2 45 2 46+ , SrcSpan "tests/examples/Bundles.hs" 2 58 2 59+ ]+ }+ [ EThingWith+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 16 2 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 2 19 2 20+ , SrcSpan "tests/examples/Bundles.hs" 2 22 2 23+ ]+ }+ (EWildcard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 20 2 22+ , srcInfoPoints = []+ }+ 0)+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 16 2 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 16 2 19+ , srcInfoPoints = []+ }+ "Foo"))+ []+ , EThingWith+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 25 2 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 2 28 2 29+ , SrcSpan "tests/examples/Bundles.hs" 2 31 2 32+ , SrcSpan "tests/examples/Bundles.hs" 2 33 2 34+ ]+ }+ (EWildcard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 29 2 31+ , srcInfoPoints = []+ }+ 0)+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 25 2 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 25 2 28+ , srcInfoPoints = []+ }+ "Baz"))+ [ ConName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 32 2 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 32 2 33+ , srcInfoPoints = []+ }+ "Q")+ ]+ , EThingWith+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 36 2 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 2 39 2 40+ , SrcSpan "tests/examples/Bundles.hs" 2 41 2 42+ , SrcSpan "tests/examples/Bundles.hs" 2 44 2 45+ ]+ }+ (EWildcard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 42 2 44+ , srcInfoPoints = []+ }+ 1)+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 36 2 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 36 2 39+ , srcInfoPoints = []+ }+ "Qux"))+ [ ConName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 40 2 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 40 2 41+ , srcInfoPoints = []+ }+ "F")+ ]+ , EThingWith+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 47 2 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 2 50 2 51+ , SrcSpan "tests/examples/Bundles.hs" 2 52 2 53+ , SrcSpan "tests/examples/Bundles.hs" 2 55 2 56+ , SrcSpan "tests/examples/Bundles.hs" 2 57 2 58+ ]+ }+ (EWildcard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 53 2 55+ , srcInfoPoints = []+ }+ 1)+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 47 2 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 47 2 50+ , srcInfoPoints = []+ }+ "Tux"))+ [ ConName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 51 2 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 51 2 52+ , srcInfoPoints = []+ }+ "Q")+ , ConName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 56 2 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 2 56 2 57+ , srcInfoPoints = []+ }+ "F")+ ]+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Bundles.hs" 1 1 1 13+ , SrcSpan "tests/examples/Bundles.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 1 4 12+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 1 4 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 1 4 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 6 4 12+ , srcInfoPoints = [ SrcSpan "tests/examples/Bundles.hs" 4 6 4 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Bundles.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ "main"))))+ Nothing+ ]+ , []+ )
+ tests/examples/Bundles.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Bundles.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE PatternSynonyms #-}+module Bundles (Foo(..), Baz(.., Q), Qux(F, ..), Tux(Q, .., F))+ where+main = main
+ tests/examples/ByteStringUtils.hs view
@@ -0,0 +1,541 @@+{-# LANGUAGE BangPatterns, ForeignFunctionInterface, CPP #-}++-----------------------------------------------------------------------------+-- |+-- Module : ByteStringUtils+-- Copyright : (c) The University of Glasgow 2001,+-- David Roundy 2003-2005+-- License : GPL (I'm happy to also license this file BSD style but don't+-- want to bother distributing two license files with darcs.+--+-- Maintainer : droundy@abridgegame.org+-- Stability : experimental+-- Portability : portable+--+-- GZIp and MMap IO for ByteStrings, and miscellaneous functions for Data.ByteString+--++module ByteStringUtils (++ unsafeWithInternals,+ unpackPSfromUTF8,++ -- IO with mmap or gzip+ gzReadFilePS,+ mmapFilePS,+ gzWriteFilePS,+ gzWriteFilePSs,++ -- list utilities+ ifHeadThenTail,+ dropSpace,+ breakSpace,+ linesPS,+ unlinesPS,+ hashPS,+ breakFirstPS,+ breakLastPS,+ substrPS,+ readIntPS,+ is_funky,+ fromHex2PS,+ fromPS2Hex,+ betweenLinesPS,+ break_after_nth_newline,+ break_before_nth_newline,+ intercalate+ ) where++import Prelude hiding ( catch )+import qualified Data.ByteString as B+import qualified Data.ByteString.Char8 as BC+import qualified Data.ByteString.Internal as BI+import Data.ByteString (intercalate, uncons)+import Data.ByteString.Internal (fromForeignPtr)++-- #if defined (HAVE_MMAP) || ! defined (HAVE_HASKELL_ZLIB)+import Control.Exception ( catch )+-- #endif+import System.IO+import System.IO.Unsafe ( unsafePerformIO )++import Foreign.Storable ( peekElemOff, peek )+import Foreign.Marshal.Alloc ( free )+import Foreign.Marshal.Array ( mallocArray, peekArray, advancePtr )+import Foreign.C.Types ( CInt )++import Data.Bits ( rotateL )+import Data.Char ( chr, ord, isSpace )+import Data.Word ( Word8 )+import Data.Int ( Int32 )+import Control.Monad ( when )++-- #ifndef HAVE_HASKELL_ZLIB+import Foreign.Ptr ( nullPtr )+import Foreign.ForeignPtr ( ForeignPtr )+-- #endif+import Foreign.Ptr ( plusPtr, Ptr )+import Foreign.ForeignPtr ( withForeignPtr )++-- #ifdef DEBUG_PS+import Foreign.ForeignPtr ( addForeignPtrFinalizer )+import Foreign.Ptr ( FunPtr )+-- #endif++-- #if HAVE_HASKELL_ZLIB+import qualified Data.ByteString.Lazy as BL+import qualified Codec.Compression.GZip as GZ+-- #else+import Foreign.C.String ( CString, withCString )+-- #endif++-- #ifdef HAVE_MMAP+import System.IO.MMap( mmapFileByteString )+import System.Mem( performGC )+import System.Posix.Files( fileSize, getSymbolicLinkStatus )+-- #endif++-- -----------------------------------------------------------------------------+-- obsolete debugging code++-- # ifndef HAVE_HASKELL_ZLIB+debugForeignPtr :: ForeignPtr a -> String -> IO ()+-- #ifdef DEBUG_PS+foreign import ccall unsafe "static fpstring.h debug_alloc" debug_alloc+ :: Ptr a -> CString -> IO ()+foreign import ccall unsafe "static fpstring.h & debug_free" debug_free+ :: FunPtr (Ptr a -> IO ())+debugForeignPtr fp n =+ withCString n $ \cname-> withForeignPtr fp $ \p->+ do debug_alloc p cname+ addForeignPtrFinalizer debug_free fp+-- #else+debugForeignPtr _ _ = return ()+-- #endif+-- #endif++-- -----------------------------------------------------------------------------+-- unsafeWithInternals++-- | Do something with the internals of a PackedString. Beware of+-- altering the contents!+unsafeWithInternals :: B.ByteString -> (Ptr Word8 -> Int -> IO a) -> IO a+unsafeWithInternals ps f+ = case BI.toForeignPtr ps of+ (fp,s,l) -> withForeignPtr fp $ \p -> f (p `plusPtr` s) l++-- | readIntPS skips any whitespace at the beginning of its argument, and+-- reads an Int from the beginning of the PackedString. If there is no+-- integer at the beginning of the string, it returns Nothing, otherwise it+-- just returns the int read, along with a B.ByteString containing the+-- remainder of its input.++readIntPS :: B.ByteString -> Maybe (Int, B.ByteString)+readIntPS = BC.readInt . BC.dropWhile isSpace++-- -----------------------------------------------------------------------------+-- Destructor functions (taking PackedStrings apart)++unpackPSfromUTF8 :: B.ByteString -> String+unpackPSfromUTF8 ps =+ case BI.toForeignPtr ps of+ (_,_, 0) -> ""+ (x,s,l) ->+ unsafePerformIO $ withForeignPtr x $ \p->+ do outbuf <- mallocArray l+ lout <- fromIntegral `fmap`+ utf8_to_ints outbuf (p `plusPtr` s) (fromIntegral l)+ when (lout < 0) $ error "Bad UTF8!"+ str <- (map (chr . fromIntegral)) `fmap` peekArray lout outbuf+ free outbuf+ return str++foreign import ccall unsafe "static fpstring.h utf8_to_ints" utf8_to_ints+ :: Ptr Int -> Ptr Word8 -> CInt -> IO CInt++-- -----------------------------------------------------------------------------+-- List-mimicking functions for PackedStrings++{-# INLINE ifHeadThenTail #-}+ifHeadThenTail :: Word8 -> B.ByteString -> Maybe B.ByteString+ifHeadThenTail c s = case uncons s of+ Just (w, t) | w == c -> Just t+ _ -> Nothing++------------------------------------------------------------------------+-- A reimplementation of Data.ByteString.Char8.dropSpace, but+-- specialised to darcs' need for a 4 way isspace.+--+-- TODO: if it is safe to use the expanded definition of isSpaceWord8+-- provided by Data.ByteString.Char8, then all this can go.++-- A locale-independent isspace(3) so patches are interpreted the same everywhere.+-- ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\r')+isSpaceWord8 :: Word8 -> Bool+isSpaceWord8 w =+ w == 0x20 || -- ' '+ w == 0x09 || -- '\t'+ w == 0x0A || -- '\n'+ w == 0x0D -- '\r'+{-# INLINE isSpaceWord8 #-}++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+ | n >= m = return n+ | otherwise = do w <- peekElemOff ptr n+ if isSpaceWord8 w then firstnonspace ptr (n+1) m else return n++firstspace :: Ptr Word8 -> Int -> Int -> IO Int+firstspace !ptr !n !m+ | n >= m = return n+ | otherwise = do w <- peekElemOff ptr n+ if (not . isSpaceWord8) w then firstspace ptr (n+1) m else return n++-- | 'dropSpace' efficiently returns the 'ByteString' argument with+-- white space Chars removed from the front. It is more efficient than+-- calling dropWhile for removing whitespace. I.e.+--+-- > dropWhile isSpace == dropSpace+--+dropSpace :: B.ByteString -> B.ByteString+dropSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do+ i <- firstnonspace (p `plusPtr` s) 0 l+ return $! if i == l then B.empty else BI.PS x (s+i) (l-i)+{-# INLINE dropSpace #-}++-- | 'breakSpace' returns the pair of ByteStrings when the argument is+-- broken at the first whitespace byte. I.e.+--+-- > break isSpace == breakSpace+--+breakSpace :: B.ByteString -> (B.ByteString,B.ByteString)+breakSpace (BI.PS x s l) = BI.inlinePerformIO $ withForeignPtr x $ \p -> do+ i <- firstspace (p `plusPtr` s) 0 l+ return $! case () of {_+ | i == 0 -> (B.empty, BI.PS x s l)+ | i == l -> (BI.PS x s l, B.empty)+ | otherwise -> (BI.PS x s i, BI.PS x (s+i) (l-i))+ }+{-# INLINE breakSpace #-}++------------------------------------------------------------------------++{-# INLINE is_funky #-}+is_funky :: B.ByteString -> Bool+is_funky ps = case BI.toForeignPtr ps of+ (x,s,l) ->+ unsafePerformIO $ withForeignPtr x $ \p->+ (/=0) `fmap` has_funky_char (p `plusPtr` s) (fromIntegral l)++foreign import ccall unsafe "fpstring.h has_funky_char" has_funky_char+ :: Ptr Word8 -> CInt -> IO CInt++------------------------------------------------------------------------++-- ByteString rewrites break (=='x') to breakByte 'x'+-- break ((==) x) = breakChar x+-- break (==x) = breakChar x+--++{-+{-# INLINE breakOnPS #-}+breakOnPS :: Char -> B.ByteString -> (B.ByteString, B.ByteString)+breakOnPS c p = case BC.elemIndex c p of+ Nothing -> (p, BC.empty)+ Just n -> (B.take n p, B.drop n p)+-}++{-# INLINE hashPS #-}+hashPS :: B.ByteString -> Int32+hashPS ps =+ case BI.toForeignPtr ps of+ (x,s,l) ->+ unsafePerformIO $ withForeignPtr x $ \p->+ do hash (p `plusPtr` s) l++hash :: Ptr Word8 -> Int -> IO Int32+hash ptr len = f (0 :: Int32) ptr len+ where f h _ 0 = return h+ f h p n = do x <- peek p+ let !h' = (fromIntegral x) + (rotateL h 8)+ f h' (p `advancePtr` 1) (n-1)++{-# INLINE substrPS #-}+substrPS :: B.ByteString -> B.ByteString -> Maybe Int+substrPS tok str+ | B.null tok = Just 0+ | B.length tok > B.length str = Nothing+ | otherwise = do n <- BC.elemIndex (BC.head tok) str+ let ttok = B.tail tok+ reststr = B.drop (n+1) str+ if ttok == B.take (B.length ttok) reststr+ then Just n+ else ((n+1)+) `fmap` substrPS tok reststr++------------------------------------------------------------------------++-- TODO: replace breakFirstPS and breakLastPS with definitions based on+-- ByteString's break/breakEnd+{-# INLINE breakFirstPS #-}+breakFirstPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString)+breakFirstPS c p = case BC.elemIndex c p of+ Nothing -> Nothing+ Just n -> Just (B.take n p, B.drop (n+1) p)++{-# INLINE breakLastPS #-}+breakLastPS :: Char -> B.ByteString -> Maybe (B.ByteString,B.ByteString)+breakLastPS c p = case BC.elemIndexEnd c p of+ Nothing -> Nothing+ Just n -> Just (B.take n p, B.drop (n+1) p)++-- TODO: rename+{-# INLINE linesPS #-}+linesPS :: B.ByteString -> [B.ByteString]+linesPS ps+ | B.null ps = [B.empty]+ | otherwise = BC.split '\n' ps++{- QuickCheck property:++import Test.QuickCheck+import qualified Data.ByteString.Char8 as BC+import Data.Char+instance Arbitrary BC.ByteString where+ arbitrary = fmap BC.pack arbitrary+instance Arbitrary Char where+ arbitrary = chr `fmap` choose (32,127)+deepCheck = check (defaultConfig { configMaxTest = 10000})+testLines = deepCheck (\x -> (linesPS x == linesPSOld x))+linesPSOld ps = case BC.elemIndex '\n' ps of+ Nothing -> [ps]+ Just n -> B.take n ps : linesPS (B.drop (n+1) ps) -}++{-| This function acts exactly like the "Prelude" unlines function, or like+"Data.ByteString.Char8" 'unlines', but with one important difference: it will+produce a string which may not end with a newline! That is:++> unlinesPS ["foo", "bar"]++evaluates to \"foo\\nbar\", not \"foo\\nbar\\n\"! This point should hold true for+'linesPS' as well.++TODO: rename this function. -}+unlinesPS :: [B.ByteString] -> B.ByteString+unlinesPS [] = BC.empty+unlinesPS x = BC.init $ BC.unlines x+{-# INLINE unlinesPS #-}+{- QuickCheck property:++testUnlines = deepCheck (\x -> (unlinesPS x == unlinesPSOld x))+unlinesPSOld ss = BC.concat $ intersperse_newlines ss+ where intersperse_newlines (a:b:s) = a : newline : intersperse_newlines (b:s)+ intersperse_newlines s = s+ newline = BC.pack "\n" -}++-- -----------------------------------------------------------------------------+-- gzReadFilePS++-- | Read an entire file, which may or may not be gzip compressed, directly+-- into a 'B.ByteString'.++-- #ifndef HAVE_HASKELL_ZLIB+foreign import ccall unsafe "static zlib.h gzopen" c_gzopen+ :: CString -> CString -> IO (Ptr ())+foreign import ccall unsafe "static zlib.h gzclose" c_gzclose+ :: Ptr () -> IO ()+foreign import ccall unsafe "static zlib.h gzread" c_gzread+ :: Ptr () -> Ptr Word8 -> CInt -> IO CInt+foreign import ccall unsafe "static zlib.h gzwrite" c_gzwrite+ :: Ptr () -> Ptr Word8 -> CInt -> IO CInt+-- #endif++gzReadFilePS :: FilePath -> IO B.ByteString+gzReadFilePS f = do+ h <- openBinaryFile f ReadMode+ header <- B.hGet h 2+ if header /= BC.pack "\31\139"+ then do hClose h+ mmapFilePS f+ else do hSeek h SeekFromEnd (-4)+ len <- hGetLittleEndInt h+ hClose h+-- #ifdef HAVE_HASKELL_ZLIB+ -- Passing the length to GZ.decompressWith means+ -- that BL.toChunks only produces one chunk, which in turn+ -- means that B.concat won't need to copy data.+ -- If the length is wrong this will just affect efficiency, not correctness+ let decompress = GZ.decompressWith GZ.defaultDecompressParams {+ GZ.decompressBufferSize = len+ }+ fmap (B.concat . BL.toChunks . decompress) $+-- #ifdef HAVE_OLD_BYTESTRING+ -- bytestring < 0.9.1 had a bug where it did not know to close handles upon EOF+ -- performance would be better with a newer bytestring and lazy+ -- readFile below -- ratify readFile: comment+ fmap (BL.fromChunks . (:[])) $+ B.readFile f -- ratify readFile: immediately consumed+-- #else+ BL.readFile f -- ratify readFile: immediately consumed by the conversion to a strict bytestring+-- #endif+-- #else+ withCString f $ \fstr-> withCString "rb" $ \rb-> do+ gzf <- c_gzopen fstr rb+ when (gzf == nullPtr) $ fail $ "problem opening file "++f+ fp <- BI.mallocByteString len+ debugForeignPtr fp $ "gzReadFilePS "++f+ lread <- withForeignPtr fp $ \p ->+ c_gzread gzf p (fromIntegral len)+ c_gzclose gzf+ when (fromIntegral lread /= len) $+ fail $ "problem gzreading file "++f+ return $ fromForeignPtr fp 0 len+-- #endif++hGetLittleEndInt :: Handle -> IO Int+hGetLittleEndInt h = do+ b1 <- ord `fmap` hGetChar h+ b2 <- ord `fmap` hGetChar h+ b3 <- ord `fmap` hGetChar h+ b4 <- ord `fmap` hGetChar h+ return $ b1 + 256*b2 + 65536*b3 + 16777216*b4++gzWriteFilePS :: FilePath -> B.ByteString -> IO ()+gzWriteFilePS f ps = gzWriteFilePSs f [ps]++gzWriteFilePSs :: FilePath -> [B.ByteString] -> IO ()+gzWriteFilePSs f pss =+-- #ifdef HAVE_HASKELL_ZLIB+ BL.writeFile f $ GZ.compress $ BL.fromChunks pss+-- #else+ withCString f $ \fstr -> withCString "wb" $ \wb -> do+ gzf <- c_gzopen fstr wb+ when (gzf == nullPtr) $ fail $ "problem gzopening file for write: "++f+ mapM_ (gzWriteToGzf gzf) pss `catch`+ \_ -> fail $ "problem gzwriting file: "++f+ c_gzclose gzf++gzWriteToGzf :: Ptr () -> B.ByteString -> IO ()+gzWriteToGzf gzf ps = case BI.toForeignPtr ps of+ (_,_,0) -> return () -- avoid calling gzwrite with 0 length this would+ -- trouble on some versions of zlib, and is always+ -- unnecessary.+ (x,s,l) -> do+ lw <- withForeignPtr x $ \p -> c_gzwrite gzf (p `plusPtr` s)+ (fromIntegral l)+ when (fromIntegral lw /= l) $ fail $ "problem in gzWriteToGzf"+-- #endif++-- -----------------------------------------------------------------------------+-- mmapFilePS++-- | Like readFilePS, this reads an entire file directly into a+-- 'B.ByteString', but it is even more efficient. It involves directly+-- mapping the file to memory. This has the advantage that the contents of+-- the file never need to be copied. Also, under memory pressure the page+-- may simply be discarded, wile in the case of readFilePS it would need to+-- be written to swap. If you read many small files, mmapFilePS will be+-- less memory-efficient than readFilePS, since each mmapFilePS takes up a+-- separate page of memory. Also, you can run into bus errors if the file+-- is modified. NOTE: as with 'readFilePS', the string representation in+-- the file is assumed to be ISO-8859-1.++mmapFilePS :: FilePath -> IO B.ByteString+-- #ifdef HAVE_MMAP+mmapFilePS f = do+ x <- mmapFileByteString f Nothing+ `catch` (\_ -> do+ size <- fileSize `fmap` getSymbolicLinkStatus f+ if size == 0+ then return B.empty+ else performGC >> mmapFileByteString f Nothing)+ return x+-- #else+mmapFilePS = B.readFile+-- #endif++-- -------------------------------------------------------------------------+-- fromPS2Hex++foreign import ccall unsafe "static fpstring.h conv_to_hex" conv_to_hex+ :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromPS2Hex :: B.ByteString -> B.ByteString+fromPS2Hex ps = case BI.toForeignPtr ps of+ (x,s,l) ->+ BI.unsafeCreate (2*l) $ \p -> withForeignPtr x $ \f ->+ conv_to_hex p (f `plusPtr` s) $ fromIntegral l++-- -------------------------------------------------------------------------+-- fromHex2PS++foreign import ccall unsafe "static fpstring.h conv_from_hex" conv_from_hex+ :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromHex2PS :: B.ByteString -> B.ByteString+fromHex2PS ps = case BI.toForeignPtr ps of+ (x,s,l) ->+ BI.unsafeCreate (l `div` 2) $ \p -> withForeignPtr x $ \f ->+ conv_from_hex p (f `plusPtr` s) (fromIntegral $ l `div` 2)++-- -------------------------------------------------------------------------+-- betweenLinesPS++-- | betweenLinesPS returns the B.ByteString between the two lines given,+-- or Nothing if they do not appear.++betweenLinesPS :: B.ByteString -> B.ByteString -> B.ByteString+ -> Maybe (B.ByteString)+betweenLinesPS start end ps+ = case break (start ==) (linesPS ps) of+ (_, _:rest@(bs1:_)) ->+ case BI.toForeignPtr bs1 of+ (ps1,s1,_) ->+ case break (end ==) rest of+ (_, bs2:_) -> case BI.toForeignPtr bs2 of (_,s2,_) -> Just $ fromForeignPtr ps1 s1 (s2 - s1)+ _ -> Nothing+ _ -> Nothing++-- -------------------------------------------------------------------------+-- break_after_nth_newline++break_after_nth_newline :: Int -> B.ByteString+ -> Maybe (B.ByteString, B.ByteString)+break_after_nth_newline 0 the_ps | B.null the_ps = Just (B.empty, B.empty)+break_after_nth_newline n the_ps =+ case BI.toForeignPtr the_ps of+ (fp,the_s,l) ->+ unsafePerformIO $ withForeignPtr fp $ \p ->+ do let findit 0 s | s == end = return $ Just (the_ps, B.empty)+ findit _ s | s == end = return Nothing+ findit 0 s = let left_l = s - the_s+ in return $ Just (fromForeignPtr fp the_s left_l,+ fromForeignPtr fp s (l - left_l))+ findit i s = do w <- peekElemOff p s+ if w == nl then findit (i-1) (s+1)+ else findit i (s+1)+ nl = BI.c2w '\n'+ end = the_s + l+ findit n the_s++-- -------------------------------------------------------------------------+-- break_before_nth_newline++break_before_nth_newline :: Int -> B.ByteString -> (B.ByteString, B.ByteString)+break_before_nth_newline 0 the_ps+ | B.null the_ps = (B.empty, B.empty)+break_before_nth_newline n the_ps =+ case BI.toForeignPtr the_ps of+ (fp,the_s,l) ->+ unsafePerformIO $ withForeignPtr fp $ \p ->+ do let findit _ s | s == end = return (the_ps, B.empty)+ findit i s = do w <- peekElemOff p s+ if w == nl+ then if i == 0+ then let left_l = s - the_s+ in return (fromForeignPtr fp the_s left_l,+ fromForeignPtr fp s (l - left_l))+ else findit (i-1) (s+1)+ else findit i (s+1)+ nl = BI.c2w '\n'+ end = the_s + l+ findit n the_s
+ tests/examples/ByteStringUtils.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ByteStringUtils.hs.parser.golden view
file too large to diff
+ tests/examples/ByteStringUtils.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () (Just (ModuleHead () (ModuleName () "ByteStringUtils") Nothing (Just (ExportSpecList () [EVar () (UnQual () (Ident () "unsafeWithInternals")),EVar () (UnQual () (Ident () "unpackPSfromUTF8")),EVar () (UnQual () (Ident () "gzReadFilePS")),EVar () (UnQual () (Ident () "mmapFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePSs")),EVar () (UnQual () (Ident () "ifHeadThenTail")),EVar () (UnQual () (Ident () "dropSpace")),EVar () (UnQual () (Ident () "breakSpace")),EVar () (UnQual () (Ident () "linesPS")),EVar () (UnQual () (Ident () "unlinesPS")),EVar () (UnQual () (Ident () "hashPS")),EVar () (UnQual () (Ident () "breakFirstPS")),EVar () (UnQual () (Ident () "breakLastPS")),EVar () (UnQual () (Ident () "substrPS")),EVar () (UnQual () (Ident () "readIntPS")),EVar () (UnQual () (Ident () "is_funky")),EVar () (UnQual () (Ident () "fromHex2PS")),EVar () (UnQual () (Ident () "fromPS2Hex")),EVar () (UnQual () (Ident () "betweenLinesPS")),EVar () (UnQual () (Ident () "break_after_nth_newline")),EVar () (UnQual () (Ident () "break_before_nth_newline")),EVar () (UnQual () (Ident () "intercalate"))])))) [LanguagePragma () [Ident () "BangPatterns",Ident () "ForeignFunctionInterface",Ident () "CPP"]] [ImportDecl {importAnn = (), importModule = ModuleName () "Prelude", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () True [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "B"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Char8", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BC"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BI"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "intercalate"),IVar () (Ident () "uncons")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fromForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Exception", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.Unsafe", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "unsafePerformIO")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Storable", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "peekElemOff"),IVar () (Ident () "peek")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Alloc", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "free")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Array", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mallocArray"),IVar () (Ident () "peekArray"),IVar () (Ident () "advancePtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CInt")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Bits", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "rotateL")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Char", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "chr"),IVar () (Ident () "ord"),IVar () (Ident () "isSpace")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Word", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Word8")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Int", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Int32")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Monad", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "when")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "nullPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "ForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "plusPtr"),IAbs () (NoNamespace ()) (Ident () "Ptr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "withForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "addForeignPtrFinalizer")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "FunPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Lazy", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BL"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Codec.Compression.GZip", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "GZ"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.String", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CString"),IVar () (Ident () "withCString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.MMap", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mmapFileByteString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Mem", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "performGC")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Posix.Files", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fileSize"),IVar () (Ident () "getSymbolicLinkStatus")])}] [TypeSig () [Ident () "debugForeignPtr"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "ForeignPtr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "String"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h debug_alloc") (Ident () "debug_alloc") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h & debug_free") (Ident () "debug_free") (TyApp () (TyCon () (UnQual () (Ident () "FunPtr"))) (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),FunBind () [Match () (Ident () "debugForeignPtr") [PVar () (Ident () "fp"),PVar () (Ident () "n")] (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "n")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "cname")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "debug_alloc"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "cname")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "addForeignPtrFinalizer"))) (Var () (UnQual () (Ident () "debug_free")))) (Var () (UnQual () (Ident () "fp"))))])))))) Nothing,Match () (Ident () "debugForeignPtr") [PWildCard (),PWildCard ()] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing],TypeSig () [Ident () "unsafeWithInternals"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a")))))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a"))))),FunBind () [Match () (Ident () "unsafeWithInternals") [PVar () (Ident () "ps"),PVar () (Ident () "f")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))))) Nothing])) Nothing],TypeSig () [Ident () "readIntPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (UnQual () (Ident () "Int")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),PatBind () (PVar () (Ident () "readIntPS")) (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "readInt"))) (QVarOp () (UnQual () (Symbol () "."))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "dropWhile"))) (Var () (UnQual () (Ident () "isSpace")))))) Nothing,TypeSig () [Ident () "unpackPSfromUTF8"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "String")))),FunBind () [Match () (Ident () "unpackPSfromUTF8") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (Lit () (String () "" ""))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "outbuf")) (App () (Var () (UnQual () (Ident () "mallocArray"))) (Var () (UnQual () (Ident () "l")))),Generator () (PVar () (Ident () "lout")) (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (App () (Var () (UnQual () (Ident () "utf8_to_ints"))) (Var () (UnQual () (Ident () "outbuf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "lout"))) (QVarOp () (UnQual () (Symbol () "<"))) (Lit () (Int () 0 "0"))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "error"))) (Lit () (String () "Bad UTF8!" "Bad UTF8!")))),Generator () (PVar () (Ident () "str")) (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "map"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "chr"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "fromIntegral"))))))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "peekArray"))) (Var () (UnQual () (Ident () "lout")))) (Var () (UnQual () (Ident () "outbuf"))))),Qualifier () (App () (Var () (UnQual () (Ident () "free"))) (Var () (UnQual () (Ident () "outbuf")))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "str"))))]))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h utf8_to_ints") (Ident () "utf8_to_ints") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Int")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),InlineSig () True Nothing (UnQual () (Ident () "ifHeadThenTail")),TypeSig () [Ident () "ifHeadThenTail"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))),FunBind () [Match () (Ident () "ifHeadThenTail") [PVar () (Ident () "c"),PVar () (Ident () "s")] (UnGuardedRhs () (Case () (App () (Var () (UnQual () (Ident () "uncons"))) (Var () (UnQual () (Ident () "s")))) [Alt () (PApp () (UnQual () (Ident () "Just")) [PTuple () Boxed [PVar () (Ident () "w"),PVar () (Ident () "t")]]) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "c"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "t"))))]) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "isSpaceWord8"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "isSpaceWord8") [PVar () (Ident () "w")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 32 "0x20"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 9 "0x09"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 10 "0x0A"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 13 "0x0D"))))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "isSpaceWord8")),TypeSig () [Ident () "firstnonspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstnonspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Var () (UnQual () (Ident () "isSpaceWord8"))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "firstspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Paren () (InfixApp () (Var () (UnQual () (Ident () "not"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "isSpaceWord8"))))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "dropSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "dropSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l")))) (Var () (Qual () (ModuleName () "B") (Ident () "empty"))) (App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i"))))))))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "dropSpace")),TypeSig () [Ident () "breakSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])),FunBind () [Match () (Ident () "breakSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (Case () (Con () (Special () (UnitCon ()))) [Alt () (PWildCard ()) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0")))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l")))]),GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l"))))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l"))),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "i"))),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i")))))])]) Nothing]))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakSpace")),InlineSig () True Nothing (UnQual () (Ident () "is_funky")),TypeSig () [Ident () "is_funky"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "is_funky") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (RightSection () (QVarOp () (UnQual () (Symbol () "/="))) (Lit () (Int () 0 "0"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "has_funky_char"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "fpstring.h has_funky_char") (Ident () "has_funky_char") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt")))))),InlineSig () True Nothing (UnQual () (Ident () "hashPS")),TypeSig () [Ident () "hashPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Int32")))),FunBind () [Match () (Ident () "hashPS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "hash"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "hash"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int32")))))),FunBind () [Match () (Ident () "hash") [PVar () (Ident () "ptr"),PVar () (Ident () "len")] (UnGuardedRhs () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (ExpTypeSig () (Lit () (Int () 0 "0")) (TyCon () (UnQual () (Ident () "Int32")))))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "len"))))) (Just (BDecls () [FunBind () [Match () (Ident () "f") [PVar () (Ident () "h"),PWildCard (),PLit () (Signless ()) (Int () 0 "0")] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "h"))))) Nothing,Match () (Ident () "f") [PVar () (Ident () "h"),PVar () (Ident () "p"),PVar () (Ident () "n")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (App () (Var () (UnQual () (Ident () "peek"))) (Var () (UnQual () (Ident () "p")))),LetStmt () (BDecls () [PatBind () (PBangPat () (PVar () (Ident () "h'"))) (UnGuardedRhs () (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "x"))))) (QVarOp () (UnQual () (Symbol () "+"))) (Paren () (App () (App () (Var () (UnQual () (Ident () "rotateL"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 8 "8")))))) Nothing]),Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "h'")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "advancePtr"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1")))))])) Nothing]]))],InlineSig () True Nothing (UnQual () (Ident () "substrPS")),TypeSig () [Ident () "substrPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (UnQual () (Ident () "Int")))))),FunBind () [Match () (Ident () "substrPS") [PVar () (Ident () "tok"),PVar () (Ident () "str")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "tok"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Lit () (Int () 0 "0"))),GuardedRhs () [Qualifier () (InfixApp () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "tok")))) (QVarOp () (UnQual () (Symbol () ">"))) (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "str")))))] (Con () (UnQual () (Ident () "Nothing"))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "n")) (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Paren () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "head"))) (Var () (UnQual () (Ident () "tok")))))) (Var () (UnQual () (Ident () "str")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "ttok")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "B") (Ident () "tail"))) (Var () (UnQual () (Ident () "tok"))))) Nothing,PatBind () (PVar () (Ident () "reststr")) (UnGuardedRhs () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "str"))))) Nothing]),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "ttok"))) (QVarOp () (UnQual () (Symbol () "=="))) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Paren () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "ttok")))))) (Var () (UnQual () (Ident () "reststr"))))) (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "n")))) (InfixApp () (LeftSection () (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))) (QVarOp () (UnQual () (Symbol () "+")))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "substrPS"))) (Var () (UnQual () (Ident () "tok")))) (Var () (UnQual () (Ident () "reststr"))))))])]) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakFirstPS")),TypeSig () [Ident () "breakFirstPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakFirstPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakLastPS")),TypeSig () [Ident () "breakLastPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakLastPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndexEnd"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "linesPS")),TypeSig () [Ident () "linesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "linesPS") [PVar () (Ident () "ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "ps"))))] (List () [Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "split"))) (Lit () (Char () '\n' "\\n"))) (Var () (UnQual () (Ident () "ps"))))]) Nothing],TypeSig () [Ident () "unlinesPS"] (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "unlinesPS") [PList () []] (UnGuardedRhs () (Var () (Qual () (ModuleName () "BC") (Ident () "empty")))) Nothing,Match () (Ident () "unlinesPS") [PVar () (Ident () "x")] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "init"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "unlines"))) (Var () (UnQual () (Ident () "x")))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "unlinesPS")),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzopen") (Ident () "c_gzopen") (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyParen () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzclose") (Ident () "c_gzclose") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzread") (Ident () "c_gzread") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzwrite") (Ident () "c_gzwrite") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),TypeSig () [Ident () "gzReadFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "gzReadFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "h")) (App () (App () (Var () (UnQual () (Ident () "openBinaryFile"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "ReadMode")))),Generator () (PVar () (Ident () "header")) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "hGet"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 2 "2"))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "header"))) (QVarOp () (UnQual () (Symbol () "/="))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "pack"))) (Lit () (String () "\US\139" "\\31\\139")))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "mmapFilePS"))) (Var () (UnQual () (Ident () "f"))))]) (Do () [Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "hSeek"))) (Var () (UnQual () (Ident () "h")))) (Con () (UnQual () (Ident () "SeekFromEnd")))) (Paren () (NegApp () (Lit () (Int () 4 "4"))))),Generator () (PVar () (Ident () "len")) (App () (Var () (UnQual () (Ident () "hGetLittleEndInt"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "decompress")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "GZ") (Ident () "decompressWith"))) (RecUpdate () (Var () (Qual () (ModuleName () "GZ") (Ident () "defaultDecompressParams"))) [FieldUpdate () (Qual () (ModuleName () "GZ") (Ident () "decompressBufferSize")) (Var () (UnQual () (Ident () "len")))]))) Nothing]),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "B") (Ident () "concat"))) (QVarOp () (UnQual () (Symbol () "."))) (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "toChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "decompress"))))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (RightSection () (QConOp () (Special () (Cons ()))) (List () []))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "readFile"))) (Var () (UnQual () (Ident () "f")))) (Var () (Qual () (ModuleName () "BL") (Ident () "readFile")))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "rb" "rb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "rb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "rb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem opening file " "problem opening file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Generator () (PVar () (Ident () "fp")) (App () (Var () (Qual () (ModuleName () "BI") (Ident () "mallocByteString"))) (Var () (UnQual () (Ident () "len")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "debugForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "gzReadFilePS " "gzReadFilePS ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))),Generator () (PVar () (Ident () "lread")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzread"))) (Var () (UnQual () (Ident () "gzf")))) (Var () (UnQual () (Ident () "p")))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "len")))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lread")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "len")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzreading file " "problem gzreading file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "len")))))])))))]))])) Nothing],TypeSig () [Ident () "hGetLittleEndInt"] (TyFun () (TyCon () (UnQual () (Ident () "Handle"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))),FunBind () [Match () (Ident () "hGetLittleEndInt") [PVar () (Ident () "h")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "b1")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b2")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b3")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b4")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "b1"))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 256 "256")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b2"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 65536 "65536")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b3"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 16777216 "16777216")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b4"))))))])) Nothing],TypeSig () [Ident () "gzWriteFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePS") [PVar () (Ident () "f"),PVar () (Ident () "ps")] (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "gzWriteFilePSs"))) (Var () (UnQual () (Ident () "f")))) (List () [Var () (UnQual () (Ident () "ps"))]))) Nothing],TypeSig () [Ident () "gzWriteFilePSs"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePSs") [PVar () (Ident () "f"),PVar () (Ident () "pss")] (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "writeFile"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (Qual () (ModuleName () "GZ") (Ident () "compress"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (App () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (Var () (UnQual () (Ident () "pss")))) (Var () (UnQual () (Ident () "withCString")))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "wb" "wb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "wb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "wb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzopening file for write: " "problem gzopening file for write: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mapM_"))) (Paren () (App () (Var () (UnQual () (Ident () "gzWriteToGzf"))) (Var () (UnQual () (Ident () "gzf")))))) (Var () (UnQual () (Ident () "pss")))) (QVarOp () (UnQual () (Ident () "catch"))) (Lambda () [PWildCard ()] (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzwriting file: " "problem gzwriting file: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf"))))])))))))) Nothing],TypeSig () [Ident () "gzWriteToGzf"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteToGzf") [PVar () (Ident () "gzf"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "lw")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzwrite"))) (Var () (UnQual () (Ident () "gzf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lw")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lit () (String () "problem in gzWriteToGzf" "problem in gzWriteToGzf"))))])) Nothing])) Nothing],TypeSig () [Ident () "mmapFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "mmapFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing")))) (QVarOp () (UnQual () (Ident () "catch"))) (Paren () (Lambda () [PWildCard ()] (Do () [Generator () (PVar () (Ident () "size")) (InfixApp () (Var () (UnQual () (Ident () "fileSize"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "getSymbolicLinkStatus"))) (Var () (UnQual () (Ident () "f"))))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "size"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (Qual () (ModuleName () "B") (Ident () "empty")))) (InfixApp () (Var () (UnQual () (Ident () "performGC"))) (QVarOp () (UnQual () (Symbol () ">>"))) (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing"))))))])))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "x"))))])) Nothing],PatBind () (PVar () (Ident () "mmapFilePS")) (UnGuardedRhs () (Var () (Qual () (ModuleName () "B") (Ident () "readFile")))) Nothing,ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_to_hex") (Ident () "conv_to_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromPS2Hex"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromPS2Hex") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Lit () (Int () 2 "2")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (InfixApp () (App () (App () (Var () (UnQual () (Ident () "conv_to_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_from_hex") (Ident () "conv_from_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromHex2PS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromHex2PS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (App () (App () (App () (Var () (UnQual () (Ident () "conv_from_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))))))))) Nothing])) Nothing],TypeSig () [Ident () "betweenLinesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyParen () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))))),FunBind () [Match () (Ident () "betweenLinesPS") [PVar () (Ident () "start"),PVar () (Ident () "end"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "start"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Paren () (App () (Var () (UnQual () (Ident () "linesPS"))) (Var () (UnQual () (Ident () "ps")))))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PWildCard ()) (Special () (Cons ())) (PAsPat () (Ident () "rest") (PParen () (PInfixApp () (PVar () (Ident () "bs1")) (Special () (Cons ())) (PWildCard ()))))]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs1")))) [Alt () (PTuple () Boxed [PVar () (Ident () "ps1"),PVar () (Ident () "s1"),PWildCard ()]) (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "end"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Var () (UnQual () (Ident () "rest")))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PVar () (Ident () "bs2")) (Special () (Cons ())) (PWildCard ())]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs2")))) [Alt () (PTuple () Boxed [PWildCard (),PVar () (Ident () "s2"),PWildCard ()]) (UnGuardedRhs () (InfixApp () (Con () (UnQual () (Ident () "Just"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "ps1")))) (Var () (UnQual () (Ident () "s1")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s2"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "s1")))))))) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "break_after_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "break_after_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "break_after_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])))]) Nothing,Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Con () (UnQual () (Ident () "Nothing"))))]) Nothing,Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (UnGuardedRhs () (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))))) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "break_before_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),FunBind () [Match () (Ident () "break_before_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])]) Nothing,Match () (Ident () "break_before_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing]]++AST 2:++Module () (Just (ModuleHead () (ModuleName () "ByteStringUtils") Nothing (Just (ExportSpecList () [EVar () (UnQual () (Ident () "unsafeWithInternals")),EVar () (UnQual () (Ident () "unpackPSfromUTF8")),EVar () (UnQual () (Ident () "gzReadFilePS")),EVar () (UnQual () (Ident () "mmapFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePS")),EVar () (UnQual () (Ident () "gzWriteFilePSs")),EVar () (UnQual () (Ident () "ifHeadThenTail")),EVar () (UnQual () (Ident () "dropSpace")),EVar () (UnQual () (Ident () "breakSpace")),EVar () (UnQual () (Ident () "linesPS")),EVar () (UnQual () (Ident () "unlinesPS")),EVar () (UnQual () (Ident () "hashPS")),EVar () (UnQual () (Ident () "breakFirstPS")),EVar () (UnQual () (Ident () "breakLastPS")),EVar () (UnQual () (Ident () "substrPS")),EVar () (UnQual () (Ident () "readIntPS")),EVar () (UnQual () (Ident () "is_funky")),EVar () (UnQual () (Ident () "fromHex2PS")),EVar () (UnQual () (Ident () "fromPS2Hex")),EVar () (UnQual () (Ident () "betweenLinesPS")),EVar () (UnQual () (Ident () "break_after_nth_newline")),EVar () (UnQual () (Ident () "break_before_nth_newline")),EVar () (UnQual () (Ident () "intercalate"))])))) [LanguagePragma () [Ident () "BangPatterns",Ident () "ForeignFunctionInterface",Ident () "CPP"]] [ImportDecl {importAnn = (), importModule = ModuleName () "Prelude", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () True [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "B"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Char8", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BC"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BI"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "intercalate"),IVar () (Ident () "uncons")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Internal", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fromForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Exception", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "catch")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.Unsafe", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "unsafePerformIO")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Storable", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "peekElemOff"),IVar () (Ident () "peek")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Alloc", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "free")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Marshal.Array", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mallocArray"),IVar () (Ident () "peekArray"),IVar () (Ident () "advancePtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.Types", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CInt")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Bits", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "rotateL")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Char", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "chr"),IVar () (Ident () "ord"),IVar () (Ident () "isSpace")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Word", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Word8")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.Int", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "Int32")])},ImportDecl {importAnn = (), importModule = ModuleName () "Control.Monad", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "when")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "nullPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "ForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "plusPtr"),IAbs () (NoNamespace ()) (Ident () "Ptr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "withForeignPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.ForeignPtr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "addForeignPtrFinalizer")])},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.Ptr", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "FunPtr")])},ImportDecl {importAnn = (), importModule = ModuleName () "Data.ByteString.Lazy", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "BL"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Codec.Compression.GZip", importQualified = True, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Just (ModuleName () "GZ"), importSpecs = Nothing},ImportDecl {importAnn = (), importModule = ModuleName () "Foreign.C.String", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IAbs () (NoNamespace ()) (Ident () "CString"),IVar () (Ident () "withCString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.IO.MMap", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "mmapFileByteString")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Mem", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "performGC")])},ImportDecl {importAnn = (), importModule = ModuleName () "System.Posix.Files", importQualified = False, importSrc = False, importSafe = False, importPkg = Nothing, importAs = Nothing, importSpecs = Just (ImportSpecList () False [IVar () (Ident () "fileSize"),IVar () (Ident () "getSymbolicLinkStatus")])}] [TypeSig () [Ident () "debugForeignPtr"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "ForeignPtr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "String"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h debug_alloc") (Ident () "debug_alloc") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h & debug_free") (Ident () "debug_free") (TyApp () (TyCon () (UnQual () (Ident () "FunPtr"))) (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyVar () (Ident () "a"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),FunBind () [Match () (Ident () "debugForeignPtr") [PVar () (Ident () "fp"),PVar () (Ident () "n")] (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "n")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "cname")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "debug_alloc"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "cname")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "addForeignPtrFinalizer"))) (Var () (UnQual () (Ident () "debug_free")))) (Var () (UnQual () (Ident () "fp"))))])))))) Nothing,Match () (Ident () "debugForeignPtr") [PWildCard (),PWildCard ()] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing],TypeSig () [Ident () "unsafeWithInternals"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyParen () (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a")))))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyVar () (Ident () "a"))))),FunBind () [Match () (Ident () "unsafeWithInternals") [PVar () (Ident () "ps"),PVar () (Ident () "f")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))))) Nothing])) Nothing],TypeSig () [Ident () "readIntPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (UnQual () (Ident () "Int")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),PatBind () (PVar () (Ident () "readIntPS")) (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "readInt"))) (QVarOp () (UnQual () (Symbol () "."))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "dropWhile"))) (Var () (UnQual () (Ident () "isSpace")))))) Nothing,TypeSig () [Ident () "unpackPSfromUTF8"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "String")))),FunBind () [Match () (Ident () "unpackPSfromUTF8") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (Lit () (String () "" ""))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "outbuf")) (App () (Var () (UnQual () (Ident () "mallocArray"))) (Var () (UnQual () (Ident () "l")))),Generator () (PVar () (Ident () "lout")) (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (App () (Var () (UnQual () (Ident () "utf8_to_ints"))) (Var () (UnQual () (Ident () "outbuf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "lout"))) (QVarOp () (UnQual () (Symbol () "<"))) (Lit () (Int () 0 "0"))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "error"))) (Lit () (String () "Bad UTF8!" "Bad UTF8!")))),Generator () (PVar () (Ident () "str")) (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "map"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "chr"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "fromIntegral"))))))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "peekArray"))) (Var () (UnQual () (Ident () "lout")))) (Var () (UnQual () (Ident () "outbuf"))))),Qualifier () (App () (Var () (UnQual () (Ident () "free"))) (Var () (UnQual () (Ident () "outbuf")))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "str"))))]))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h utf8_to_ints") (Ident () "utf8_to_ints") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Int")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),InlineSig () True Nothing (UnQual () (Ident () "ifHeadThenTail")),TypeSig () [Ident () "ifHeadThenTail"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))),FunBind () [Match () (Ident () "ifHeadThenTail") [PVar () (Ident () "c"),PVar () (Ident () "s")] (UnGuardedRhs () (Case () (App () (Var () (UnQual () (Ident () "uncons"))) (Var () (UnQual () (Ident () "s")))) [Alt () (PApp () (UnQual () (Ident () "Just")) [PTuple () Boxed [PVar () (Ident () "w"),PVar () (Ident () "t")]]) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "c"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "t"))))]) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "isSpaceWord8"] (TyFun () (TyCon () (UnQual () (Ident () "Word8"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "isSpaceWord8") [PVar () (Ident () "w")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 32 "32"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 9 "9"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 10 "10"))) (QVarOp () (UnQual () (Symbol () "||"))) (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 13 "13"))))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "isSpaceWord8")),TypeSig () [Ident () "firstnonspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstnonspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Var () (UnQual () (Ident () "isSpaceWord8"))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "firstspace"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))))),FunBind () [Match () (Ident () "firstspace") [PBangPat () (PVar () (Ident () "ptr")),PBangPat () (PVar () (Ident () "n")),PBangPat () (PVar () (Ident () "m"))] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () ">="))) (Var () (UnQual () (Ident () "m"))))] (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "n")))),Qualifier () (If () (App () (Paren () (InfixApp () (Var () (UnQual () (Ident () "not"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "isSpaceWord8"))))) (Var () (UnQual () (Ident () "w")))) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Var () (UnQual () (Ident () "ptr")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "m")))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "n")))))])]) Nothing],TypeSig () [Ident () "dropSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "dropSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstnonspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l")))) (Var () (Qual () (ModuleName () "B") (Ident () "empty"))) (App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i"))))))))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "dropSpace")),TypeSig () [Ident () "breakSpace"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])),FunBind () [Match () (Ident () "breakSpace") [PParen () (PApp () (Qual () (ModuleName () "BI") (Ident () "PS")) [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")])] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BI") (Ident () "inlinePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Generator () (PVar () (Ident () "i")) (App () (App () (App () (Var () (UnQual () (Ident () "firstspace"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "l")))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$!"))) (Case () (Con () (Special () (UnitCon ()))) [Alt () (PWildCard ()) (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0")))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l")))]),GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "l"))))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "l"))),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Tuple () Boxed [App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Var () (UnQual () (Ident () "s")))) (Var () (UnQual () (Ident () "i"))),App () (App () (App () (Con () (Qual () (ModuleName () "BI") (Ident () "PS"))) (Var () (UnQual () (Ident () "x")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "i")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "i")))))])]) Nothing]))]))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakSpace")),InlineSig () True Nothing (UnQual () (Ident () "is_funky")),TypeSig () [Ident () "is_funky"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Bool")))),FunBind () [Match () (Ident () "is_funky") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (RightSection () (QVarOp () (UnQual () (Symbol () "/="))) (Lit () (Int () 0 "0"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "has_funky_char"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l"))))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "fpstring.h has_funky_char") (Ident () "has_funky_char") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt")))))),InlineSig () True Nothing (UnQual () (Ident () "hashPS")),TypeSig () [Ident () "hashPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (UnQual () (Ident () "Int32")))),FunBind () [Match () (Ident () "hashPS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [Qualifier () (App () (App () (Var () (UnQual () (Ident () "hash"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Var () (UnQual () (Ident () "l"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "hash"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int32")))))),FunBind () [Match () (Ident () "hash") [PVar () (Ident () "ptr"),PVar () (Ident () "len")] (UnGuardedRhs () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Paren () (ExpTypeSig () (Lit () (Int () 0 "0")) (TyCon () (UnQual () (Ident () "Int32")))))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "len"))))) (Just (BDecls () [FunBind () [Match () (Ident () "f") [PVar () (Ident () "h"),PWildCard (),PLit () (Signless ()) (Int () 0 "0")] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "h"))))) Nothing,Match () (Ident () "f") [PVar () (Ident () "h"),PVar () (Ident () "p"),PVar () (Ident () "n")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (App () (Var () (UnQual () (Ident () "peek"))) (Var () (UnQual () (Ident () "p")))),LetStmt () (BDecls () [PatBind () (PBangPat () (PVar () (Ident () "h'"))) (UnGuardedRhs () (InfixApp () (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "x"))))) (QVarOp () (UnQual () (Symbol () "+"))) (Paren () (App () (App () (Var () (UnQual () (Ident () "rotateL"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 8 "8")))))) Nothing]),Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "h'")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "advancePtr"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1")))))])) Nothing]]))],InlineSig () True Nothing (UnQual () (Ident () "substrPS")),TypeSig () [Ident () "substrPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyCon () (UnQual () (Ident () "Int")))))),FunBind () [Match () (Ident () "substrPS") [PVar () (Ident () "tok"),PVar () (Ident () "str")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "tok"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Lit () (Int () 0 "0"))),GuardedRhs () [Qualifier () (InfixApp () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "tok")))) (QVarOp () (UnQual () (Symbol () ">"))) (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "str")))))] (Con () (UnQual () (Ident () "Nothing"))),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (Do () [Generator () (PVar () (Ident () "n")) (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Paren () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "head"))) (Var () (UnQual () (Ident () "tok")))))) (Var () (UnQual () (Ident () "str")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "ttok")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "B") (Ident () "tail"))) (Var () (UnQual () (Ident () "tok"))))) Nothing,PatBind () (PVar () (Ident () "reststr")) (UnGuardedRhs () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "str"))))) Nothing]),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "ttok"))) (QVarOp () (UnQual () (Symbol () "=="))) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Paren () (App () (Var () (Qual () (ModuleName () "B") (Ident () "length"))) (Var () (UnQual () (Ident () "ttok")))))) (Var () (UnQual () (Ident () "reststr"))))) (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "n")))) (InfixApp () (LeftSection () (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))) (QVarOp () (UnQual () (Symbol () "+")))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (App () (Var () (UnQual () (Ident () "substrPS"))) (Var () (UnQual () (Ident () "tok")))) (Var () (UnQual () (Ident () "reststr"))))))])]) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakFirstPS")),TypeSig () [Ident () "breakFirstPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakFirstPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndex"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "breakLastPS")),TypeSig () [Ident () "breakLastPS"] (TyFun () (TyCon () (UnQual () (Ident () "Char"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "breakLastPS") [PVar () (Ident () "c"),PVar () (Ident () "p")] (UnGuardedRhs () (Case () (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "elemIndexEnd"))) (Var () (UnQual () (Ident () "c")))) (Var () (UnQual () (Ident () "p")))) [Alt () (PApp () (UnQual () (Ident () "Nothing")) []) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing,Alt () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "n")]) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "take"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "p"))),App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "drop"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "n"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (Var () (UnQual () (Ident () "p")))]))) Nothing])) Nothing],InlineSig () True Nothing (UnQual () (Ident () "linesPS")),TypeSig () [Ident () "linesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "linesPS") [PVar () (Ident () "ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "ps"))))] (List () [Var () (Qual () (ModuleName () "B") (Ident () "empty"))]),GuardedRhs () [Qualifier () (Var () (UnQual () (Ident () "otherwise")))] (App () (App () (Var () (Qual () (ModuleName () "BC") (Ident () "split"))) (Lit () (Char () '\n' "\\n"))) (Var () (UnQual () (Ident () "ps"))))]) Nothing],TypeSig () [Ident () "unlinesPS"] (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "unlinesPS") [PList () []] (UnGuardedRhs () (Var () (Qual () (ModuleName () "BC") (Ident () "empty")))) Nothing,Match () (Ident () "unlinesPS") [PVar () (Ident () "x")] (UnGuardedRhs () (InfixApp () (Var () (Qual () (ModuleName () "BC") (Ident () "init"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "unlines"))) (Var () (UnQual () (Ident () "x")))))) Nothing],InlineSig () True Nothing (UnQual () (Ident () "unlinesPS")),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzopen") (Ident () "c_gzopen") (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyFun () (TyCon () (UnQual () (Ident () "CString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyParen () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzclose") (Ident () "c_gzclose") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzread") (Ident () "c_gzread") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static zlib.h gzwrite") (Ident () "c_gzwrite") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "CInt"))))))),TypeSig () [Ident () "gzReadFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "gzReadFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "h")) (App () (App () (Var () (UnQual () (Ident () "openBinaryFile"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "ReadMode")))),Generator () (PVar () (Ident () "header")) (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "hGet"))) (Var () (UnQual () (Ident () "h")))) (Lit () (Int () 2 "2"))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "header"))) (QVarOp () (UnQual () (Symbol () "/="))) (App () (Var () (Qual () (ModuleName () "BC") (Ident () "pack"))) (Lit () (String () "\US\139" "\\US\\139")))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "mmapFilePS"))) (Var () (UnQual () (Ident () "f"))))]) (Do () [Qualifier () (App () (App () (App () (Var () (UnQual () (Ident () "hSeek"))) (Var () (UnQual () (Ident () "h")))) (Con () (UnQual () (Ident () "SeekFromEnd")))) (Paren () (NegApp () (Lit () (Int () 4 "4"))))),Generator () (PVar () (Ident () "len")) (App () (Var () (UnQual () (Ident () "hGetLittleEndInt"))) (Var () (UnQual () (Ident () "h")))),Qualifier () (App () (Var () (UnQual () (Ident () "hClose"))) (Var () (UnQual () (Ident () "h")))),LetStmt () (BDecls () [PatBind () (PVar () (Ident () "decompress")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "GZ") (Ident () "decompressWith"))) (RecUpdate () (Var () (Qual () (ModuleName () "GZ") (Ident () "defaultDecompressParams"))) [FieldUpdate () (Qual () (ModuleName () "GZ") (Ident () "decompressBufferSize")) (Var () (UnQual () (Ident () "len")))]))) Nothing]),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "B") (Ident () "concat"))) (QVarOp () (UnQual () (Symbol () "."))) (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "toChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (Var () (UnQual () (Ident () "decompress"))))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "fmap"))) (Paren () (InfixApp () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (QVarOp () (UnQual () (Symbol () "."))) (RightSection () (QConOp () (Special () (Cons ()))) (List () []))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (Qual () (ModuleName () "B") (Ident () "readFile"))) (Var () (UnQual () (Ident () "f")))) (Var () (Qual () (ModuleName () "BL") (Ident () "readFile")))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "rb" "rb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "rb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "rb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem opening file " "problem opening file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Generator () (PVar () (Ident () "fp")) (App () (Var () (Qual () (ModuleName () "BI") (Ident () "mallocByteString"))) (Var () (UnQual () (Ident () "len")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "debugForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "gzReadFilePS " "gzReadFilePS ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))),Generator () (PVar () (Ident () "lread")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzread"))) (Var () (UnQual () (Ident () "gzf")))) (Var () (UnQual () (Ident () "p")))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "len")))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lread")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "len")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzreading file " "problem gzreading file ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Lit () (Int () 0 "0"))) (Var () (UnQual () (Ident () "len")))))])))))]))])) Nothing],TypeSig () [Ident () "hGetLittleEndInt"] (TyFun () (TyCon () (UnQual () (Ident () "Handle"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (UnQual () (Ident () "Int"))))),FunBind () [Match () (Ident () "hGetLittleEndInt") [PVar () (Ident () "h")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "b1")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b2")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b3")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Generator () (PVar () (Ident () "b4")) (InfixApp () (Var () (UnQual () (Ident () "ord"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "hGetChar"))) (Var () (UnQual () (Ident () "h"))))),Qualifier () (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "b1"))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 256 "256")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b2"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 65536 "65536")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b3"))))) (QVarOp () (UnQual () (Symbol () "+"))) (InfixApp () (Lit () (Int () 16777216 "16777216")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "b4"))))))])) Nothing],TypeSig () [Ident () "gzWriteFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePS") [PVar () (Ident () "f"),PVar () (Ident () "ps")] (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "gzWriteFilePSs"))) (Var () (UnQual () (Ident () "f")))) (List () [Var () (UnQual () (Ident () "ps"))]))) Nothing],TypeSig () [Ident () "gzWriteFilePSs"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyFun () (TyList () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteFilePSs") [PVar () (Ident () "f"),PVar () (Ident () "pss")] (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "writeFile"))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (Qual () (ModuleName () "GZ") (Ident () "compress"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (App () (App () (Var () (Qual () (ModuleName () "BL") (Ident () "fromChunks"))) (Var () (UnQual () (Ident () "pss")))) (Var () (UnQual () (Ident () "withCString")))) (Var () (UnQual () (Ident () "f")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "fstr")] (InfixApp () (App () (Var () (UnQual () (Ident () "withCString"))) (Lit () (String () "wb" "wb"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "wb")] (Do () [Generator () (PVar () (Ident () "gzf")) (App () (App () (Var () (UnQual () (Ident () "c_gzopen"))) (Var () (UnQual () (Ident () "fstr")))) (Var () (UnQual () (Ident () "wb")))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "gzf"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nullPtr")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzopening file for write: " "problem gzopening file for write: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f")))))),Qualifier () (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mapM_"))) (Paren () (App () (Var () (UnQual () (Ident () "gzWriteToGzf"))) (Var () (UnQual () (Ident () "gzf")))))) (Var () (UnQual () (Ident () "pss")))) (QVarOp () (UnQual () (Ident () "catch"))) (Lambda () [PWildCard ()] (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Lit () (String () "problem gzwriting file: " "problem gzwriting file: ")) (QVarOp () (UnQual () (Symbol () "++"))) (Var () (UnQual () (Ident () "f"))))))),Qualifier () (App () (Var () (UnQual () (Ident () "c_gzclose"))) (Var () (UnQual () (Ident () "gzf"))))])))))))) Nothing],TypeSig () [Ident () "gzWriteToGzf"] (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (Special () (UnitCon ())))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ())))))),FunBind () [Match () (Ident () "gzWriteToGzf") [PVar () (Ident () "gzf"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PWildCard (),PWildCard (),PLit () (Signless ()) (Int () 0 "0")]) (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "return"))) (Con () (Special () (UnitCon ()))))) Nothing,Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "lw")) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (App () (App () (App () (Var () (UnQual () (Ident () "c_gzwrite"))) (Var () (UnQual () (Ident () "gzf")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "p"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))),Qualifier () (InfixApp () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "lw")))) (QVarOp () (UnQual () (Symbol () "/="))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "fail"))) (QVarOp () (UnQual () (Symbol () "$"))) (Lit () (String () "problem in gzWriteToGzf" "problem in gzWriteToGzf"))))])) Nothing])) Nothing],TypeSig () [Ident () "mmapFilePS"] (TyFun () (TyCon () (UnQual () (Ident () "FilePath"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))))),FunBind () [Match () (Ident () "mmapFilePS") [PVar () (Ident () "f")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "x")) (InfixApp () (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing")))) (QVarOp () (UnQual () (Ident () "catch"))) (Paren () (Lambda () [PWildCard ()] (Do () [Generator () (PVar () (Ident () "size")) (InfixApp () (Var () (UnQual () (Ident () "fileSize"))) (QVarOp () (UnQual () (Ident () "fmap"))) (App () (Var () (UnQual () (Ident () "getSymbolicLinkStatus"))) (Var () (UnQual () (Ident () "f"))))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "size"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (App () (Var () (UnQual () (Ident () "return"))) (Var () (Qual () (ModuleName () "B") (Ident () "empty")))) (InfixApp () (Var () (UnQual () (Ident () "performGC"))) (QVarOp () (UnQual () (Symbol () ">>"))) (App () (App () (Var () (UnQual () (Ident () "mmapFileByteString"))) (Var () (UnQual () (Ident () "f")))) (Con () (UnQual () (Ident () "Nothing"))))))])))),Qualifier () (App () (Var () (UnQual () (Ident () "return"))) (Var () (UnQual () (Ident () "x"))))])) Nothing],PatBind () (PVar () (Ident () "mmapFilePS")) (UnGuardedRhs () (Var () (Qual () (ModuleName () "B") (Ident () "readFile")))) Nothing,ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_to_hex") (Ident () "conv_to_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromPS2Hex"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromPS2Hex") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Lit () (Int () 2 "2")) (QVarOp () (UnQual () (Symbol () "*"))) (Var () (UnQual () (Ident () "l")))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (InfixApp () (App () (App () (Var () (UnQual () (Ident () "conv_to_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Var () (UnQual () (Ident () "fromIntegral"))) (Var () (UnQual () (Ident () "l")))))))))) Nothing])) Nothing],ForImp () (CCall ()) (Just (PlayRisky ())) (Just "static fpstring.h conv_from_hex") (Ident () "conv_from_hex") (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyApp () (TyCon () (UnQual () (Ident () "Ptr"))) (TyCon () (UnQual () (Ident () "Word8")))) (TyFun () (TyCon () (UnQual () (Ident () "CInt"))) (TyApp () (TyCon () (UnQual () (Ident () "IO"))) (TyCon () (Special () (UnitCon ()))))))),TypeSig () [Ident () "fromHex2PS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))),FunBind () [Match () (Ident () "fromHex2PS") [PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "unsafeCreate"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "x")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "f")] (App () (App () (App () (Var () (UnQual () (Ident () "conv_from_hex"))) (Var () (UnQual () (Ident () "p")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "f"))) (QVarOp () (UnQual () (Ident () "plusPtr"))) (Var () (UnQual () (Ident () "s")))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "fromIntegral"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Ident () "div"))) (Lit () (Int () 2 "2"))))))))))) Nothing])) Nothing],TypeSig () [Ident () "betweenLinesPS"] (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyParen () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")))))))),FunBind () [Match () (Ident () "betweenLinesPS") [PVar () (Ident () "start"),PVar () (Ident () "end"),PVar () (Ident () "ps")] (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "start"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Paren () (App () (Var () (UnQual () (Ident () "linesPS"))) (Var () (UnQual () (Ident () "ps")))))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PWildCard ()) (Special () (Cons ())) (PAsPat () (Ident () "rest") (PParen () (PInfixApp () (PVar () (Ident () "bs1")) (Special () (Cons ())) (PWildCard ()))))]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs1")))) [Alt () (PTuple () Boxed [PVar () (Ident () "ps1"),PVar () (Ident () "s1"),PWildCard ()]) (UnGuardedRhs () (Case () (App () (App () (Var () (UnQual () (Ident () "break"))) (LeftSection () (Var () (UnQual () (Ident () "end"))) (QVarOp () (UnQual () (Symbol () "=="))))) (Var () (UnQual () (Ident () "rest")))) [Alt () (PTuple () Boxed [PWildCard (),PInfixApp () (PVar () (Ident () "bs2")) (Special () (Cons ())) (PWildCard ())]) (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "bs2")))) [Alt () (PTuple () Boxed [PWildCard (),PVar () (Ident () "s2"),PWildCard ()]) (UnGuardedRhs () (InfixApp () (Con () (UnQual () (Ident () "Just"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "ps1")))) (Var () (UnQual () (Ident () "s1")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s2"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "s1")))))))) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing])) Nothing,Alt () (PWildCard ()) (UnGuardedRhs () (Con () (UnQual () (Ident () "Nothing")))) Nothing])) Nothing],TypeSig () [Ident () "break_after_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyApp () (TyCon () (UnQual () (Ident () "Maybe"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))])))),FunBind () [Match () (Ident () "break_after_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "break_after_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])))]) Nothing,Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Con () (UnQual () (Ident () "Nothing"))))]) Nothing,Match () (Ident () "findit") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "s")] (UnGuardedRhs () (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (InfixApp () (Var () (UnQual () (Ident () "return"))) (QVarOp () (UnQual () (Symbol () "$"))) (App () (Con () (UnQual () (Ident () "Just"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))))) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing],TypeSig () [Ident () "break_before_nth_newline"] (TyFun () (TyCon () (UnQual () (Ident () "Int"))) (TyFun () (TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))) (TyTuple () Boxed [TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString")),TyCon () (Qual () (ModuleName () "B") (Ident () "ByteString"))]))),FunBind () [Match () (Ident () "break_before_nth_newline") [PLit () (Signless ()) (Int () 0 "0"),PVar () (Ident () "the_ps")] (GuardedRhss () [GuardedRhs () [Qualifier () (App () (Var () (Qual () (ModuleName () "B") (Ident () "null"))) (Var () (UnQual () (Ident () "the_ps"))))] (Tuple () Boxed [Var () (Qual () (ModuleName () "B") (Ident () "empty")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))])]) Nothing,Match () (Ident () "break_before_nth_newline") [PVar () (Ident () "n"),PVar () (Ident () "the_ps")] (UnGuardedRhs () (Case () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "toForeignPtr"))) (Var () (UnQual () (Ident () "the_ps")))) [Alt () (PTuple () Boxed [PVar () (Ident () "fp"),PVar () (Ident () "the_s"),PVar () (Ident () "l")]) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "unsafePerformIO"))) (QVarOp () (UnQual () (Symbol () "$"))) (InfixApp () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (QVarOp () (UnQual () (Symbol () "$"))) (Lambda () [PVar () (Ident () "p")] (Do () [LetStmt () (BDecls () [FunBind () [Match () (Ident () "findit") [PWildCard (),PVar () (Ident () "s")] (GuardedRhss () [GuardedRhs () [Qualifier () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "end"))))] (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [Var () (UnQual () (Ident () "the_ps")),Var () (Qual () (ModuleName () "B") (Ident () "empty"))]))]) Nothing,Match () (Ident () "findit") [PVar () (Ident () "i"),PVar () (Ident () "s")] (UnGuardedRhs () (Do () [Generator () (PVar () (Ident () "w")) (App () (App () (Var () (UnQual () (Ident () "peekElemOff"))) (Var () (UnQual () (Ident () "p")))) (Var () (UnQual () (Ident () "s")))),Qualifier () (If () (InfixApp () (Var () (UnQual () (Ident () "w"))) (QVarOp () (UnQual () (Symbol () "=="))) (Var () (UnQual () (Ident () "nl")))) (If () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "=="))) (Lit () (Int () 0 "0"))) (Let () (BDecls () [PatBind () (PVar () (Ident () "left_l")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "the_s"))))) Nothing]) (App () (Var () (UnQual () (Ident () "return"))) (Tuple () Boxed [App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "the_s")))) (Var () (UnQual () (Ident () "left_l"))),App () (App () (App () (Var () (UnQual () (Ident () "fromForeignPtr"))) (Var () (UnQual () (Ident () "fp")))) (Var () (UnQual () (Ident () "s")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "l"))) (QVarOp () (UnQual () (Symbol () "-"))) (Var () (UnQual () (Ident () "left_l")))))]))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "i"))) (QVarOp () (UnQual () (Symbol () "-"))) (Lit () (Int () 1 "1"))))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1")))))) (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "i")))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Lit () (Int () 1 "1"))))))])) Nothing],PatBind () (PVar () (Ident () "nl")) (UnGuardedRhs () (App () (Var () (Qual () (ModuleName () "BI") (Ident () "c2w"))) (Lit () (Char () '\n' "\\n")))) Nothing,PatBind () (PVar () (Ident () "end")) (UnGuardedRhs () (InfixApp () (Var () (UnQual () (Ident () "the_s"))) (QVarOp () (UnQual () (Symbol () "+"))) (Var () (UnQual () (Ident () "l"))))) Nothing]),Qualifier () (App () (App () (Var () (UnQual () (Ident () "findit"))) (Var () (UnQual () (Ident () "n")))) (Var () (UnQual () (Ident () "the_s"))))]))))) Nothing])) Nothing]]+
+ tests/examples/ByteStringUtils.hs.prettyprinter.golden view
@@ -0,0 +1,384 @@+{-# LANGUAGE BangPatterns, ForeignFunctionInterface, CPP #-}+module ByteStringUtils+ (unsafeWithInternals, unpackPSfromUTF8, gzReadFilePS, mmapFilePS,+ gzWriteFilePS, gzWriteFilePSs, ifHeadThenTail, dropSpace,+ breakSpace, linesPS, unlinesPS, hashPS, breakFirstPS, breakLastPS,+ substrPS, readIntPS, is_funky, fromHex2PS, fromPS2Hex,+ betweenLinesPS, break_after_nth_newline, break_before_nth_newline,+ intercalate)+ where+import Prelude hiding (catch)+import qualified Data.ByteString as B+import qualified Data.ByteString.Char8 as BC+import qualified Data.ByteString.Internal as BI+import Data.ByteString (intercalate, uncons)+import Data.ByteString.Internal (fromForeignPtr)+import Control.Exception (catch)+import System.IO+import System.IO.Unsafe (unsafePerformIO)+import Foreign.Storable (peekElemOff, peek)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Array (mallocArray, peekArray, advancePtr)+import Foreign.C.Types (CInt)+import Data.Bits (rotateL)+import Data.Char (chr, ord, isSpace)+import Data.Word (Word8)+import Data.Int (Int32)+import Control.Monad (when)+import Foreign.Ptr (nullPtr)+import Foreign.ForeignPtr (ForeignPtr)+import Foreign.Ptr (plusPtr, Ptr)+import Foreign.ForeignPtr (withForeignPtr)+import Foreign.ForeignPtr (addForeignPtrFinalizer)+import Foreign.Ptr (FunPtr)+import qualified Data.ByteString.Lazy as BL+import qualified Codec.Compression.GZip as GZ+import Foreign.C.String (CString, withCString)+import System.IO.MMap (mmapFileByteString)+import System.Mem (performGC)+import System.Posix.Files (fileSize, getSymbolicLinkStatus)++debugForeignPtr :: ForeignPtr a -> String -> IO ()++foreign import ccall unsafe "static fpstring.h debug_alloc"+ debug_alloc :: Ptr a -> CString -> IO ()++foreign import ccall unsafe "static fpstring.h & debug_free"+ debug_free :: FunPtr (Ptr a -> IO ())+debugForeignPtr fp n+ = withCString n $+ \ cname ->+ withForeignPtr fp $+ \ p ->+ do debug_alloc p cname+ addForeignPtrFinalizer debug_free fp+debugForeignPtr _ _ = return ()++unsafeWithInternals ::+ B.ByteString -> (Ptr Word8 -> Int -> IO a) -> IO a+unsafeWithInternals ps f+ = case BI.toForeignPtr ps of+ (fp, s, l) -> withForeignPtr fp $ \ p -> f (p `plusPtr` s) l++readIntPS :: B.ByteString -> Maybe (Int, B.ByteString)+readIntPS = BC.readInt . BC.dropWhile isSpace++unpackPSfromUTF8 :: B.ByteString -> String+unpackPSfromUTF8 ps+ = case BI.toForeignPtr ps of+ (_, _, 0) -> ""+ (x, s, l) -> unsafePerformIO $+ withForeignPtr x $+ \ p ->+ do outbuf <- mallocArray l+ lout <- fromIntegral `fmap`+ utf8_to_ints outbuf (p `plusPtr` s) (fromIntegral l)+ when (lout < 0) $ error "Bad UTF8!"+ str <- (map (chr . fromIntegral)) `fmap` peekArray lout outbuf+ free outbuf+ return str++foreign import ccall unsafe "static fpstring.h utf8_to_ints"+ utf8_to_ints :: Ptr Int -> Ptr Word8 -> CInt -> IO CInt++{-# INLINE ifHeadThenTail #-}++ifHeadThenTail :: Word8 -> B.ByteString -> Maybe B.ByteString+ifHeadThenTail c s+ = case uncons s of+ Just (w, t) | w == c -> Just t+ _ -> Nothing++isSpaceWord8 :: Word8 -> Bool+isSpaceWord8 w = w == 32 || w == 9 || w == 10 || w == 13++{-# INLINE isSpaceWord8 #-}++firstnonspace :: Ptr Word8 -> Int -> Int -> IO Int+firstnonspace !ptr !n !m+ | n >= m = return n+ | otherwise =+ do w <- peekElemOff ptr n+ if isSpaceWord8 w then firstnonspace ptr (n + 1) m else return n++firstspace :: Ptr Word8 -> Int -> Int -> IO Int+firstspace !ptr !n !m+ | n >= m = return n+ | otherwise =+ do w <- peekElemOff ptr n+ if (not . isSpaceWord8) w then firstspace ptr (n + 1) m else+ return n++dropSpace :: B.ByteString -> B.ByteString+dropSpace (BI.PS x s l)+ = BI.inlinePerformIO $+ withForeignPtr x $+ \ p ->+ do i <- firstnonspace (p `plusPtr` s) 0 l+ return $! if i == l then B.empty else BI.PS x (s + i) (l - i)++{-# INLINE dropSpace #-}++breakSpace :: B.ByteString -> (B.ByteString, B.ByteString)+breakSpace (BI.PS x s l)+ = BI.inlinePerformIO $+ withForeignPtr x $+ \ p ->+ do i <- firstspace (p `plusPtr` s) 0 l+ return $!+ case () of+ _ | i == 0 -> (B.empty, BI.PS x s l)+ | i == l -> (BI.PS x s l, B.empty)+ | otherwise -> (BI.PS x s i, BI.PS x (s + i) (l - i))++{-# INLINE breakSpace #-}++{-# INLINE is_funky #-}++is_funky :: B.ByteString -> Bool+is_funky ps+ = case BI.toForeignPtr ps of+ (x, s, l) -> unsafePerformIO $+ withForeignPtr x $+ \ p ->+ (/= 0) `fmap` has_funky_char (p `plusPtr` s) (fromIntegral l)++foreign import ccall unsafe "fpstring.h has_funky_char"+ has_funky_char :: Ptr Word8 -> CInt -> IO CInt++{-# INLINE hashPS #-}++hashPS :: B.ByteString -> Int32+hashPS ps+ = case BI.toForeignPtr ps of+ (x, s, l) -> unsafePerformIO $+ withForeignPtr x $ \ p -> do hash (p `plusPtr` s) l++hash :: Ptr Word8 -> Int -> IO Int32+hash ptr len = f (0 :: Int32) ptr len+ where f h _ 0 = return h+ f h p n+ = do x <- peek p+ let !h' = (fromIntegral x) + (rotateL h 8)+ f h' (p `advancePtr` 1) (n - 1)++{-# INLINE substrPS #-}++substrPS :: B.ByteString -> B.ByteString -> Maybe Int+substrPS tok str+ | B.null tok = Just 0+ | B.length tok > B.length str = Nothing+ | otherwise =+ do n <- BC.elemIndex (BC.head tok) str+ let ttok = B.tail tok+ reststr = B.drop (n + 1) str+ if ttok == B.take (B.length ttok) reststr then Just n else+ ((n + 1) +) `fmap` substrPS tok reststr++{-# INLINE breakFirstPS #-}++breakFirstPS ::+ Char -> B.ByteString -> Maybe (B.ByteString, B.ByteString)+breakFirstPS c p+ = case BC.elemIndex c p of+ Nothing -> Nothing+ Just n -> Just (B.take n p, B.drop (n + 1) p)++{-# INLINE breakLastPS #-}++breakLastPS ::+ Char -> B.ByteString -> Maybe (B.ByteString, B.ByteString)+breakLastPS c p+ = case BC.elemIndexEnd c p of+ Nothing -> Nothing+ Just n -> Just (B.take n p, B.drop (n + 1) p)++{-# INLINE linesPS #-}++linesPS :: B.ByteString -> [B.ByteString]+linesPS ps+ | B.null ps = [B.empty]+ | otherwise = BC.split '\n' ps++unlinesPS :: [B.ByteString] -> B.ByteString+unlinesPS [] = BC.empty+unlinesPS x = BC.init $ BC.unlines x++{-# INLINE unlinesPS #-}++foreign import ccall unsafe "static zlib.h gzopen" c_gzopen ::+ CString -> CString -> IO (Ptr ())++foreign import ccall unsafe "static zlib.h gzclose" c_gzclose ::+ Ptr () -> IO ()++foreign import ccall unsafe "static zlib.h gzread" c_gzread ::+ Ptr () -> Ptr Word8 -> CInt -> IO CInt++foreign import ccall unsafe "static zlib.h gzwrite" c_gzwrite ::+ Ptr () -> Ptr Word8 -> CInt -> IO CInt++gzReadFilePS :: FilePath -> IO B.ByteString+gzReadFilePS f+ = do h <- openBinaryFile f ReadMode+ header <- B.hGet h 2+ if header /= BC.pack "\US\139" then+ do hClose h+ mmapFilePS f+ else+ do hSeek h SeekFromEnd (-4)+ len <- hGetLittleEndInt h+ hClose h+ let decompress+ = GZ.decompressWith+ GZ.defaultDecompressParams{GZ.decompressBufferSize = len}+ fmap (B.concat . BL.toChunks . decompress) $+ fmap (BL.fromChunks . (: [])) $ B.readFile f BL.readFile f+ withCString f $+ \ fstr ->+ withCString "rb" $+ \ rb ->+ do gzf <- c_gzopen fstr rb+ when (gzf == nullPtr) $ fail $ "problem opening file " ++ f+ fp <- BI.mallocByteString len+ debugForeignPtr fp $ "gzReadFilePS " ++ f+ lread <- withForeignPtr fp $+ \ p -> c_gzread gzf p (fromIntegral len)+ c_gzclose gzf+ when (fromIntegral lread /= len) $+ fail $ "problem gzreading file " ++ f+ return $ fromForeignPtr fp 0 len++hGetLittleEndInt :: Handle -> IO Int+hGetLittleEndInt h+ = do b1 <- ord `fmap` hGetChar h+ b2 <- ord `fmap` hGetChar h+ b3 <- ord `fmap` hGetChar h+ b4 <- ord `fmap` hGetChar h+ return $ b1 + 256 * b2 + 65536 * b3 + 16777216 * b4++gzWriteFilePS :: FilePath -> B.ByteString -> IO ()+gzWriteFilePS f ps = gzWriteFilePSs f [ps]++gzWriteFilePSs :: FilePath -> [B.ByteString] -> IO ()+gzWriteFilePSs f pss+ = BL.writeFile f $+ GZ.compress $+ BL.fromChunks pss withCString f $+ \ fstr ->+ withCString "wb" $+ \ wb ->+ do gzf <- c_gzopen fstr wb+ when (gzf == nullPtr) $+ fail $ "problem gzopening file for write: " ++ f+ mapM_ (gzWriteToGzf gzf) pss `catch`+ \ _ -> fail $ "problem gzwriting file: " ++ f+ c_gzclose gzf++gzWriteToGzf :: Ptr () -> B.ByteString -> IO ()+gzWriteToGzf gzf ps+ = case BI.toForeignPtr ps of+ (_, _, 0) -> return ()+ (x, s, l) -> do lw <- withForeignPtr x $+ \ p -> c_gzwrite gzf (p `plusPtr` s) (fromIntegral l)+ when (fromIntegral lw /= l) $ fail $ "problem in gzWriteToGzf"++mmapFilePS :: FilePath -> IO B.ByteString+mmapFilePS f+ = do x <- mmapFileByteString f Nothing `catch`+ (\ _ ->+ do size <- fileSize `fmap` getSymbolicLinkStatus f+ if size == 0 then return B.empty else+ performGC >> mmapFileByteString f Nothing)+ return x+mmapFilePS = B.readFile++foreign import ccall unsafe "static fpstring.h conv_to_hex"+ conv_to_hex :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromPS2Hex :: B.ByteString -> B.ByteString+fromPS2Hex ps+ = case BI.toForeignPtr ps of+ (x, s, l) -> BI.unsafeCreate (2 * l) $+ \ p ->+ withForeignPtr x $+ \ f -> conv_to_hex p (f `plusPtr` s) $ fromIntegral l++foreign import ccall unsafe "static fpstring.h conv_from_hex"+ conv_from_hex :: Ptr Word8 -> Ptr Word8 -> CInt -> IO ()++fromHex2PS :: B.ByteString -> B.ByteString+fromHex2PS ps+ = case BI.toForeignPtr ps of+ (x, s, l) -> BI.unsafeCreate (l `div` 2) $+ \ p ->+ withForeignPtr x $+ \ f -> conv_from_hex p (f `plusPtr` s) (fromIntegral $ l `div` 2)++betweenLinesPS ::+ B.ByteString ->+ B.ByteString -> B.ByteString -> Maybe (B.ByteString)+betweenLinesPS start end ps+ = case break (start ==) (linesPS ps) of+ (_, _ : rest@(bs1 : _)) -> case BI.toForeignPtr bs1 of+ (ps1, s1, _) -> case break (end ==) rest of+ (_, bs2 : _) -> case BI.toForeignPtr bs2+ of+ (_, s2, _) -> Just $+ fromForeignPtr+ ps1+ s1+ (s2+ -+ s1)+ _ -> Nothing+ _ -> Nothing++break_after_nth_newline ::+ Int -> B.ByteString -> Maybe (B.ByteString, B.ByteString)+break_after_nth_newline 0 the_ps+ | B.null the_ps = Just (B.empty, B.empty)+break_after_nth_newline n the_ps+ = case BI.toForeignPtr the_ps of+ (fp, the_s, l) -> unsafePerformIO $+ withForeignPtr fp $+ \ p ->+ do let findit 0 s | s == end = return $ Just (the_ps, B.empty)+ findit _ s | s == end = return Nothing+ findit 0 s+ = let left_l = s - the_s in+ return $+ Just+ (fromForeignPtr fp the_s left_l,+ fromForeignPtr fp s (l - left_l))+ findit i s+ = do w <- peekElemOff p s+ if w == nl then findit (i - 1) (s + 1) else+ findit i (s + 1)+ nl = BI.c2w '\n'+ end = the_s + l+ findit n the_s++break_before_nth_newline ::+ Int -> B.ByteString -> (B.ByteString, B.ByteString)+break_before_nth_newline 0 the_ps+ | B.null the_ps = (B.empty, B.empty)+break_before_nth_newline n the_ps+ = case BI.toForeignPtr the_ps of+ (fp, the_s, l) -> unsafePerformIO $+ withForeignPtr fp $+ \ p ->+ do let findit _ s | s == end = return (the_ps, B.empty)+ findit i s+ = do w <- peekElemOff p s+ if w == nl then+ if i == 0 then+ let left_l = s - the_s in+ return+ (fromForeignPtr fp the_s left_l,+ fromForeignPtr fp s (l - left_l))+ else findit (i - 1) (s + 1)+ else findit i (s + 1)+ nl = BI.c2w '\n'+ end = the_s + l+ findit n the_s
+ tests/examples/CApiFFI.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE CApiFFI #-}+foo = capi+
+ tests/examples/CApiFFI.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CApiFFI.hs.parser.golden view
@@ -0,0 +1,72 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CApiFFI.hs" 1 1 1 1+ , SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 1+ , SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 1+ , SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 1+ , SrcSpan "tests/examples/CApiFFI.hs" 4 1 4 1+ , SrcSpan "tests/examples/CApiFFI.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 1 1 1 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CApiFFI.hs" 1 1 1 13+ , SrcSpan "tests/examples/CApiFFI.hs" 1 22 1 25+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 1 14 1 21+ , srcInfoPoints = []+ }+ "CApiFFI"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 1 2 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 5 2 11+ , srcInfoPoints = [ SrcSpan "tests/examples/CApiFFI.hs" 2 5 2 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 7 2 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 7 2 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CApiFFI.hs" 2 7 2 11+ , srcInfoPoints = []+ }+ "capi"))))+ Nothing+ ]+ , []+ )
+ tests/examples/CApiFFI.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CApiFFI.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE CApiFFI #-}+foo = capi
+ tests/examples/CStyleLinePragmas.hs view
@@ -0,0 +1,2 @@+#line 1 "Main.hs"+#line 2 "Main.hs"
+ tests/examples/CStyleLinePragmas.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/CStyleLinePragmas.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+ (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/CStyleLinePragmas.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/CStyleLinePragmas.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/CStyleLinePragmas.hs" 1 1) "Parse error: #"
+ tests/examples/ClassContext.hs view
@@ -0,0 +1,2 @@+f :: Ord (i Int) => i Int -> i Int+f = undefined
+ tests/examples/ClassContext.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassContext.hs.parser.golden view
@@ -0,0 +1,228 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 1 1 1+ , SrcSpan "tests/examples/ClassContext.hs" 1 1 1 1+ , SrcSpan "tests/examples/ClassContext.hs" 1 1 1 1+ , SrcSpan "tests/examples/ClassContext.hs" 2 1 2 1+ , SrcSpan "tests/examples/ClassContext.hs" 3 1 3 1+ , SrcSpan "tests/examples/ClassContext.hs" 3 1 3 1+ ]+ }+ Nothing+ []+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 1 1 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 3 1 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 1 1 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 35+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ "Ord")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 10 1 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 10 1 11+ , SrcSpan "tests/examples/ClassContext.hs" 1 16 1 17+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 16+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12+ , srcInfoPoints = []+ }+ "i"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16+ , srcInfoPoints = []+ }+ "Int")))))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 1 27 1 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 26+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 22+ , srcInfoPoints = []+ }+ "i"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 23 1 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 23 1 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 23 1 26+ , srcInfoPoints = []+ }+ "Int"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 30 1 35+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 30 1 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 30 1 31+ , srcInfoPoints = []+ }+ "i"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 32 1 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 32 1 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 32 1 35+ , srcInfoPoints = []+ }+ "Int"))))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 1 2 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 3 2 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassContext.hs" 2 3 2 4 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 5 2 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 5 2 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 2 5 2 14+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ , []+ )
+ tests/examples/ClassContext.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassContext.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+f :: Ord (i Int) => i Int -> i Int+f = undefined
+ tests/examples/ClassDeclSrcSpan.hs view
@@ -0,0 +1,6 @@++class C1 a where+ toString :: a -> String++t1 :: String+t1 = "Hello"
+ tests/examples/ClassDeclSrcSpan.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassDeclSrcSpan.hs.parser.golden view
@@ -0,0 +1,204 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 1+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 1+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 1+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 1+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 1+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 7 1 7 1+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 7 1 7 1+ ]+ }+ Nothing+ []+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 1 2 6+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 12 2 17+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 5+ , SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 7 2 11+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 7 2 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 7 2 9+ , srcInfoPoints = []+ }+ "C1"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 14 3 16 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 14 3 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 5 3 13+ , srcInfoPoints = []+ }+ "toString"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 17 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 19 3 21 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 22 3 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 22 3 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 3 22 3 28+ , srcInfoPoints = []+ }+ "String")))))+ ])+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 4 5 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 1 5 3+ , srcInfoPoints = []+ }+ "t1"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 7 5 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 7 5 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 5 7 5 13+ , srcInfoPoints = []+ }+ "String")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 1 6 3+ , srcInfoPoints = []+ }+ "t1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 4 6 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 4 6 5 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 6 6 13+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassDeclSrcSpan.hs" 6 6 6 13+ , srcInfoPoints = []+ }+ "Hello"+ "Hello")))+ Nothing+ ]+ , []+ )
+ tests/examples/ClassDeclSrcSpan.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassDeclSrcSpan.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+class C1 a where+ toString :: a -> String++t1 :: String+t1 = "Hello"
+ tests/examples/ClassInstType.hs view
@@ -0,0 +1,17 @@+module ClassInstType where++class Dir d where+ localDir :: d -> IO FilePath++instance Dir Directory where+ localDir (Local f) = return f++ localDir (Darcs {url=url,darcsVersion=Patch patch,subDirectory=subDir}) = do+ tmp <- createTempDir 0 "haskelld"+ darcsOut <- runDarcsCommand tmp "get" ["--lazy","--to-match","hash "++ patch,url,"fs"]+ print darcsOut+ let (ExitSuccess,"",out) = darcsOut+ print out+ return $ tmp </> "fs" </> subDir++type URL = String
+ tests/examples/ClassInstType.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassInstType.hs.parser.golden view
@@ -0,0 +1,1420 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 1 1 18 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 1+ , SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 1+ , SrcSpan "tests/examples/ClassInstType.hs" 3 1 3 1+ , SrcSpan "tests/examples/ClassInstType.hs" 6 1 6 1+ , SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 1+ , SrcSpan "tests/examples/ClassInstType.hs" 18 1 18 1+ , SrcSpan "tests/examples/ClassInstType.hs" 18 1 18 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 1 1 1 7+ , SrcSpan "tests/examples/ClassInstType.hs" 1 22 1 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 1 8 1 21+ , srcInfoPoints = []+ }+ "ClassInstType")+ Nothing+ Nothing))+ []+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 1 4 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 3 1 3 6+ , SrcSpan "tests/examples/ClassInstType.hs" 3 13 3 18+ , SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 3+ , SrcSpan "tests/examples/ClassInstType.hs" 6 1 6 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 7 3 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 7 3 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 7 3 10+ , srcInfoPoints = []+ }+ "Dir"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ "d")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 4 12 4 14 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 4 12 4 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 3 4 11+ , srcInfoPoints = []+ }+ "localDir"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 15 4 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 4 17 4 19 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ "d"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 31+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 4 20 4 22+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 4 23 4 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 4 23 4 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 4 23 4 31+ , srcInfoPoints = []+ }+ "FilePath"))))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 1 17 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 6 1 6 9+ , SrcSpan "tests/examples/ClassInstType.hs" 6 24 6 29+ , SrcSpan "tests/examples/ClassInstType.hs" 7 3 7 3+ , SrcSpan "tests/examples/ClassInstType.hs" 9 3 9 3+ , SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 23+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 10 6 13+ , srcInfoPoints = []+ }+ "Dir")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 14 6 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 14 6 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 6 14 6 23+ , srcInfoPoints = []+ }+ "Directory")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 15 37+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 15 37+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 7 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 3 7 11+ , srcInfoPoints = []+ }+ "localDir")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 12 7 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 7 12 7 13+ , SrcSpan "tests/examples/ClassInstType.hs" 7 20 7 21+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 13 7 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 13 7 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 13 7 18+ , srcInfoPoints = []+ }+ "Local"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 19 7 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 19 7 20+ , srcInfoPoints = []+ }+ "f")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 22 7 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 7 22 7 23 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 24 7 30+ , srcInfoPoints = []+ }+ "return")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 31 7 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 31 7 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 7 31 7 32+ , srcInfoPoints = []+ }+ "f")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 3 15 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 3 9 11+ , srcInfoPoints = []+ }+ "localDir")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 12 9 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 9 12 9 13+ , SrcSpan "tests/examples/ClassInstType.hs" 9 73 9 74+ ]+ }+ (PRec+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 9 13 9 73+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 9 19 9 20+ , SrcSpan "tests/examples/ClassInstType.hs" 9 27 9 28+ , SrcSpan "tests/examples/ClassInstType.hs" 9 52 9 53+ , SrcSpan "tests/examples/ClassInstType.hs" 9 72 9 73+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 13 9 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 13 9 18+ , srcInfoPoints = []+ }+ "Darcs"))+ [ PFieldPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 20 9 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 9 23 9 24 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 20 9 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 20 9 23+ , srcInfoPoints = []+ }+ "url"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 24 9 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 24 9 27+ , srcInfoPoints = []+ }+ "url"))+ , PFieldPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 28 9 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 9 40 9 41 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 28 9 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 28 9 40+ , srcInfoPoints = []+ }+ "darcsVersion"))+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 41 9 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 41 9 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 9 41 9 46+ , srcInfoPoints = []+ }+ "Patch"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 47 9 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 9 47 9 52+ , srcInfoPoints = []+ }+ "patch")+ ])+ , PFieldPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 53 9 72+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 9 65 9 66 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 53 9 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 53 9 65+ , srcInfoPoints = []+ }+ "subDirectory"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 66 9 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 66 9 72+ , srcInfoPoints = []+ }+ "subDir"))+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 75 15 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 9 75 9 76 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 9 77 15 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 9 77 9 79+ , SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 5+ , SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 5+ , SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 5+ , SrcSpan "tests/examples/ClassInstType.hs" 13 5 13 5+ , SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 5+ , SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 5+ , SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 10 9 10 11 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 10 5 10 8+ , srcInfoPoints = []+ }+ "tmp"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 10 12 10 38+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 10 12 10 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 10 12 10 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 10 12 10 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 10+ 12+ 10+ 25+ , srcInfoPoints = []+ }+ "createTempDir")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 10 26 10 27+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 10 26 10 27+ , srcInfoPoints = []+ }+ 0+ "0")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 10 28 10 38+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 10 28 10 38+ , srcInfoPoints = []+ }+ "haskelld"+ "haskelld")))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 91+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 11 14 11 16 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 11 5 11 13+ , srcInfoPoints = []+ }+ "darcsOut"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 11 17 11 91+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 11 17 11 42+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 17 11 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 17 11 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 17+ 11+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 17+ 11+ 32+ , srcInfoPoints = []+ }+ "runDarcsCommand")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 33 11 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 33+ 11+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 33+ 11+ 36+ , srcInfoPoints = []+ }+ "tmp"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 37 11 42+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 37 11 42+ , srcInfoPoints = []+ }+ "get"+ "get")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 11 43 11 91+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ClassInstType.hs" 11 43 11 44+ , SrcSpan+ "tests/examples/ClassInstType.hs" 11 52 11 53+ , SrcSpan+ "tests/examples/ClassInstType.hs" 11 65 11 66+ , SrcSpan+ "tests/examples/ClassInstType.hs" 11 81 11 82+ , SrcSpan+ "tests/examples/ClassInstType.hs" 11 85 11 86+ , SrcSpan+ "tests/examples/ClassInstType.hs" 11 90 11 91+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 44 11 52+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 44 11 52+ , srcInfoPoints = []+ }+ "--lazy"+ "--lazy")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 53 11 65+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 53 11 65+ , srcInfoPoints = []+ }+ "--to-match"+ "--to-match")+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 66 11 81+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 66 11 73+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 66+ 11+ 73+ , srcInfoPoints = []+ }+ "hash "+ "hash "))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 73 11 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 73+ 11+ 75+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 73+ 11+ 75+ , srcInfoPoints = []+ }+ "++")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 76 11 81+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 76+ 11+ 81+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 76+ 11+ 81+ , srcInfoPoints = []+ }+ "patch")))+ , Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 82 11 85+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 82 11 85+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 11+ 82+ 11+ 85+ , srcInfoPoints = []+ }+ "url"))+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 86 11 90+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 11 86 11 90+ , srcInfoPoints = []+ }+ "fs"+ "fs")+ ]))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 19+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 12 5 12 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 12 5 12 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 12 5 12 10+ , srcInfoPoints = []+ }+ "print")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ "darcsOut"))))+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 13 5 13 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 13 5 13 8 ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 13 9 13 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 13 9 13 9+ , SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 13 9 13 40+ , srcInfoPoints = []+ }+ (PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 13 9 13 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ClassInstType.hs" 13 9 13 10+ , SrcSpan+ "tests/examples/ClassInstType.hs" 13 21 13 22+ , SrcSpan+ "tests/examples/ClassInstType.hs" 13 24 13 25+ , SrcSpan+ "tests/examples/ClassInstType.hs" 13 28 13 29+ ]+ }+ Boxed+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 10+ 13+ 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 10+ 13+ 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 10+ 13+ 21+ , srcInfoPoints = []+ }+ "ExitSuccess"))+ []+ , PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 22+ 13+ 24+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 22+ 13+ 24+ , srcInfoPoints = []+ })+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 22+ 13+ 24+ , srcInfoPoints = []+ }+ ""+ "")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 25+ 13+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 25+ 13+ 28+ , srcInfoPoints = []+ }+ "out")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 13 30 13 40+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ClassInstType.hs" 13 30 13 31+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 13 32 13 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 32+ 13+ 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 13+ 32+ 13+ 40+ , srcInfoPoints = []+ }+ "darcsOut"))))+ Nothing+ ])+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 14 5 14 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 14 5 14 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 14 5 14 10+ , srcInfoPoints = []+ }+ "print")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 14 11 14 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 14 11 14 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 14 11 14 14+ , srcInfoPoints = []+ }+ "out"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 37+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 15 5 15 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 5 15 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 5 15 11+ , srcInfoPoints = []+ }+ "return")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 15 12 15 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 12 15 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 12 15 13+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 15 14 15 37+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 14 15 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 14 15 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 15+ 14+ 15+ 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 15+ 14+ 15+ 17+ , srcInfoPoints = []+ }+ "tmp")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 18 15 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 15+ 18+ 15+ 21+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 15+ 18+ 15+ 21+ , srcInfoPoints = []+ }+ "</>")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 22 15 26+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 15+ 22+ 15+ 26+ , srcInfoPoints = []+ }+ "fs"+ "fs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 27 15 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 27 15 30+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 15+ 27+ 15+ 30+ , srcInfoPoints = []+ }+ "</>")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 31 15 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs" 15 31 15 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ClassInstType.hs"+ 15+ 31+ 15+ 37+ , srcInfoPoints = []+ }+ "subDir")))))+ ]))+ Nothing+ ])+ ])+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClassInstType.hs" 17 1 17 5+ , SrcSpan "tests/examples/ClassInstType.hs" 17 10 17 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 17 6 17 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ClassInstType.hs" 17 6 17 9+ , srcInfoPoints = []+ }+ "URL"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 17 12 17 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 17 12 17 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClassInstType.hs" 17 12 17 18+ , srcInfoPoints = []+ }+ "String")))+ ]+ , []+ )
+ tests/examples/ClassInstType.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClassInstType.hs.prettyprinter.golden view
@@ -0,0 +1,19 @@+module ClassInstType where++class Dir d where+ localDir :: d -> IO FilePath++instance Dir Directory where+ localDir (Local f) = return f+ localDir+ (Darcs{url = url, darcsVersion = Patch patch,+ subDirectory = subDir})+ = do tmp <- createTempDir 0 "haskelld"+ darcsOut <- runDarcsCommand tmp "get"+ ["--lazy", "--to-match", "hash " ++ patch, url, "fs"]+ print darcsOut+ let (ExitSuccess, "", out) = darcsOut+ print out+ return $ tmp </> "fs" </> subDir++type URL = String
+ tests/examples/ClosedTypeFamily.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeFamilies, DataKinds #-}++module ClosedTypeFamily where++type family Eq x y where+ Eq x x = True+ Eq x y = False+
+ tests/examples/ClosedTypeFamily.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClosedTypeFamily.hs.parser.golden view
@@ -0,0 +1,293 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 1 1+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 1+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 1+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 1 5 1+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 9 1 9 1+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 1 3 7+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 25 3 30+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 3 8 3 24+ , srcInfoPoints = []+ }+ "ClosedTypeFamily")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 1 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 1 1 13+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 26 1 27+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 38 1 41+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 1 28 1 37+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ ]+ []+ [ ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 1 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 1 5 5+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 6 5 12+ , SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 20 5 25+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 19+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 13 5 15+ , srcInfoPoints = []+ }+ "Eq"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ "x")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ "y")))+ Nothing+ Nothing+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 10 6 11 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 9+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 7+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 5+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 3 6 5+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 6 6 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 6 6 7+ , srcInfoPoints = []+ }+ "x")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ "x")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 12 6 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 12 6 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 6 12 6 16+ , srcInfoPoints = []+ }+ "True")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 10 7 11 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 9+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 7+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 5+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 3 7 5+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 6 7 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 6 7 7+ , srcInfoPoints = []+ }+ "x")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 8 7 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 8 7 9+ , srcInfoPoints = []+ }+ "y")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 12 7 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 12 7 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ClosedTypeFamily.hs" 7 12 7 17+ , srcInfoPoints = []+ }+ "False")))+ ]+ ]+ , []+ )
+ tests/examples/ClosedTypeFamily.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ClosedTypeFamily.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeFamilies, DataKinds #-}+module ClosedTypeFamily where++type family Eq x y where+ Eq x x = True+ Eq x y = False
+ tests/examples/Completesig03A.hs view
@@ -0,0 +1,6 @@+module Completesig03A where++data A = A | B++{-# COMPLETE A #-}+
+ tests/examples/Completesig03A.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Completesig03A.hs.parser.golden view
@@ -0,0 +1,123 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 1+ , SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 1+ , SrcSpan "tests/examples/Completesig03A.hs" 3 1 3 1+ , SrcSpan "tests/examples/Completesig03A.hs" 5 1 5 1+ , SrcSpan "tests/examples/Completesig03A.hs" 7 1 7 1+ , SrcSpan "tests/examples/Completesig03A.hs" 7 1 7 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Completesig03A.hs" 1 1 1 7+ , SrcSpan "tests/examples/Completesig03A.hs" 1 23 1 28+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 1 8 1 22+ , srcInfoPoints = []+ }+ "Completesig03A")+ Nothing+ Nothing))+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 1 3 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Completesig03A.hs" 3 8 3 9+ , SrcSpan "tests/examples/Completesig03A.hs" 3 12 3 13+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ "A"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Completesig03A.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Completesig03A.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Completesig03A.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ "A")+ [])+ , QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Completesig03A.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Completesig03A.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Completesig03A.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ "B")+ [])+ ]+ []+ , CompletePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Completesig03A.hs" 5 1 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Completesig03A.hs" 5 1 5 13+ , SrcSpan "tests/examples/Completesig03A.hs" 5 16 5 19+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Completesig03A.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ "A"+ ]+ Nothing+ ]+ , []+ )
+ tests/examples/Completesig03A.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Completesig03A.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module Completesig03A where++data A = A+ | B++{-# COMPLETE A #-}
+ tests/examples/ConstraintKinds.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+class Foo a where++data Bar a+type Bazable a b = (Bar a ~ Maybe b)++baz :: Bazable a b => a -> a+baz = id
+ tests/examples/ConstraintKinds.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds.hs.parser.golden view
@@ -0,0 +1,493 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 11 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 1 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 2 1 2 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 3 1 3 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 7 1 7 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 9 1 9 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 11 1 11 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 11 1 11 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 1 1 1 13+ , SrcSpan "tests/examples/ConstraintKinds.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 2 1 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 2 1 2 13+ , SrcSpan "tests/examples/ConstraintKinds.hs" 2 30 2 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 2 14 2 29+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 3 1 3 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 3 1 3 13+ , SrcSpan "tests/examples/ConstraintKinds.hs" 3 36 3 39+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 3 14 3 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 6 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 4 1 4 6+ , SrcSpan "tests/examples/ConstraintKinds.hs" 4 13 4 18+ , SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 1+ , SrcSpan "tests/examples/ConstraintKinds.hs" 6 0 6 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 4 7 4 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 4 7 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 4 7 4 10+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just [])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 1 6 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 6 6 6 11+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 6 6 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 6 6 6 9+ , srcInfoPoints = []+ }+ "Bar"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 6 10 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 6 10 6 11+ , srcInfoPoints = []+ }+ "a")))+ []+ []+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 1 7 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 7 1 7 5+ , SrcSpan "tests/examples/ConstraintKinds.hs" 7 18 7 19+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 17+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 15+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 6 7 13+ , srcInfoPoints = []+ }+ "Bazable"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ "b")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 20 7 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 7 20 7 21+ , SrcSpan "tests/examples/ConstraintKinds.hs" 7 36 7 37+ ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 7 27 7 28 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 21 7 24+ , srcInfoPoints = []+ }+ "Bar")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 29 7 34+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 35 7 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 7 35 7 36+ , srcInfoPoints = []+ }+ "b")))))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 1 9 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 5 9 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ConstraintKinds.hs" 9 1 9 4+ , srcInfoPoints = []+ }+ "baz"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 29+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15+ , srcInfoPoints = []+ }+ "Bazable")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19+ , srcInfoPoints = []+ }+ "b"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 23 9 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 25 9 27 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 23 9 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 23 9 24+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 28 9 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 9 28 9 29+ , srcInfoPoints = []+ }+ "a"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 9+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 10 1 10 4+ , srcInfoPoints = []+ }+ "baz"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 10 5 10 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds.hs" 10 5 10 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 10 7 10 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 10 7 10 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds.hs" 10 7 10 9+ , srcInfoPoints = []+ }+ "id"))))+ Nothing+ ]+ , []+ )
+ tests/examples/ConstraintKinds.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}++class Foo a where++data Bar a++type Bazable a b = (Bar a ~ Maybe b)++baz :: Bazable a b => a -> a+baz = id
+ tests/examples/ConstraintKinds2.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE RankNTypes #-}++data Dict p where+ Dict :: p => Dict p
+ tests/examples/ConstraintKinds2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds2.hs.parser.golden view
@@ -0,0 +1,216 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 1 1+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 2 1 2 1+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 3 1 3 1+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 1+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 1+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 1+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 7 1 7 1+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 1 1 1 13+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 2 1 2 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 2 1 2 13+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 2 20 2 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 2 14 2 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 3 1 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 3 1 3 13+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 3 25 3 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 3 14 3 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 7 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 13 5 18+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 6 5 6 5+ , SrcSpan "tests/examples/ConstraintKinds2.hs" 7 1 7 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 1 5 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 6 5 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 6 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 6 5 10+ , srcInfoPoints = []+ }+ "Dict"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "p")))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 5 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 10 6 12 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 5 6 9+ , srcInfoPoints = []+ }+ "Dict")+ Nothing+ Nothing+ Nothing+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 24+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ "p")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 18 6 22+ , srcInfoPoints = []+ }+ "Dict")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 23 6 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 23 6 24+ , srcInfoPoints = []+ }+ "p"))))+ ]+ []+ ]+ , []+ )
+ tests/examples/ConstraintKinds2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds2.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE RankNTypes #-}++data Dict p where+ Dict :: p => Dict p
+ tests/examples/ConstraintKinds3.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}++class Foo c a where++ bar :: (c a) => a -> a+
+ tests/examples/ConstraintKinds3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds3.hs.parser.golden view
@@ -0,0 +1,246 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 1+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 1+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 1+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 1+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 1 1 13+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 2 1 2 13+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 2 36 2 39+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 2 14 2 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 6 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 1 4 6+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 4 15 4 20+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 3+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 8 1 8 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 7 4 10+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ "c")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 7 6 9 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 7 6 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 3 6 6+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 25+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 11+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 14 6 15+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 10 6 11+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 14 6 15+ , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstraintKinds3.hs" 6 11 6 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstraintKinds3.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ "c"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstraintKinds3.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstraintKinds3.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 21 6 23 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 19 6 20+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 24 6 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstraintKinds3.hs" 6 24 6 25+ , srcInfoPoints = []+ }+ "a")))))+ ])+ ]+ , []+ )
+ tests/examples/ConstraintKinds3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstraintKinds3.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}++class Foo c a where+ bar :: (c a) => a -> a
+ tests/examples/ConstructorAndClassOperators.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators, MultiParamTypeClasses #-}++ins :: (:=>) b h => b :- h++data (:><:) a b = (:><:) a b
+ tests/examples/ConstructorAndClassOperators.hs.exactprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeOperators, MultiParamTypeClasses #-}++ins :: (:=>) b h => b :- h++data :><: a b = :><: a b+
+ tests/examples/ConstructorAndClassOperators.hs.parser.golden view
@@ -0,0 +1,354 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 1 1+ , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 1+ , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 1+ , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 1+ , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 1 5 1+ , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 6 1 6 1+ , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 1 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 1 1 13+ , SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 1 27 1 28+ , SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 1 51 1 54+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 1 29 1 50+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 5 3 7+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "ins"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 27+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 13+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 9+ , SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs"+ 3+ 9+ 3+ 12+ , SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs"+ 3+ 12+ 3+ 13+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs"+ 3+ 9+ 3+ 12+ , srcInfoPoints = []+ }+ ":=>")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17+ , srcInfoPoints = []+ }+ "h"))))))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 21 3 27+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ "b"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 23 3 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 23 3 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 23 3 25+ , srcInfoPoints = []+ }+ ":-")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ "h"))))+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 1 5 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 5 17 5 18+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 1 5 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 16+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 14+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 6 5 7+ , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 7 5 11+ , SrcSpan+ "tests/examples/ConstructorAndClassOperators.hs" 5 11 5 12+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 7 5 11+ , srcInfoPoints = []+ }+ ":><:"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 13 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 13 5 14+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 19 5 29+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 19 5 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 20 5 24+ , srcInfoPoints = []+ }+ ":><:")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 26 5 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 26 5 27+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 28 5 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 5 28 5 29+ , srcInfoPoints = []+ }+ "b")+ ])+ ]+ []+ ]+ , []+ )
+ tests/examples/ConstructorAndClassOperators.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ConstructorAndClassOperators.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators, MultiParamTypeClasses #-}++ins :: (:=>) b h => b :- h++data (:><:) a b = (:><:) a b
+ tests/examples/ContextOrdering.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ConstraintKinds #-}+module ContextOrdering where++foo :: (x m a) => Int+foo = 5
+ tests/examples/ContextOrdering.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ContextOrdering.hs.parser.golden view
@@ -0,0 +1,208 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ContextOrdering.hs" 1 1 1 1+ , SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 1+ , SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 1+ , SrcSpan "tests/examples/ContextOrdering.hs" 4 1 4 1+ , SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 1+ , SrcSpan "tests/examples/ContextOrdering.hs" 6 1 6 1+ , SrcSpan "tests/examples/ContextOrdering.hs" 6 1 6 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ContextOrdering.hs" 2 1 2 7+ , SrcSpan "tests/examples/ContextOrdering.hs" 2 24 2 29+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 2 8 2 23+ , srcInfoPoints = []+ }+ "ContextOrdering")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ContextOrdering.hs" 1 1 1 13+ , SrcSpan "tests/examples/ContextOrdering.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 1 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ContextOrdering.hs" 4 5 4 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 22+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 9+ , SrcSpan "tests/examples/ContextOrdering.hs" 4 14 4 15+ , SrcSpan "tests/examples/ContextOrdering.hs" 4 16 4 18+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ContextOrdering.hs" 4 8 4 9+ , SrcSpan "tests/examples/ContextOrdering.hs" 4 14 4 15+ , SrcSpan "tests/examples/ContextOrdering.hs" 4 16 4 18+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ "x"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ "m")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "a")))))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ContextOrdering.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ "Int"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 5 5 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ContextOrdering.hs" 5 5 5 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ContextOrdering.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ 5+ "5")))+ Nothing+ ]+ , []+ )
+ tests/examples/ContextOrdering.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ContextOrdering.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE ConstraintKinds #-}+module ContextOrdering where++foo :: (x m a) => Int+foo = 5
+ tests/examples/CxtWhitespace.hs view
@@ -0,0 +1,6 @@+-- is not ok+instance ( Eq h) => Eq h++-- is ok+instance ( Eq h, Eq h) => Eq h+
+ tests/examples/CxtWhitespace.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CxtWhitespace.hs.parser.golden view
@@ -0,0 +1,268 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 1+ , SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 1+ , SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 1+ , SrcSpan "tests/examples/CxtWhitespace.hs" 5 1 5 1+ , SrcSpan "tests/examples/CxtWhitespace.hs" 7 1 7 1+ , SrcSpan "tests/examples/CxtWhitespace.hs" 7 1 7 1+ ]+ }+ Nothing+ []+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 1 2 9 ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 25+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 11+ , SrcSpan "tests/examples/CxtWhitespace.hs" 2 16 2 17+ , SrcSpan "tests/examples/CxtWhitespace.hs" 2 18 2 20+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CxtWhitespace.hs" 2 10 2 11+ , SrcSpan "tests/examples/CxtWhitespace.hs" 2 16 2 17+ , SrcSpan "tests/examples/CxtWhitespace.hs" 2 18 2 20+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ "h")))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 25+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 23+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ "h"))))+ Nothing+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 1 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CxtWhitespace.hs" 5 1 5 9 ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 10 5 31+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 10 5 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/CxtWhitespace.hs" 5 10 5 11+ , SrcSpan "tests/examples/CxtWhitespace.hs" 5 16 5 17+ , SrcSpan "tests/examples/CxtWhitespace.hs" 5 22 5 23+ , SrcSpan "tests/examples/CxtWhitespace.hs" 5 24 5 26+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ "h")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ "h")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 31+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 27 5 29+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 30 5 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 30 5 31+ , srcInfoPoints = []+ }+ "h"))))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/CxtWhitespace.hs" 1 1 1 13)+ " is not ok"+ , Comment+ False (SrcSpan "tests/examples/CxtWhitespace.hs" 4 1 4 9) " is ok"+ ]+ )
+ tests/examples/CxtWhitespace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/CxtWhitespace.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+instance (Eq h) => Eq h++instance (Eq h, Eq h) => Eq h
+ tests/examples/DataHeadParen.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module DataHeadParen where++data (a1 :< a2) = Foo
+ tests/examples/DataHeadParen.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataHeadParen.hs.parser.golden view
@@ -0,0 +1,129 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataHeadParen.hs" 1 1 1 1+ , SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 1+ , SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 1+ , SrcSpan "tests/examples/DataHeadParen.hs" 4 1 4 1+ , SrcSpan "tests/examples/DataHeadParen.hs" 5 1 5 1+ , SrcSpan "tests/examples/DataHeadParen.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataHeadParen.hs" 2 1 2 7+ , SrcSpan "tests/examples/DataHeadParen.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "DataHeadParen")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataHeadParen.hs" 1 1 1 13+ , SrcSpan "tests/examples/DataHeadParen.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 1 4 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataHeadParen.hs" 4 18 4 19 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 1 4 5+ , srcInfoPoints = []+ })+ Nothing+ (DHParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 6 4 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataHeadParen.hs" 4 6 4 7+ , SrcSpan "tests/examples/DataHeadParen.hs" 4 15 4 16+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 15+ , srcInfoPoints = []+ }+ (DHInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 15+ , srcInfoPoints = []+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 7 4 9+ , srcInfoPoints = []+ }+ "a1"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 10 4 12+ , srcInfoPoints = []+ }+ ":<"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 13 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 13 4 15+ , srcInfoPoints = []+ }+ "a2"))))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 20 4 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 20 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataHeadParen.hs" 4 20 4 23+ , srcInfoPoints = []+ }+ "Foo")+ [])+ ]+ []+ ]+ , []+ )
+ tests/examples/DataHeadParen.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataHeadParen.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module DataHeadParen where++data (a1 :< a2) = Foo
+ tests/examples/DataKinds.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}++class C1 (a :: Bool {- 1 -}) where+ c :: proxy a -> Int++class C2 (a :: [ * ])++data Baz = Baz+data Foo = Foo++class C3 (a :: [(Baz, Foo)])++class C4 (a :: ( * ))+++class C5 (a :: App foo baz)++class C6 (a :: (parens))++data X (a :: [*])++x1 = undefined :: X '[Int]+x2 = undefined :: X '[Int, Double]++data Y (a :: (*, Bool))++y1 = undefined :: Y '(Double, True)+y2 = undefined :: Y '(Double, 'False {-comment-})+++z1 = undefined :: X [ a -> b, X '[] ]+z2 = undefined :: Y (a -> b, True)
+ tests/examples/DataKinds.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds.hs.parser.golden view
@@ -0,0 +1,1523 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 1 1 35 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 1 1 1 1+ , SrcSpan "tests/examples/DataKinds.hs" 2 1 2 1+ , SrcSpan "tests/examples/DataKinds.hs" 3 1 3 1+ , SrcSpan "tests/examples/DataKinds.hs" 5 1 5 1+ , SrcSpan "tests/examples/DataKinds.hs" 5 1 5 1+ , SrcSpan "tests/examples/DataKinds.hs" 5 1 5 1+ , SrcSpan "tests/examples/DataKinds.hs" 8 1 8 1+ , SrcSpan "tests/examples/DataKinds.hs" 10 1 10 1+ , SrcSpan "tests/examples/DataKinds.hs" 11 1 11 1+ , SrcSpan "tests/examples/DataKinds.hs" 13 1 13 1+ , SrcSpan "tests/examples/DataKinds.hs" 15 1 15 1+ , SrcSpan "tests/examples/DataKinds.hs" 18 1 18 1+ , SrcSpan "tests/examples/DataKinds.hs" 20 1 20 1+ , SrcSpan "tests/examples/DataKinds.hs" 22 1 22 1+ , SrcSpan "tests/examples/DataKinds.hs" 24 1 24 1+ , SrcSpan "tests/examples/DataKinds.hs" 25 1 25 1+ , SrcSpan "tests/examples/DataKinds.hs" 27 1 27 1+ , SrcSpan "tests/examples/DataKinds.hs" 29 1 29 1+ , SrcSpan "tests/examples/DataKinds.hs" 30 1 30 1+ , SrcSpan "tests/examples/DataKinds.hs" 33 1 33 1+ , SrcSpan "tests/examples/DataKinds.hs" 34 1 34 1+ , SrcSpan "tests/examples/DataKinds.hs" 35 1 35 1+ , SrcSpan "tests/examples/DataKinds.hs" 35 1 35 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 1 1 1 13+ , SrcSpan "tests/examples/DataKinds.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "KindSignatures"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 2 1 2 13+ , SrcSpan "tests/examples/DataKinds.hs" 2 24 2 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 2 14 2 23+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 3 1 3 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 3 1 3 13+ , SrcSpan "tests/examples/DataKinds.hs" 3 24 3 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 3 14 3 23+ , srcInfoPoints = []+ }+ "PolyKinds"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 1 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 5 1 5 6+ , SrcSpan "tests/examples/DataKinds.hs" 5 30 5 35+ , SrcSpan "tests/examples/DataKinds.hs" 6 5 6 5+ , SrcSpan "tests/examples/DataKinds.hs" 8 1 8 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 7 5 29+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 7 5 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 7 5 9+ , srcInfoPoints = []+ }+ "C1"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 10 5 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 5 10 5 11+ , SrcSpan "tests/examples/DataKinds.hs" 5 13 5 15+ , SrcSpan "tests/examples/DataKinds.hs" 5 28 5 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "a")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 16 5 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 16 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 16 5 20+ , srcInfoPoints = []+ }+ "Bool")))))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 5 6 24+ , srcInfoPoints = [ SrcSpan "tests/examples/DataKinds.hs" 6 7 6 9 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 5 6 24+ , srcInfoPoints = [ SrcSpan "tests/examples/DataKinds.hs" 6 7 6 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 5 6 6+ , srcInfoPoints = []+ }+ "c"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 6 18 6 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 17+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 10 6 15+ , srcInfoPoints = []+ }+ "proxy"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 21 6 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 21 6 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 6 21 6 24+ , srcInfoPoints = []+ }+ "Int")))))+ ])+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 1 8 22+ , srcInfoPoints = [ SrcSpan "tests/examples/DataKinds.hs" 8 1 8 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 7 8 22+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 7 8 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 7 8 9+ , srcInfoPoints = []+ }+ "C2"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 10 8 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 8 10 8 11+ , SrcSpan "tests/examples/DataKinds.hs" 8 13 8 15+ , SrcSpan "tests/examples/DataKinds.hs" 8 21 8 22+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 11 8 12+ , srcInfoPoints = []+ }+ "a")+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 16 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 8 16 8 17+ , SrcSpan "tests/examples/DataKinds.hs" 8 20 8 21+ ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 18 8 19+ , srcInfoPoints = []+ }))))+ []+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 1 10 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 10 10 10 11 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 1 10 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 6 10 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 6 10 9+ , srcInfoPoints = []+ }+ "Baz"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 12 10 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 12 10 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 10 12 10 15+ , srcInfoPoints = []+ }+ "Baz")+ [])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 1 11 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 11 10 11 11 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 1 11 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 6 11 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 6 11 9+ , srcInfoPoints = []+ }+ "Foo"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 12 11 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 12 11 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 11 12 11 15+ , srcInfoPoints = []+ }+ "Foo")+ [])+ ]+ []+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 1 13 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 13 1 13 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 7 13 29+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 7 13 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 7 13 9+ , srcInfoPoints = []+ }+ "C3"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 10 13 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 13 10 13 11+ , SrcSpan "tests/examples/DataKinds.hs" 13 13 13 15+ , SrcSpan "tests/examples/DataKinds.hs" 13 28 13 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 11 13 12+ , srcInfoPoints = []+ }+ "a")+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 16 13 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 13 16 13 17+ , SrcSpan "tests/examples/DataKinds.hs" 13 27 13 28+ ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 17 13 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 13 17 13 18+ , SrcSpan "tests/examples/DataKinds.hs" 13 21 13 22+ , SrcSpan "tests/examples/DataKinds.hs" 13 26 13 27+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 18 13 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 18 13 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 18 13 21+ , srcInfoPoints = []+ }+ "Baz"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 23 13 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 23 13 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 23 13 26+ , srcInfoPoints = []+ }+ "Foo"))+ ]))))+ []+ Nothing+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 1 15 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 15 1 15 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 7 15 22+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 7 15 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 7 15 9+ , srcInfoPoints = []+ }+ "C4"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 10 15 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 15 10 15 11+ , SrcSpan "tests/examples/DataKinds.hs" 15 13 15 15+ , SrcSpan "tests/examples/DataKinds.hs" 15 21 15 22+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ "a")+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 16 15 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 15 16 15 17+ , SrcSpan "tests/examples/DataKinds.hs" 15 20 15 21+ ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 18 15 19+ , srcInfoPoints = []+ }))))+ []+ Nothing+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 1 18 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 18 1 18 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 7 18 28+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 7 18 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 7 18 9+ , srcInfoPoints = []+ }+ "C5"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 10 18 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 18 10 18 11+ , SrcSpan "tests/examples/DataKinds.hs" 18 13 18 15+ , SrcSpan "tests/examples/DataKinds.hs" 18 27 18 28+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 11 18 12+ , srcInfoPoints = []+ }+ "a")+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 27+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 19+ , srcInfoPoints = []+ }+ "App")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 20 18 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 20 18 23+ , srcInfoPoints = []+ }+ "foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 24 18 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 24 18 27+ , srcInfoPoints = []+ }+ "baz")))))+ []+ Nothing+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 1 20 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 20 1 20 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 7 20 25+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 7 20 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 7 20 9+ , srcInfoPoints = []+ }+ "C6"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 10 20 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 20 10 20 11+ , SrcSpan "tests/examples/DataKinds.hs" 20 13 20 15+ , SrcSpan "tests/examples/DataKinds.hs" 20 24 20 25+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 11 20 12+ , srcInfoPoints = []+ }+ "a")+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 16 20 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 20 16 20 17+ , SrcSpan "tests/examples/DataKinds.hs" 20 23 20 24+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 17 20 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 17 20 23+ , srcInfoPoints = []+ }+ "parens")))))+ []+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 1 22 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 1 22 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 6 22 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 6 22 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 6 22 7+ , srcInfoPoints = []+ }+ "X"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 8 22 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 22 8 22 9+ , SrcSpan "tests/examples/DataKinds.hs" 22 11 22 13+ , SrcSpan "tests/examples/DataKinds.hs" 22 17 22 18+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 9 22 10+ , srcInfoPoints = []+ }+ "a")+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 14 22 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 22 14 22 15+ , SrcSpan "tests/examples/DataKinds.hs" 22 16 22 17+ ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 15 22 16+ , srcInfoPoints = []+ }))))+ []+ []+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 1 24 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 1 24 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 1 24 3+ , srcInfoPoints = []+ }+ "x1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 4 24 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 24 4 24 5 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 24 16 24 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 6 24 15+ , srcInfoPoints = []+ }+ "undefined")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 19 24 20+ , srcInfoPoints = []+ }+ "X")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 21 24 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 24 21 24 22+ , SrcSpan "tests/examples/DataKinds.hs" 24 26 24 27+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 21 24 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 24 21 24 22+ , SrcSpan "tests/examples/DataKinds.hs" 24 26 24 27+ ]+ }+ True+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 23 24 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 24 23 24 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 24 23 24 26+ , srcInfoPoints = []+ }+ "Int"))+ ])))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 1 25 35+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 1 25 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 1 25 3+ , srcInfoPoints = []+ }+ "x2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 4 25 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 25 4 25 5 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 25 16 25 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 6 25 15+ , srcInfoPoints = []+ }+ "undefined")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 19 25 20+ , srcInfoPoints = []+ }+ "X")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 21 25 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 25 21 25 22+ , SrcSpan "tests/examples/DataKinds.hs" 25 26 25 27+ , SrcSpan "tests/examples/DataKinds.hs" 25 34 25 35+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 21 25 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 25 21 25 22+ , SrcSpan "tests/examples/DataKinds.hs" 25 26 25 27+ , SrcSpan "tests/examples/DataKinds.hs" 25 34 25 35+ ]+ }+ True+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 23 25 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 23 25 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 25 23 25 26+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 28 25 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 25 28 25 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 25 28 25 34+ , srcInfoPoints = []+ }+ "Double"))+ ])))))+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 1 27 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 1 27 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 6 27 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 6 27 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 6 27 7+ , srcInfoPoints = []+ }+ "Y"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 8 27 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 27 8 27 9+ , SrcSpan "tests/examples/DataKinds.hs" 27 11 27 13+ , SrcSpan "tests/examples/DataKinds.hs" 27 23 27 24+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 9 27 10+ , srcInfoPoints = []+ }+ "a")+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 14 27 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 27 14 27 15+ , SrcSpan "tests/examples/DataKinds.hs" 27 16 27 17+ , SrcSpan "tests/examples/DataKinds.hs" 27 22 27 23+ ]+ }+ Boxed+ [ TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 15 27 16+ , srcInfoPoints = []+ }+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 18 27 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 18 27 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 18 27 22+ , srcInfoPoints = []+ }+ "Bool"))+ ])))+ []+ []+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 1 29 36+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 1 29 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 1 29 3+ , srcInfoPoints = []+ }+ "y1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 4 29 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 29 4 29 5 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 29 16 29 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 6 29 15+ , srcInfoPoints = []+ }+ "undefined")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 19 29 20+ , srcInfoPoints = []+ }+ "Y")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 21 29 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 29 21 29 22+ , SrcSpan "tests/examples/DataKinds.hs" 29 29 29 30+ , SrcSpan "tests/examples/DataKinds.hs" 29 35 29 36+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 21 29 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 29 21 29 22+ , SrcSpan "tests/examples/DataKinds.hs" 29 29 29 30+ , SrcSpan "tests/examples/DataKinds.hs" 29 35 29 36+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 23 29 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 23 29 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 29 23 29 29+ , srcInfoPoints = []+ }+ "Double"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 31 29 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 29 31 29 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 29 31 29 35+ , srcInfoPoints = []+ }+ "True"))+ ])))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 1 30 50+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 1 30 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 1 30 3+ , srcInfoPoints = []+ }+ "y2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 4 30 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 30 4 30 5 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 30 16 30 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 6 30 15+ , srcInfoPoints = []+ }+ "undefined")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 50+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 19 30 20+ , srcInfoPoints = []+ }+ "Y")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 21 30 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 30 21 30 22+ , SrcSpan "tests/examples/DataKinds.hs" 30 29 30 30+ , SrcSpan "tests/examples/DataKinds.hs" 30 49 30 50+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 21 30 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 30 21 30 22+ , SrcSpan "tests/examples/DataKinds.hs" 30 29 30 30+ , SrcSpan "tests/examples/DataKinds.hs" 30 49 30 50+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 23 30 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 23 30 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 30 23 30 29+ , srcInfoPoints = []+ }+ "Double"))+ , TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 31 30 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 30 31 30 32 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 30 31 30 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 30 31 30 32 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 30 32 30 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 30 32 30 37+ , srcInfoPoints = []+ }+ "False")))+ ])))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 1 33 38+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 1 33 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 1 33 3+ , srcInfoPoints = []+ }+ "z1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 4 33 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 33 4 33 5 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 33 16 33 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 6 33 15+ , srcInfoPoints = []+ }+ "undefined")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 19 33 20+ , srcInfoPoints = []+ }+ "X")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 21 33 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 33 21 33 22+ , SrcSpan "tests/examples/DataKinds.hs" 33 29 33 30+ , SrcSpan "tests/examples/DataKinds.hs" 33 37 33 38+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 21 33 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 33 21 33 22+ , SrcSpan "tests/examples/DataKinds.hs" 33 29 33 30+ , SrcSpan "tests/examples/DataKinds.hs" 33 37 33 38+ ]+ }+ False+ [ TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 23 33 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 33 25 33 27 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 23 33 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 33 23 33 24+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 28 33 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 33 28 33 29+ , srcInfoPoints = []+ }+ "b"))+ , TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 31 33 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 31 33 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 33 31 33 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 33 31 33 32+ , srcInfoPoints = []+ }+ "X")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 33 33 33 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 33 33 33 34+ , SrcSpan "tests/examples/DataKinds.hs" 33 35 33 36+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DataKinds.hs" 33 33 33 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 33 33 33 34+ , SrcSpan "tests/examples/DataKinds.hs" 33 35 33 36+ ]+ }+ True+ []))+ ])))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 1 34 35+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 1 34 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 1 34 3+ , srcInfoPoints = []+ }+ "z2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 4 34 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 34 4 34 5 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 34 16 34 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 6 34 15+ , srcInfoPoints = []+ }+ "undefined")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 19 34 20+ , srcInfoPoints = []+ }+ "Y")))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 21 34 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 34 21 34 22+ , SrcSpan "tests/examples/DataKinds.hs" 34 28 34 29+ , SrcSpan "tests/examples/DataKinds.hs" 34 34 34 35+ ]+ }+ Boxed+ [ TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 22 34 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds.hs" 34 24 34 26 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 22 34 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 22 34 23+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 27 34 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 27 34 28+ , srcInfoPoints = []+ }+ "b"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 30 34 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 30 34 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 34 30 34 34+ , srcInfoPoints = []+ }+ "True"))+ ]))))+ Nothing+ ]+ , [ Comment+ True (SrcSpan "tests/examples/DataKinds.hs" 5 21 5 28) " 1 "+ , Comment+ True (SrcSpan "tests/examples/DataKinds.hs" 30 38 30 49) "comment"+ ]+ )
+ tests/examples/DataKinds.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds.hs.prettyprinter.golden view
@@ -0,0 +1,30 @@+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}++class C1 (a :: Bool) where+ c :: proxy a -> Int++class C2 (a :: [*])++data Baz = Baz++data Foo = Foo++class C3 (a :: [(Baz, Foo)])++class C4 (a :: (*))++class C5 (a :: App foo baz)++class C6 (a :: (parens))++data X (a :: [*])+x1 = undefined :: X '[Int]+x2 = undefined :: X '[Int, Double]++data Y (a :: (*, Bool))+y1 = undefined :: Y '(Double, True)+y2 = undefined :: Y '(Double, 'False)+z1 = undefined :: X [a -> b, X '[]]+z2 = undefined :: Y (a -> b, True)
+ tests/examples/DataKinds2.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE DataKinds #-}++data Foo a = Foo++type FooB = Foo "a"++type FooC = Foo 1++instance Show (Foo "bar") where
+ tests/examples/DataKinds2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds2.hs.parser.golden view
@@ -0,0 +1,283 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 1 1 10 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds2.hs" 1 1 1 1+ , SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 1+ , SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 1+ , SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 1+ , SrcSpan "tests/examples/DataKinds2.hs" 5 1 5 1+ , SrcSpan "tests/examples/DataKinds2.hs" 7 1 7 1+ , SrcSpan "tests/examples/DataKinds2.hs" 9 1 9 1+ , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+ , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds2.hs" 1 1 1 13+ , SrcSpan "tests/examples/DataKinds2.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds2.hs" 3 12 3 13 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 6 3 11+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ "Foo")+ [])+ ]+ []+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 1 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds2.hs" 5 1 5 5+ , SrcSpan "tests/examples/DataKinds2.hs" 5 11 5 12+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 6 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 6 5 10+ , srcInfoPoints = []+ }+ "FooB"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ "Foo")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (PromotedString+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ "a"+ "a")))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 1 7 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds2.hs" 7 1 7 5+ , SrcSpan "tests/examples/DataKinds2.hs" 7 11 7 12+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 6 7 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 6 7 10+ , srcInfoPoints = []+ }+ "FooC"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 18+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 13 7 16+ , srcInfoPoints = []+ }+ "Foo")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 17 7 18+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 7 17 7 18+ , srcInfoPoints = []+ }+ 1+ "1")))+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 1 10 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds2.hs" 9 1 9 9+ , SrcSpan "tests/examples/DataKinds2.hs" 9 27 9 32+ , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+ , SrcSpan "tests/examples/DataKinds2.hs" 10 1 10 1+ , SrcSpan "tests/examples/DataKinds2.hs" 10 0 10 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 26+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 10 9 14+ , srcInfoPoints = []+ }+ "Show")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 15 9 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DataKinds2.hs" 9 15 9 16+ , SrcSpan "tests/examples/DataKinds2.hs" 9 25 9 26+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 16 9 19+ , srcInfoPoints = []+ }+ "Foo")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 20 9 25+ , srcInfoPoints = []+ }+ (PromotedString+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DataKinds2.hs" 9 20 9 25+ , srcInfoPoints = []+ }+ "bar"+ "bar"))))))+ (Just [])+ ]+ , []+ )
+ tests/examples/DataKinds2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DataKinds2.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE DataKinds #-}++data Foo a = Foo++type FooB = Foo "a"++type FooC = Foo 1++instance Show (Foo "bar") where
+ tests/examples/DefaultSignatures.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE DefaultSignatures #-}+class C a where+ f :: a -> a -> Bool+ default f :: (Eq a) => a -> a -> Bool+ f x y = x == y
+ tests/examples/DefaultSignatures.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DefaultSignatures.hs.parser.golden view
@@ -0,0 +1,441 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 1 1+ , SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 1+ , SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 1+ , SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 1+ , SrcSpan "tests/examples/DefaultSignatures.hs" 6 1 6 1+ , SrcSpan "tests/examples/DefaultSignatures.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 1 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 1 1 1 13+ , SrcSpan "tests/examples/DefaultSignatures.hs" 1 32 1 35+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 1 14 1 31+ , srcInfoPoints = []+ }+ "DefaultSignatures"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 2 1 2 6+ , SrcSpan "tests/examples/DefaultSignatures.hs" 2 11 2 16+ , SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 5+ , SrcSpan "tests/examples/DefaultSignatures.hs" 4 5 4 5+ , SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 5+ , SrcSpan "tests/examples/DefaultSignatures.hs" 6 1 6 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 2 7 2 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 2 7 2 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 2 7 2 8+ , srcInfoPoints = []+ }+ "C"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 7 3 9 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 7 3 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 10 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 12 3 14 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 15 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 3 17 3 19 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 20 3 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 20 3 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 3 20 3 24+ , srcInfoPoints = []+ }+ "Bool"))))))+ , ClsDefSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 5 4 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 5 4 12+ , SrcSpan "tests/examples/DefaultSignatures.hs" 4 15 4 17+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "f")+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 42+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 19+ , SrcSpan "tests/examples/DefaultSignatures.hs" 4 23 4 24+ , SrcSpan "tests/examples/DefaultSignatures.hs" 4 25 4 27+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 18 4 19+ , SrcSpan "tests/examples/DefaultSignatures.hs" 4 23 4 24+ , SrcSpan "tests/examples/DefaultSignatures.hs" 4 25 4 27+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DefaultSignatures.hs" 4 19 4 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DefaultSignatures.hs" 4 19 4 21+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DefaultSignatures.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 28 4 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 30 4 32 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 33 4 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 4 35 4 37 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 38 4 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 38 4 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 4 38 4 42+ , srcInfoPoints = []+ }+ "Bool"))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 19+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 11 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DefaultSignatures.hs" 5 11 5 12 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 13 5 14+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 15 5 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 15 5 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 15 5 17+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DefaultSignatures.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ])+ ])+ ]+ , []+ )
+ tests/examples/DefaultSignatures.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DefaultSignatures.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE DefaultSignatures #-}++class C a where+ f :: a -> a -> Bool+ + default f :: (Eq a) => a -> a -> Bool+ f x y = x == y
+ tests/examples/DeriveGeneric.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE DeriveGeneric #-}++data UserTree a = Node a (UserTree a) (UserTree a) | Leaf+ deriving Generic
+ tests/examples/DeriveGeneric.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DeriveGeneric.hs.parser.golden view
@@ -0,0 +1,239 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 1 1+ , SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 1+ , SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 1+ , SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 1+ , SrcSpan "tests/examples/DeriveGeneric.hs" 5 1 5 1+ , SrcSpan "tests/examples/DeriveGeneric.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DeriveGeneric.hs" 1 1 1 13+ , SrcSpan "tests/examples/DeriveGeneric.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "DeriveGeneric"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DeriveGeneric.hs" 3 17 3 18+ , SrcSpan "tests/examples/DeriveGeneric.hs" 3 52 3 53+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 6 3 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 6 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 6 3 14+ , srcInfoPoints = []+ }+ "UserTree"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 19 3 51+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 19 3 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 19 3 23+ , srcInfoPoints = []+ }+ "Node")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 24 3 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 24 3 25+ , srcInfoPoints = []+ }+ "a")+ , TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 26 3 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DeriveGeneric.hs" 3 26 3 27+ , SrcSpan "tests/examples/DeriveGeneric.hs" 3 37 3 38+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DeriveGeneric.hs" 3 27 3 35+ , srcInfoPoints = []+ }+ "UserTree")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 36 3 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 36 3 37+ , srcInfoPoints = []+ }+ "a")))+ , TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 39 3 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DeriveGeneric.hs" 3 39 3 40+ , SrcSpan "tests/examples/DeriveGeneric.hs" 3 50 3 51+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 50+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DeriveGeneric.hs" 3 40 3 48+ , srcInfoPoints = []+ }+ "UserTree")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 49 3 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 49 3 50+ , srcInfoPoints = []+ }+ "a")))+ ])+ , QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 54 3 58+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 54 3 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 3 54 3 58+ , srcInfoPoints = []+ }+ "Leaf")+ [])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 3 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DeriveGeneric.hs" 4 3 4 11 ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DeriveGeneric.hs" 4 12 4 19+ , srcInfoPoints = []+ }+ "Generic")))+ ]+ ]+ ]+ , []+ )
+ tests/examples/DeriveGeneric.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DeriveGeneric.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE DeriveGeneric #-}++data UserTree a = Node a (UserTree a) (UserTree a)+ | Leaf+ deriving Generic
+ tests/examples/DerivingParen.hs view
@@ -0,0 +1,2 @@+data X = X deriving Show+data X = X deriving (Show)
+ tests/examples/DerivingParen.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingParen.hs.parser.golden view
@@ -0,0 +1,177 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingParen.hs" 2 1 2 1+ , SrcSpan "tests/examples/DerivingParen.hs" 3 1 3 1+ , SrcSpan "tests/examples/DerivingParen.hs" 3 1 3 1+ ]+ }+ Nothing+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingParen.hs" 1 8 1 9 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 1 1 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ "X"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ "X")+ [])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 12 1 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingParen.hs" 1 12 1 20 ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 1 21 1 25+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingParen.hs" 2 8 2 9 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 1 2 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 6 2 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 6 2 7+ , srcInfoPoints = []+ }+ "X"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ "X")+ [])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 12 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingParen.hs" 2 12 2 20 ]+ }+ Nothing+ [ IParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 21 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingParen.hs" 2 21 2 22+ , SrcSpan "tests/examples/DerivingParen.hs" 2 26 2 27+ ]+ }+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingParen.hs" 2 22 2 26+ , srcInfoPoints = []+ }+ "Show"))))+ ]+ ]+ ]+ , []+ )
+ tests/examples/DerivingParen.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingParen.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+data X = X deriving Show++data X = X deriving (Show)
+ tests/examples/DerivingStrategies.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingStrategies where++class C a+class D a++newtype Foo a = MkFoo a+ deriving ()+ deriving stock (Eq, Ord)+ deriving newtype Show+ deriving anyclass C++deriving stock instance Read a => Read (Foo a)+deriving newtype instance Num a => Num (Foo a)+deriving anyclass instance D (Foo a)
+ tests/examples/DerivingStrategies.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingStrategies.hs.parser.golden view
@@ -0,0 +1,849 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 19 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 2 1 2 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 3 1 3 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 4 1 4 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 7 1 7 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 8 1 8 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 10 1 10 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 16 1 16 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 17 1 17 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 18 1 18 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 19 1 19 1+ , SrcSpan "tests/examples/DerivingStrategies.hs" 19 1 19 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 5 1 5 7+ , SrcSpan "tests/examples/DerivingStrategies.hs" 5 27 5 32+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 5 8 5 26+ , srcInfoPoints = []+ }+ "DerivingStrategies")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 1 1 1 13+ , SrcSpan "tests/examples/DerivingStrategies.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "DeriveAnyClass"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 2 1 2 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 2 1 2 13+ , SrcSpan "tests/examples/DerivingStrategies.hs" 2 33 2 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 2 14 2 32+ , srcInfoPoints = []+ }+ "DerivingStrategies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 3 1 3 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 3 1 3 13+ , SrcSpan "tests/examples/DerivingStrategies.hs" 3 41 3 44+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 3 14 3 40+ , srcInfoPoints = []+ }+ "GeneralizedNewtypeDeriving"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 4 1 4 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 4 1 4 13+ , SrcSpan "tests/examples/DerivingStrategies.hs" 4 33 4 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 4 14 4 32+ , srcInfoPoints = []+ }+ "StandaloneDeriving"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 7 1 7 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 7 1 7 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 7 7 7 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 7 7 7 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 7 7 7 8+ , srcInfoPoints = []+ }+ "C"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ "a")))+ []+ Nothing+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 8 1 8 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 8 1 8 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 8 7 8 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 8 7 8 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 8 7 8 8+ , srcInfoPoints = []+ }+ "D"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ "a")))+ []+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 1 14 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 10 15 10 16 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 1 10 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 9 10 14+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 9 10 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 9 10 12+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 13 10 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 13 10 14+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 17 10 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 17 10 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 17 10 22+ , srcInfoPoints = []+ }+ "MkFoo")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 23 10 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 10 23 10 24+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 11 3 11 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 11 3 11 11+ , SrcSpan "tests/examples/DerivingStrategies.hs" 11 12 11 13+ , SrcSpan "tests/examples/DerivingStrategies.hs" 11 13 11 14+ ]+ }+ Nothing+ []+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 3 12 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 12 3 12 11+ , SrcSpan "tests/examples/DerivingStrategies.hs" 12 18 12 19+ , SrcSpan "tests/examples/DerivingStrategies.hs" 12 21 12 22+ , SrcSpan "tests/examples/DerivingStrategies.hs" 12 26 12 27+ ]+ }+ (Just+ (DerivStock+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 12 12 17+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 19 12 21+ , srcInfoPoints = []+ }+ "Eq")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 12 23 12 26+ , srcInfoPoints = []+ }+ "Ord")))+ ]+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 13 3 13 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 13 3 13 11 ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 13 12 13 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 13 20 13 24+ , srcInfoPoints = []+ }+ "Show")))+ ]+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 14 3 14 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 14 3 14 11 ]+ }+ (Just+ (DerivAnyclass+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 14 12 14 20+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 14 21 14 22+ , srcInfoPoints = []+ }+ "C")))+ ]+ ]+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 1 16 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 1 16 9+ , SrcSpan "tests/examples/DerivingStrategies.hs" 16 16 16 24+ ]+ }+ (Just+ (DerivStock+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 10 16 15+ , srcInfoPoints = []+ }))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 47+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29+ , srcInfoPoints = []+ }+ "Read")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 47+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 35 16 39+ , srcInfoPoints = []+ }+ "Read")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 40 16 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 40 16 41+ , SrcSpan "tests/examples/DerivingStrategies.hs" 16 46 16 47+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 41 16 44+ , srcInfoPoints = []+ }+ "Foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 45 16 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 16 45 16 46+ , srcInfoPoints = []+ }+ "a"))))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 1 17 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 1 17 9+ , SrcSpan "tests/examples/DerivingStrategies.hs" 17 18 17 26+ ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 10 17 17+ , srcInfoPoints = []+ }))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 47+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 47+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 36 17 39+ , srcInfoPoints = []+ }+ "Num")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 40 17 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 40 17 41+ , SrcSpan "tests/examples/DerivingStrategies.hs" 17 46 17 47+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 41 17 44+ , srcInfoPoints = []+ }+ "Foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 45 17 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 17 45 17 46+ , srcInfoPoints = []+ }+ "a"))))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 1 18 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 18 1 18 9+ , SrcSpan "tests/examples/DerivingStrategies.hs" 18 19 18 27+ ]+ }+ (Just+ (DerivAnyclass+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 10 18 18+ , srcInfoPoints = []+ }))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 37+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 37+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 28 18 29+ , srcInfoPoints = []+ }+ "D")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 30 18 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingStrategies.hs" 18 30 18 31+ , SrcSpan "tests/examples/DerivingStrategies.hs" 18 36 18 37+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 31 18 34+ , srcInfoPoints = []+ }+ "Foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 35 18 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingStrategies.hs" 18 35 18 36+ , srcInfoPoints = []+ }+ "a"))))))+ ]+ , []+ )
+ tests/examples/DerivingStrategies.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingStrategies.hs.prettyprinter.golden view
@@ -0,0 +1,21 @@+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingStrategies where++class C a++class D a++newtype Foo a = MkFoo a+ deriving ()+ deriving stock (Eq, Ord)+ deriving newtype Show+ deriving anyclass C++deriving stock instance Read a => Read (Foo a)++deriving newtype instance Num a => Num (Foo a)++deriving anyclass instance D (Foo a)
+ tests/examples/DerivingVia.hs view
@@ -0,0 +1,459 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeInType #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE UndecidableInstances #-}+module DerivingVia where++import Data.Void+import Data.Complex+import Data.Functor.Const+import Data.Functor.Identity+import Data.Ratio+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Writer+import Control.Applicative hiding (WrappedMonad(..))++import Data.Bifunctor+import Data.Monoid+import Data.Kind++type f ~> g = forall xx. f xx -> g xx++-----+-- Simple example+-----++data Foo a = MkFoo a a+ deriving Show+ via (Identity (Foo a))++-----+-- Eta reduction at work+-----++newtype Flip p a b = Flip { runFlip :: p b a }++instance Bifunctor p => Bifunctor (Flip p) where+ bimap f g = Flip . bimap g f . runFlip++instance Bifunctor p => Functor (Flip p a) where+ fmap f = Flip . first f . runFlip++newtype Bar a = MkBar (Either a Int)+ deriving Functor+ via (Flip Either Int)++-----+-- Monad transformers+-----++type MTrans = (Type -> Type) -> (Type -> Type)++-- From `constraints'+data Dict c where+ Dict :: c => Dict c++newtype a :- b = Sub (a => Dict b)++infixl 1 \\+(\\) :: a => (b => r) -> (a :- b) -> r+r \\ Sub Dict = r++-- With `-XQuantifiedConstraints' this just becomes+--+-- type Lifting cls trans = forall mm. cls mm => cls (trans mm)+--+-- type LiftingMonad trans = Lifting Monad trans+--+class LiftingMonad (trans :: MTrans) where+ proof :: Monad m :- Monad (trans m)++instance LiftingMonad (StateT s :: MTrans) where+ proof :: Monad m :- Monad (StateT s m)+ proof = Sub Dict++instance Monoid w => LiftingMonad (WriterT w :: MTrans) where+ proof :: Monad m :- Monad (WriterT w m)+ proof = Sub Dict++instance (LiftingMonad trans, LiftingMonad trans') => LiftingMonad (ComposeT trans trans' :: MTrans) where+ proof :: forall m. Monad m :- Monad (ComposeT trans trans' m)+ proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)++newtype Stack :: MTrans where+ Stack :: ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a+ deriving newtype+ ( Functor+ , Applicative+ , Monad+ , MonadReader Int+ , MonadState Bool+ , MonadWriter String+ )+ deriving (MonadTrans, MFunctor)+ via (ReaderT Int `ComposeT` StateT Bool `ComposeT` WriterT String)++class MFunctor (trans :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')++instance MFunctor (ReaderT r :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')+ hoist nat = ReaderT . fmap nat . runReaderT++instance MFunctor (StateT s :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')+ hoist nat = StateT . fmap nat . runStateT++instance MFunctor (WriterT w :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')+ hoist nat = WriterT . nat . runWriterT++infixr 9 `ComposeT`+newtype ComposeT :: MTrans -> MTrans -> MTrans where+ ComposeT :: { getComposeT :: f (g m) a } -> ComposeT f g m a+ deriving newtype (Functor, Applicative, Monad)++instance (MonadTrans f, MonadTrans g, LiftingMonad g) => MonadTrans (ComposeT f g) where+ lift :: forall m. Monad m => m ~> ComposeT f g m+ lift = ComposeT . lift . lift+ \\ proof @g @m++instance (MFunctor f, MFunctor g, LiftingMonad g) => MFunctor (ComposeT f g) where+ hoist :: forall m m'. Monad m => (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')+ hoist f = ComposeT . hoist (hoist f) . getComposeT+ \\ proof @g @m++-----+-- Using tuples in a `via` type+-----++newtype X a = X (a, a)+ deriving (Semigroup, Monoid)+ via (Product a, Sum a)++ deriving (Show, Eq)+ via (a, a)++-----+-- Abstract data types+-----++class C f where+ c :: f a -> Int++newtype X2 f a = X2 (f a)++instance C (X2 f) where+ c = const 0++deriving via (X2 IO) instance C IO++----+-- Testing parser+----++newtype P0 a = P0 a deriving Show via a+newtype P1 a = P1 [a] deriving Show via [a]+newtype P2 a = P2 (a, a) deriving Show via (a, a)+newtype P3 a = P3 (Maybe a) deriving Show via (First a)+newtype P4 a = P4 (Maybe a) deriving Show via (First $ a)+newtype P5 a = P5 a deriving Show via (Identity $ a)+newtype P6 a = P6 [a] deriving Show via ([] $ a)+newtype P7 a = P7 (a, a) deriving Show via (Identity $ (a, a))+newtype P8 a = P8 (Either () a) deriving Functor via (($) (Either ()))++newtype f $ a = APP (f a) deriving newtype Show deriving newtype Functor++----+-- From Baldur's notes+----++----+-- 1+----+newtype WrapApplicative f a = WrappedApplicative (f a)+ deriving (Functor, Applicative)++instance (Applicative f, Num a) => Num (WrapApplicative f a) where+ (+) = liftA2 (+)+ (*) = liftA2 (*)+ negate = fmap negate+ fromInteger = pure . fromInteger+ abs = fmap abs+ signum = fmap signum++instance (Applicative f, Fractional a) => Fractional (WrapApplicative f a) where+ recip = fmap recip+ fromRational = pure . fromRational++instance (Applicative f, Floating a) => Floating (WrapApplicative f a) where+ pi = pure pi+ sqrt = fmap sqrt+ exp = fmap exp+ log = fmap log+ sin = fmap sin+ cos = fmap cos+ asin = fmap asin+ atan = fmap atan+ acos = fmap acos+ sinh = fmap sinh+ cosh = fmap cosh+ asinh = fmap asinh+ atanh = fmap atanh+ acosh = fmap acosh++instance (Applicative f, Semigroup s) => Semigroup (WrapApplicative f s) where+ (<>) = liftA2 (<>)++instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m) where+ mempty = pure mempty++----+-- 2+----+class Pointed p where+ pointed :: a -> p a++newtype WrapMonad f a = WrappedMonad (f a)+ deriving newtype (Pointed, Monad)++instance (Monad m, Pointed m) => Functor (WrapMonad m) where+ fmap = liftM++instance (Monad m, Pointed m) => Applicative (WrapMonad m) where+ pure = pointed+ (<*>) = ap++-- data+data Sorted a = Sorted a a a+ deriving (Functor, Applicative)+ via (WrapMonad Sorted)+ deriving (Num, Fractional, Floating, Semigroup, Monoid)+ via (WrapApplicative Sorted a)+++instance Monad Sorted where+ (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b+ Sorted a b c >>= f = Sorted a' b' c' where+ Sorted a' _ _ = f a+ Sorted _ b' _ = f b+ Sorted _ _ c' = f c++instance Pointed Sorted where+ pointed :: a -> Sorted a+ pointed a = Sorted a a a++----+-- 3+----+class IsZero a where+ isZero :: a -> Bool++newtype WrappedNumEq a = WrappedNumEq a+newtype WrappedShow a = WrappedShow a+newtype WrappedNumEq2 a = WrappedNumEq2 a++instance (Num a, Eq a) => IsZero (WrappedNumEq a) where+ isZero :: WrappedNumEq a -> Bool+ isZero (WrappedNumEq a) = 0 == a++instance Show a => IsZero (WrappedShow a) where+ isZero :: WrappedShow a -> Bool+ isZero (WrappedShow a) = "0" == show a++instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where+ isZero :: WrappedNumEq2 a -> Bool+ isZero (WrappedNumEq2 a) = a + a == a++newtype INT = INT Int+ deriving newtype Show+ deriving IsZero via (WrappedNumEq Int)++newtype VOID = VOID Void deriving IsZero via (WrappedShow Void)++----+-- 4+----+class Bifunctor p => Biapplicative p where+ bipure :: a -> b -> p a b++ biliftA2+ :: (a -> b -> c)+ -> (a' -> b' -> c')+ -> p a a'+ -> p b b'+ -> p c c'++instance Biapplicative (,) where+ bipure = (,)++ biliftA2 f f' (a, a') (b, b') =+ (f a b, f' a' b')++newtype WrapBiapp p a b = WrapBiap (p a b)+ deriving newtype (Bifunctor, Biapplicative, Eq)++instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b) where+ (+) = biliftA2 (+) (+)+ (-) = biliftA2 (*) (*)+ (*) = biliftA2 (*) (*)+ negate = bimap negate negate+ abs = bimap abs abs+ signum = bimap signum signum+ fromInteger n = fromInteger n `bipure` fromInteger n++newtype INT2 = INT2 (Int, Int)+ deriving IsZero via (WrappedNumEq2 (WrapBiapp (,) Int Int))++----+-- 5+----+class Monoid a => MonoidNull a where+ null :: a -> Bool++newtype WrpMonNull a = WRM a deriving (Eq, Semigroup, Monoid)++instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where+ null :: WrpMonNull a -> Bool+ null = (== mempty)++deriving via (WrpMonNull Any) instance MonoidNull Any+deriving via () instance MonoidNull ()+deriving via Ordering instance MonoidNull Ordering++----+-- 6+----+-- https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635++class Lattice a where+ sup :: a -> a -> a+ (.>=) :: a -> a -> Bool+ (.>) :: a -> a -> Bool++newtype WrapOrd a = WrappedOrd a+ deriving newtype (Eq, Ord)++instance Ord a => Lattice (WrapOrd a) where+ sup = max+ (.>=) = (>=)+ (.>) = (>)++deriving via [a] instance Ord a => Lattice [a]+deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)+--mkLattice_(Bool)+deriving via Bool instance Lattice Bool+--mkLattice_(Char)+deriving via Char instance Lattice Char+--mkLattice_(Int)+deriving via Int instance Lattice Int+--mkLattice_(Integer)+deriving via Integer instance Lattice Integer+--mkLattice_(Float)+deriving via Float instance Lattice Float+--mkLattice_(Double)+deriving via Double instance Lattice Double+--mkLattice_(Rational)+deriving via Rational instance Lattice Rational++----+-- 7+----+-- https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html++class Functor f => Additive f where+ zero :: Num a => f a+ (^+^) :: Num a => f a -> f a -> f a+ (^+^) = liftU2 (+)+ (^-^) :: Num a => f a -> f a -> f a+ x ^-^ y = x ^+^ fmap negate y+ liftU2 :: (a -> a -> a) -> f a -> f a -> f a++instance Additive [] where+ zero = []+ liftU2 f = go where+ go (x:xs) (y:ys) = f x y : go xs ys+ go [] ys = ys+ go xs [] = xs++instance Additive Maybe where+ zero = Nothing+ liftU2 f (Just a) (Just b) = Just (f a b)+ liftU2 _ Nothing ys = ys+ liftU2 _ xs Nothing = xs++instance Applicative f => Additive (WrapApplicative f) where+ zero = pure 0+ liftU2 = liftA2++deriving via (WrapApplicative ((->) a)) instance Additive ((->) a)+deriving via (WrapApplicative Complex) instance Additive Complex+deriving via (WrapApplicative Identity) instance Additive Identity++instance Additive ZipList where+ zero = ZipList []+ liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)++class Additive (Diff p) => Affine p where+ type Diff p :: Type -> Type++ (.-.) :: Num a => p a -> p a -> Diff p a+ (.+^) :: Num a => p a -> Diff p a -> p a+ (.-^) :: Num a => p a -> Diff p a -> p a+ p .-^ v = p .+^ fmap negate v++-- #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \+-- (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \+-- (.-^) = (^-^) ; {-# INLINE (.-^) #-}+-- #define ADDITIVE(T) ADDITIVEC((), T)+newtype WrapAdditive f a = WrappedAdditive (f a)++instance Additive f => Affine (WrapAdditive f) where+ type Diff (WrapAdditive f) = f++ WrappedAdditive a .-. WrappedAdditive b = a ^-^ b+ WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)+ WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)++-- ADDITIVE(((->) a))+deriving via (WrapAdditive ((->) a)) instance Affine ((->) a)+-- ADDITIVE([])+deriving via (WrapAdditive []) instance Affine []+-- ADDITIVE(Complex)+deriving via (WrapAdditive Complex) instance Affine Complex+-- ADDITIVE(Maybe)+deriving via (WrapAdditive Maybe) instance Affine Maybe+-- ADDITIVE(ZipList)+deriving via (WrapAdditive ZipList) instance Affine ZipList+-- ADDITIVE(Identity)+deriving via (WrapAdditive Identity) instance Affine Identity++----+-- 8+----++class C2 a b c where+ c2 :: a -> b -> c++instance C2 a b (Const a b) where+ c2 x _ = Const x++newtype Fweemp a = Fweemp a+ deriving (C2 a b)+ via (Const a (b :: Type))
+ tests/examples/DerivingVia.hs.exactprinter.golden view
@@ -0,0 +1,460 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeInType #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE UndecidableInstances #-}+module DerivingVia where++import Data.Void+import Data.Complex+import Data.Functor.Const+import Data.Functor.Identity+import Data.Ratio+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Writer+import Control.Applicative hiding (WrappedMonad(..))++import Data.Bifunctor+import Data.Monoid+import Data.Kind++type f ~> g = forall xx. f xx -> g xx++-----+-- Simple example+-----++data Foo a = MkFoo a a+ deriving+ via( Identity (Foo a))Show++-----+-- Eta reduction at work+-----++newtype Flip p a b = Flip { runFlip :: p b a }++instance Bifunctor p => Bifunctor (Flip p) where+ bimap f g = Flip . bimap g f . runFlip++instance Bifunctor p => Functor (Flip p a) where+ fmap f = Flip . first f . runFlip++newtype Bar a = MkBar (Either a Int)+ deriving+ via( Flip Either Int)Functor++-----+-- Monad transformers+-----++type MTrans = (Type -> Type) -> (Type -> Type)++-- From `constraints'+data Dict c where+ Dict :: c => Dict c++newtype a :- b = Sub (a => Dict b)++infixl 1 \\+(\\) :: a => (b => r) -> (a :- b) -> r+r \\ Sub Dict = r++-- With `-XQuantifiedConstraints' this just becomes+--+-- type Lifting cls trans = forall mm. cls mm => cls (trans mm)+--+-- type LiftingMonad trans = Lifting Monad trans+--+class LiftingMonad (trans :: MTrans) where+ proof :: Monad m :- Monad (trans m)++instance LiftingMonad (StateT s :: MTrans) where+ proof :: Monad m :- Monad (StateT s m)+ proof = Sub Dict++instance Monoid w => LiftingMonad (WriterT w :: MTrans) where+ proof :: Monad m :- Monad (WriterT w m)+ proof = Sub Dict++instance (LiftingMonad trans, LiftingMonad trans') => LiftingMonad (ComposeT trans trans' :: MTrans) where+ proof :: forall m. Monad m :- Monad (ComposeT trans trans' m)+ proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)++newtype Stack :: MTrans where+ Stack :: ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a+ deriving newtype+ ( Functor+ , Applicative+ , Monad+ , MonadReader Int+ , MonadState Bool+ , MonadWriter String+ )+ deriving+ via( ReaderT Int `ComposeT` StateT Bool `ComposeT` WriterT String)(MonadTrans,MFunctor)++class MFunctor (trans :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')++instance MFunctor (ReaderT r :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')+ hoist nat = ReaderT . fmap nat . runReaderT++instance MFunctor (StateT s :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')+ hoist nat = StateT . fmap nat . runStateT++instance MFunctor (WriterT w :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')+ hoist nat = WriterT . nat . runWriterT++infixr 9 `ComposeT`+newtype ComposeT :: MTrans -> MTrans -> MTrans where+ ComposeT :: { getComposeT :: f (g m) a } -> ComposeT f g m a+ deriving newtype (Functor, Applicative, Monad)++instance (MonadTrans f, MonadTrans g, LiftingMonad g) => MonadTrans (ComposeT f g) where+ lift :: forall m. Monad m => m ~> ComposeT f g m+ lift = ComposeT . lift . lift+ \\ proof @g @m++instance (MFunctor f, MFunctor g, LiftingMonad g) => MFunctor (ComposeT f g) where+ hoist :: forall m m'. Monad m => (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')+ hoist f = ComposeT . hoist (hoist f) . getComposeT+ \\ proof @g @m++-----+-- Using tuples in a `via` type+-----++newtype X a = X (a, a)+ deriving+ via (Product a, Sum a)(Semigroup,Monoid)++ deriving+ via (a, a)(Show,Eq)++-----+-- Abstract data types+-----++class C f where+ c :: f a -> Int++newtype X2 f a = X2 (f a)++instance C (X2 f) where+ c = const 0++deriving via( X2 IO) instance C IO++----+-- Testing parser+----++newtype P0 a = P0 a deriving viaaShow+newtype P1 a = P1 [a] deriving via[ a]Show+newtype P2 a = P2 (a, a) deriving via (a, a)Show+newtype P3 a = P3 (Maybe a) deriving via( First a)Show+newtype P4 a = P4 (Maybe a) deriving via( First $ a)Show+newtype P5 a = P5 a deriving via( Identity $ a)Show+newtype P6 a = P6 [a] deriving via( [] $ a)Show+newtype P7 a = P7 (a, a) deriving via( Identity $ (a, a))Show+newtype P8 a = P8 (Either () a) deriving via( ($) (Either ()))Functor++newtype f $ a = APP (f a) deriving newtype Show deriving newtype Functor++----+-- From Baldur's notes+----++----+-- 1+----+newtype WrapApplicative f a = WrappedApplicative (f a)+ deriving (Functor, Applicative)++instance (Applicative f, Num a) => Num (WrapApplicative f a) where+ (+) = liftA2 (+)+ (*) = liftA2 (*)+ negate = fmap negate+ fromInteger = pure . fromInteger+ abs = fmap abs+ signum = fmap signum++instance (Applicative f, Fractional a) => Fractional (WrapApplicative f a) where+ recip = fmap recip+ fromRational = pure . fromRational++instance (Applicative f, Floating a) => Floating (WrapApplicative f a) where+ pi = pure pi+ sqrt = fmap sqrt+ exp = fmap exp+ log = fmap log+ sin = fmap sin+ cos = fmap cos+ asin = fmap asin+ atan = fmap atan+ acos = fmap acos+ sinh = fmap sinh+ cosh = fmap cosh+ asinh = fmap asinh+ atanh = fmap atanh+ acosh = fmap acosh++instance (Applicative f, Semigroup s) => Semigroup (WrapApplicative f s) where+ (<>) = liftA2 (<>)++instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m) where+ mempty = pure mempty++----+-- 2+----+class Pointed p where+ pointed :: a -> p a++newtype WrapMonad f a = WrappedMonad (f a)+ deriving newtype (Pointed, Monad)++instance (Monad m, Pointed m) => Functor (WrapMonad m) where+ fmap = liftM++instance (Monad m, Pointed m) => Applicative (WrapMonad m) where+ pure = pointed+ (<*>) = ap++-- data+data Sorted a = Sorted a a a+ deriving+ via( WrapMonad Sorted)(Functor,Applicative)+ deriving+ via( WrapApplicative Sorted a)(Num,Fractional,Floating,Semigroup,Monoid)+++instance Monad Sorted where+ (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b+ Sorted a b c >>= f = Sorted a' b' c' where+ Sorted a' _ _ = f a+ Sorted _ b' _ = f b+ Sorted _ _ c' = f c++instance Pointed Sorted where+ pointed :: a -> Sorted a+ pointed a = Sorted a a a++----+-- 3+----+class IsZero a where+ isZero :: a -> Bool++newtype WrappedNumEq a = WrappedNumEq a+newtype WrappedShow a = WrappedShow a+newtype WrappedNumEq2 a = WrappedNumEq2 a++instance (Num a, Eq a) => IsZero (WrappedNumEq a) where+ isZero :: WrappedNumEq a -> Bool+ isZero (WrappedNumEq a) = 0 == a++instance Show a => IsZero (WrappedShow a) where+ isZero :: WrappedShow a -> Bool+ isZero (WrappedShow a) = "0" == show a++instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where+ isZero :: WrappedNumEq2 a -> Bool+ isZero (WrappedNumEq2 a) = a + a == a++newtype INT = INT Int+ deriving newtype Show+ deriving via( WrappedNumEq Int)IsZero++newtype VOID = VOID Void deriving via( WrappedShow Void)IsZero++----+-- 4+----+class Bifunctor p => Biapplicative p where+ bipure :: a -> b -> p a b++ biliftA2+ :: (a -> b -> c)+ -> (a' -> b' -> c')+ -> p a a'+ -> p b b'+ -> p c c'++instance Biapplicative (,) where+ bipure = (,)++ biliftA2 f f' (a, a') (b, b') =+ (f a b, f' a' b')++newtype WrapBiapp p a b = WrapBiap (p a b)+ deriving newtype (Bifunctor, Biapplicative, Eq)++instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b) where+ (+) = biliftA2 (+) (+)+ (-) = biliftA2 (*) (*)+ (*) = biliftA2 (*) (*)+ negate = bimap negate negate+ abs = bimap abs abs+ signum = bimap signum signum+ fromInteger n = fromInteger n `bipure` fromInteger n++newtype INT2 = INT2 (Int, Int)+ deriving via( WrappedNumEq2 (WrapBiapp (,) Int Int))IsZero++----+-- 5+----+class Monoid a => MonoidNull a where+ null :: a -> Bool++newtype WrpMonNull a = WRM a deriving (Eq, Semigroup, Monoid)++instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where+ null :: WrpMonNull a -> Bool+ null = (== mempty)++deriving via( WrpMonNull Any) instance MonoidNull Any+deriving via () instance MonoidNull ()+deriving viaOrdering instance MonoidNull Ordering++----+-- 6+----+-- https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635++class Lattice a where+ sup :: a -> a -> a+ (.>=) :: a -> a -> Bool+ (.>) :: a -> a -> Bool++newtype WrapOrd a = WrappedOrd a+ deriving newtype (Eq, Ord)++instance Ord a => Lattice (WrapOrd a) where+ sup = max+ (.>=) = (>=)+ (.>) = (>)++deriving via[ a] instance Ord a => Lattice [a]+deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)+--mkLattice_(Bool)+deriving viaBool instance Lattice Bool+--mkLattice_(Char)+deriving viaChar instance Lattice Char+--mkLattice_(Int)+deriving viaInt instance Lattice Int+--mkLattice_(Integer)+deriving viaInteger instance Lattice Integer+--mkLattice_(Float)+deriving viaFloat instance Lattice Float+--mkLattice_(Double)+deriving viaDouble instance Lattice Double+--mkLattice_(Rational)+deriving viaRational instance Lattice Rational++----+-- 7+----+-- https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html++class Functor f => Additive f where+ zero :: Num a => f a+ (^+^) :: Num a => f a -> f a -> f a+ (^+^) = liftU2 (+)+ (^-^) :: Num a => f a -> f a -> f a+ x ^-^ y = x ^+^ fmap negate y+ liftU2 :: (a -> a -> a) -> f a -> f a -> f a++instance Additive [] where+ zero = []+ liftU2 f = go where+ go (x:xs) (y:ys) = f x y : go xs ys+ go [] ys = ys+ go xs [] = xs++instance Additive Maybe where+ zero = Nothing+ liftU2 f (Just a) (Just b) = Just (f a b)+ liftU2 _ Nothing ys = ys+ liftU2 _ xs Nothing = xs++instance Applicative f => Additive (WrapApplicative f) where+ zero = pure 0+ liftU2 = liftA2++deriving via( WrapApplicative ((->) a)) instance Additive ((->) a)+deriving via( WrapApplicative Complex) instance Additive Complex+deriving via( WrapApplicative Identity) instance Additive Identity++instance Additive ZipList where+ zero = ZipList []+ liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)++class Additive (Diff p) => Affine p where+ type Diff p :: Type -> Type++ (.-.) :: Num a => p a -> p a -> Diff p a+ (.+^) :: Num a => p a -> Diff p a -> p a+ (.-^) :: Num a => p a -> Diff p a -> p a+ p .-^ v = p .+^ fmap negate v++-- #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \+-- (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \+-- (.-^) = (^-^) ; {-# INLINE (.-^) #-}+-- #define ADDITIVE(T) ADDITIVEC((), T)+newtype WrapAdditive f a = WrappedAdditive (f a)++instance Additive f => Affine (WrapAdditive f) where+ type Diff (WrapAdditive f) = f++ WrappedAdditive a .-. WrappedAdditive b = a ^-^ b+ WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)+ WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)++-- ADDITIVE(((->) a))+deriving via( WrapAdditive ((->) a)) instance Affine ((->) a)+-- ADDITIVE([])+deriving via( WrapAdditive []) instance Affine []+-- ADDITIVE(Complex)+deriving via( WrapAdditive Complex) instance Affine Complex+-- ADDITIVE(Maybe)+deriving via( WrapAdditive Maybe) instance Affine Maybe+-- ADDITIVE(ZipList)+deriving via( WrapAdditive ZipList) instance Affine ZipList+-- ADDITIVE(Identity)+deriving via( WrapAdditive Identity) instance Affine Identity++----+-- 8+----++class C2 a b c where+ c2 :: a -> b -> c++instance C2 a b (Const a b) where+ c2 x _ = Const x++newtype Fweemp a = Fweemp a+ deriving+ via( Const a (b :: Type))(C2ab)+
+ tests/examples/DerivingVia.hs.parser.golden view
@@ -0,0 +1,32882 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 460 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 1+ , SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 1+ , SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 1+ , SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 1+ , SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 1+ , SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 1+ , SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 1+ , SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 1+ , SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 1+ , SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 1+ , SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 1+ , SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 1+ , SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 1+ , SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 1+ , SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 1+ , SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 1+ , SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 1+ , SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 1+ , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1+ , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1+ , SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 1+ , SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 1+ , SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 1+ , SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 1+ , SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 1+ , SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 1+ , SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 1+ , SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 1+ , SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 1+ , SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 1+ , SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 1+ , SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 1+ , SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 1+ , SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 1+ , SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 1+ , SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 1+ , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 1+ , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 1+ , SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 1+ , SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 1+ , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 1+ , SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 1+ , SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 1+ , SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 1+ , SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 1+ , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 1+ , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 1+ , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 1+ , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 1+ , SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 1+ , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 1+ , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 1+ , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 1+ , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 1+ , SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 1+ , SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 1+ , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 1+ , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 1+ , SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 1+ , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 1+ , SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 1+ , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 1+ , SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 1+ , SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 1+ , SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 1+ , SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 1+ , SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 1+ , SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 1+ , SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 1+ , SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 1+ , SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 1+ , SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 1+ , SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 1+ , SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 1+ , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 1+ , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 1+ , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 1+ , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 1+ , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 1+ , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 1+ , SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 1+ , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 1+ , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 1+ , SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 1+ , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 1+ , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 1+ , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 1+ , SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 1+ , SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 1+ , SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 1+ , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 1+ , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 1+ , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 1+ , SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 1+ , SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 1+ , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 1+ , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 1+ , SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 1+ , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 1+ , SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 1+ , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 1+ , SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 1+ , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 1+ , SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 1+ , SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 1+ , SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 1+ , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 1+ , SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 1+ , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 1+ , SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 1+ , SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 1+ , SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 1+ , SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 1+ , SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 1+ , SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 1+ , SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 1+ , SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 1+ , SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 1+ , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 1+ , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 1+ , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 1+ , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 1+ , SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 1+ , SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 1+ , SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 1+ , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 1+ , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 1+ , SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 1+ , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 1+ , SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 1+ , SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 1+ , SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 1+ , SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 1+ , SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 1+ , SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 1+ , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 1+ , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 1+ , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1+ , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 7+ , SrcSpan "tests/examples/DerivingVia.hs" 20 20 20 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 8 20 19+ , srcInfoPoints = []+ }+ "DerivingVia")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 13+ , SrcSpan "tests/examples/DerivingVia.hs" 1 33 1 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 14 1 32+ , srcInfoPoints = []+ }+ "DerivingStrategies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 13+ , SrcSpan "tests/examples/DerivingVia.hs" 2 26 2 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 14 2 25+ , srcInfoPoints = []+ }+ "DerivingVia"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 13+ , SrcSpan "tests/examples/DerivingVia.hs" 3 41 3 44+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 14 3 40+ , srcInfoPoints = []+ }+ "GeneralizedNewtypeDeriving"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 13+ , SrcSpan "tests/examples/DerivingVia.hs" 4 29 4 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 14 4 28+ , srcInfoPoints = []+ }+ "KindSignatures"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 13+ , SrcSpan "tests/examples/DerivingVia.hs" 5 25 5 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 14 5 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 13+ , SrcSpan "tests/examples/DerivingVia.hs" 6 33 6 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 14 6 32+ , srcInfoPoints = []+ }+ "StandaloneDeriving"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 13+ , SrcSpan "tests/examples/DerivingVia.hs" 7 27 7 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 14 7 26+ , srcInfoPoints = []+ }+ "InstanceSigs"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 13+ , SrcSpan "tests/examples/DerivingVia.hs" 8 25 8 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 14 8 24+ , srcInfoPoints = []+ }+ "TypeInType"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 13+ , SrcSpan "tests/examples/DerivingVia.hs" 9 20 9 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 14 9 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 13+ , SrcSpan "tests/examples/DerivingVia.hs" 10 31 10 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 14 10 30+ , srcInfoPoints = []+ }+ "TypeApplications"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 13+ , SrcSpan "tests/examples/DerivingVia.hs" 11 30 11 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 14 11 29+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 13+ , SrcSpan "tests/examples/DerivingVia.hs" 12 36 12 39+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 14 12 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 13+ , SrcSpan "tests/examples/DerivingVia.hs" 13 25 13 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 14 13 24+ , srcInfoPoints = []+ }+ "MultiWayIf"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 13+ , SrcSpan "tests/examples/DerivingVia.hs" 14 28 14 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 14 14 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 13+ , SrcSpan "tests/examples/DerivingVia.hs" 15 34 15 37+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 14 15 33+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 13+ , SrcSpan "tests/examples/DerivingVia.hs" 16 32 16 35+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 14 16 31+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 13+ , SrcSpan "tests/examples/DerivingVia.hs" 17 27 17 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 14 17 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 13+ , SrcSpan "tests/examples/DerivingVia.hs" 18 31 18 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 14 18 30+ , srcInfoPoints = []+ }+ "FlexibleContexts"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 13+ , SrcSpan "tests/examples/DerivingVia.hs" 19 35 19 38+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 14 19 34+ , srcInfoPoints = []+ }+ "UndecidableInstances"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 8 22 17+ , srcInfoPoints = []+ }+ "Data.Void"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 8 23 20+ , srcInfoPoints = []+ }+ "Data.Complex"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 8 24 26+ , srcInfoPoints = []+ }+ "Data.Functor.Const"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 8 25 29+ , srcInfoPoints = []+ }+ "Data.Functor.Identity"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 8 26 18+ , srcInfoPoints = []+ }+ "Data.Ratio"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 8 27 28+ , srcInfoPoints = []+ }+ "Control.Monad.Reader"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 8 28 27+ , srcInfoPoints = []+ }+ "Control.Monad.State"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 8 29 28+ , srcInfoPoints = []+ }+ "Control.Monad.Writer"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 8 30 27+ , srcInfoPoints = []+ }+ "Control.Applicative"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 34+ , SrcSpan "tests/examples/DerivingVia.hs" 30 35 30 36+ , SrcSpan "tests/examples/DerivingVia.hs" 30 52 30 53+ ]+ }+ True+ [ IThingAll+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 30 48 30 49+ , SrcSpan "tests/examples/DerivingVia.hs" 30 49 30 51+ , SrcSpan "tests/examples/DerivingVia.hs" 30 51 30 52+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 48+ , srcInfoPoints = []+ }+ "WrappedMonad")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 8 32 22+ , srcInfoPoints = []+ }+ "Data.Bifunctor"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 8 33 19+ , srcInfoPoints = []+ }+ "Data.Monoid"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 8 34 17+ , srcInfoPoints = []+ }+ "Data.Kind"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 5+ , SrcSpan "tests/examples/DerivingVia.hs" 36 13 36 14+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12+ , srcInfoPoints = []+ }+ (DHInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12+ , srcInfoPoints = []+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7+ , srcInfoPoints = []+ }+ "f"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 8 36 10+ , srcInfoPoints = []+ }+ "~>"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12+ , srcInfoPoints = []+ }+ "g")))+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 21+ , SrcSpan "tests/examples/DerivingVia.hs" 36 24 36 25+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24+ , srcInfoPoints = []+ }+ "xx")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 36 31 36 33 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 30+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30+ , srcInfoPoints = []+ }+ "xx")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 38+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35+ , srcInfoPoints = []+ }+ "g"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38+ , srcInfoPoints = []+ }+ "xx")))))+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 43 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 42 12 42 13 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 11+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 19+ , srcInfoPoints = []+ }+ "MkFoo")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 11 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 8 44 11+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 13+ , SrcSpan "tests/examples/DerivingVia.hs" 44 29 44 30+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21+ , srcInfoPoints = []+ }+ "Identity")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 23+ , SrcSpan "tests/examples/DerivingVia.hs" 44 28 44 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26+ , srcInfoPoints = []+ }+ "Foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28+ , srcInfoPoints = []+ }+ "a"))))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 50 20 50 21 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 19+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 17+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 15+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13+ , srcInfoPoints = []+ }+ "Flip"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15+ , srcInfoPoints = []+ }+ "p")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28+ , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47+ ]+ }+ Nothing+ Nothing+ (RecDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28+ , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 26+ , srcInfoPoints = []+ }+ "Flip")+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 50 37 50 39 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 36+ , srcInfoPoints = []+ }+ "runFlip"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 45+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 43+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 1 55 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 9+ , SrcSpan "tests/examples/DerivingVia.hs" 52 44 52 49+ , SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 3+ , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 43+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19+ , srcInfoPoints = []+ }+ "Bifunctor")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21+ , srcInfoPoints = []+ }+ "p"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 43+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34+ , srcInfoPoints = []+ }+ "Bifunctor")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 36+ , SrcSpan "tests/examples/DerivingVia.hs" 52 42 52 43+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40+ , srcInfoPoints = []+ }+ "Flip")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42+ , srcInfoPoints = []+ }+ "p"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 8+ , srcInfoPoints = []+ }+ "bimap")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10+ , srcInfoPoints = []+ }+ "f")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12+ , srcInfoPoints = []+ }+ "g")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 14 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 41+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19+ , srcInfoPoints = []+ }+ "Flip")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 41+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 31+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 53 22 53 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 53 22 53 27+ , srcInfoPoints = []+ }+ "bimap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 28 53 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 53 28 53 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 53 28 53 29+ , srcInfoPoints = []+ }+ "g"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 53 30 53 31+ , srcInfoPoints = []+ }+ "f"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41+ , srcInfoPoints = []+ }+ "runFlip"))))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 1 58 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 9+ , SrcSpan "tests/examples/DerivingVia.hs" 55 44 55 49+ , SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 3+ , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 43+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19+ , srcInfoPoints = []+ }+ "Bifunctor")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21+ , srcInfoPoints = []+ }+ "p"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 43+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32+ , srcInfoPoints = []+ }+ "Functor")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 34+ , SrcSpan "tests/examples/DerivingVia.hs" 55 42 55 43+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 42+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 40+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38+ , srcInfoPoints = []+ }+ "Flip")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40+ , srcInfoPoints = []+ }+ "p")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 7+ , srcInfoPoints = []+ }+ "fmap")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 11 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 36+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16+ , srcInfoPoints = []+ }+ "Flip")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 36+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 56 19 56 24+ , srcInfoPoints = []+ }+ "first")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 56 25 56 26+ , srcInfoPoints = []+ }+ "f"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36+ , srcInfoPoints = []+ }+ "runFlip"))))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 59 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 58 15 58 16 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 14+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12+ , srcInfoPoints = []+ }+ "Bar"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 22+ , srcInfoPoints = []+ }+ "MkBar")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 24+ , SrcSpan "tests/examples/DerivingVia.hs" 58 36 58 37+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 36+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30+ , srcInfoPoints = []+ }+ "Either")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36+ , srcInfoPoints = []+ }+ "Int"))))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 11 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 8 60 11+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 13+ , SrcSpan "tests/examples/DerivingVia.hs" 60 28 60 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17+ , srcInfoPoints = []+ }+ "Flip")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24+ , srcInfoPoints = []+ }+ "Either"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28+ , srcInfoPoints = []+ }+ "Int")))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19+ , srcInfoPoints = []+ }+ "Functor")))+ ]+ ]+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 5+ , SrcSpan "tests/examples/DerivingVia.hs" 66 13 66 14+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12+ , srcInfoPoints = []+ }+ "MTrans"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 66 30 66 32 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 16+ , SrcSpan "tests/examples/DerivingVia.hs" 66 28 66 29+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 66 21 66 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20+ , srcInfoPoints = []+ }+ "Type")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28+ , srcInfoPoints = []+ }+ "Type")))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 34+ , SrcSpan "tests/examples/DerivingVia.hs" 66 46 66 47+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 66 39 66 41 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38+ , srcInfoPoints = []+ }+ "Type")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46+ , srcInfoPoints = []+ }+ "Type"))))))+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 72 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 69 13 69 18+ , SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 3+ , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10+ , srcInfoPoints = []+ }+ "Dict"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12+ , srcInfoPoints = []+ }+ "c")))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 70 8 70 10 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 7+ , srcInfoPoints = []+ }+ "Dict")+ Nothing+ Nothing+ Nothing+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 22+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 12+ , srcInfoPoints = []+ }+ "c")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20+ , srcInfoPoints = []+ }+ "Dict")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22+ , srcInfoPoints = []+ }+ "c"))))+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 72 16 72 17 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15+ , srcInfoPoints = []+ }+ (DHInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15+ , srcInfoPoints = []+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10+ , srcInfoPoints = []+ }+ "a"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 11 72 13+ , srcInfoPoints = []+ }+ ":-"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 21+ , srcInfoPoints = []+ }+ "Sub")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 23+ , SrcSpan "tests/examples/DerivingVia.hs" 72 34 72 35+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 34+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 24+ , srcInfoPoints = []+ }+ "a")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32+ , srcInfoPoints = []+ }+ "Dict")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34+ , srcInfoPoints = []+ }+ "b"))))+ ])+ ]+ []+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 74 8 74 9 ]+ }+ (AssocLeft+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 7+ , srcInfoPoints = []+ })+ (Just 1)+ [ VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12+ , srcInfoPoints = []+ }+ "\\\\")+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 6 75 8 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 2+ , SrcSpan "tests/examples/DerivingVia.hs" 75 2 75 4+ , SrcSpan "tests/examples/DerivingVia.hs" 75 4 75 5+ ]+ }+ "\\\\"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 39+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 10+ , srcInfoPoints = []+ }+ "a")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 23 75 25 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 15+ , SrcSpan "tests/examples/DerivingVia.hs" 75 21 75 22+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 21+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 16+ , srcInfoPoints = []+ }+ "b")))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21+ , srcInfoPoints = []+ }+ "r"))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 35 75 37 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 27+ , SrcSpan "tests/examples/DerivingVia.hs" 75 33 75 34+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 33+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28+ , srcInfoPoints = []+ }+ "a"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31+ , srcInfoPoints = []+ }+ ":-")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33+ , srcInfoPoints = []+ }+ "b"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39+ , srcInfoPoints = []+ }+ "r")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2+ , srcInfoPoints = []+ }+ "r"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 3 76 5+ , srcInfoPoints = []+ }+ "\\\\")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9+ , srcInfoPoints = []+ }+ "Sub"))+ [ PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14+ , srcInfoPoints = []+ }+ "Dict"))+ []+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 16 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18+ , srcInfoPoints = []+ }+ "r"))))+ Nothing+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 1 85 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 6+ , SrcSpan "tests/examples/DerivingVia.hs" 84 38 84 43+ , SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 3+ , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 37+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19+ , srcInfoPoints = []+ }+ "LiftingMonad"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 21+ , SrcSpan "tests/examples/DerivingVia.hs" 84 27 84 29+ , SrcSpan "tests/examples/DerivingVia.hs" 84 36 84 37+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 21 84 26+ , srcInfoPoints = []+ }+ "trans")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36+ , srcInfoPoints = []+ }+ "MTrans")))))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 8+ , srcInfoPoints = []+ }+ "proof"+ ]+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 38+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22+ , srcInfoPoints = []+ }+ ":-")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28+ , srcInfoPoints = []+ }+ "Monad")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 30+ , SrcSpan "tests/examples/DerivingVia.hs" 85 37 85 38+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 37+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35+ , srcInfoPoints = []+ }+ "trans"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37+ , srcInfoPoints = []+ }+ "m")))))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 1 91 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 9+ , SrcSpan "tests/examples/DerivingVia.hs" 87 44 87 49+ , SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 3+ , SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 3+ , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22+ , srcInfoPoints = []+ }+ "LiftingMonad")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 24+ , SrcSpan "tests/examples/DerivingVia.hs" 87 33 87 35+ , SrcSpan "tests/examples/DerivingVia.hs" 87 42 87 43+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30+ , srcInfoPoints = []+ }+ "StateT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32+ , srcInfoPoints = []+ }+ "s")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42+ , srcInfoPoints = []+ }+ "MTrans"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 8+ , srcInfoPoints = []+ }+ "proof"+ ]+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 41+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22+ , srcInfoPoints = []+ }+ ":-")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28+ , srcInfoPoints = []+ }+ "Monad")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 30+ , SrcSpan "tests/examples/DerivingVia.hs" 88 40 88 41+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 40+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 88 30 88 36+ , srcInfoPoints = []+ }+ "StateT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38+ , srcInfoPoints = []+ }+ "s")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40+ , srcInfoPoints = []+ }+ "m")))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8+ , srcInfoPoints = []+ }+ "proof"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 19+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14+ , srcInfoPoints = []+ }+ "Sub")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19+ , srcInfoPoints = []+ }+ "Dict")))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 1 95 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 9+ , SrcSpan "tests/examples/DerivingVia.hs" 91 57 91 62+ , SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 3+ , SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 3+ , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 56+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16+ , srcInfoPoints = []+ }+ "Monoid")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18+ , srcInfoPoints = []+ }+ "w"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 56+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34+ , srcInfoPoints = []+ }+ "LiftingMonad")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 36+ , SrcSpan "tests/examples/DerivingVia.hs" 91 46 91 48+ , SrcSpan "tests/examples/DerivingVia.hs" 91 55 91 56+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 45+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43+ , srcInfoPoints = []+ }+ "WriterT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45+ , srcInfoPoints = []+ }+ "w")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55+ , srcInfoPoints = []+ }+ "MTrans"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 8+ , srcInfoPoints = []+ }+ "proof"+ ]+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 42+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22+ , srcInfoPoints = []+ }+ ":-")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28+ , srcInfoPoints = []+ }+ "Monad")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 30+ , SrcSpan "tests/examples/DerivingVia.hs" 92 41 92 42+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 41+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 39+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 92 30 92 37+ , srcInfoPoints = []+ }+ "WriterT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39+ , srcInfoPoints = []+ }+ "w")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41+ , srcInfoPoints = []+ }+ "m")))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8+ , srcInfoPoints = []+ }+ "proof"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 19+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14+ , srcInfoPoints = []+ }+ "Sub")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19+ , srcInfoPoints = []+ }+ "Dict")))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 1 99 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 9+ , SrcSpan "tests/examples/DerivingVia.hs" 95 102 95 107+ , SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 3+ , SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 3+ , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 101+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 11+ , SrcSpan "tests/examples/DerivingVia.hs" 95 29 95 30+ , SrcSpan "tests/examples/DerivingVia.hs" 95 50 95 51+ , SrcSpan "tests/examples/DerivingVia.hs" 95 52 95 54+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23+ , srcInfoPoints = []+ }+ "LiftingMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29+ , srcInfoPoints = []+ }+ "trans")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43+ , srcInfoPoints = []+ }+ "LiftingMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50+ , srcInfoPoints = []+ }+ "trans'")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 101+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67+ , srcInfoPoints = []+ }+ "LiftingMonad")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 101+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 69+ , SrcSpan "tests/examples/DerivingVia.hs" 95 91 95 93+ , SrcSpan "tests/examples/DerivingVia.hs" 95 100 95 101+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 90+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 83+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83+ , srcInfoPoints = []+ }+ "trans")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90+ , srcInfoPoints = []+ }+ "trans'")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100+ , srcInfoPoints = []+ }+ "MTrans"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 8+ , srcInfoPoints = []+ }+ "proof"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 18+ , SrcSpan "tests/examples/DerivingVia.hs" 96 20 96 21+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20+ , srcInfoPoints = []+ }+ "m")+ ])+ Nothing+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 64+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32+ , srcInfoPoints = []+ }+ ":-")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 64+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38+ , srcInfoPoints = []+ }+ "Monad")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 40+ , SrcSpan "tests/examples/DerivingVia.hs" 96 63 96 64+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 63+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 61+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 54+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 96 40 96 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 96 40 96 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 96+ 40+ 96+ 48+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 96 49 96 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 96 49 96 54+ , srcInfoPoints = []+ }+ "trans")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 55 96 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 96 55 96 61+ , srcInfoPoints = []+ }+ "trans'")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63+ , srcInfoPoints = []+ }+ "m"))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8+ , srcInfoPoints = []+ }+ "proof"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 69+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14+ , srcInfoPoints = []+ }+ "Sub")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 16+ , SrcSpan "tests/examples/DerivingVia.hs" 97 68 97 69+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 68+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 48+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 16 97 20+ , srcInfoPoints = []+ }+ "Dict")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 21 97 23+ , srcInfoPoints = []+ }+ "\\\\")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 24 97 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 24 97 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 97+ 24+ 97+ 29+ , srcInfoPoints = []+ }+ "proof")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 30 97 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 97 30 97 31+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 31 97 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 97+ 31+ 97+ 36+ , srcInfoPoints = []+ }+ "trans"))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 38+ ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 38 97 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 97 38 97 39+ , SrcSpan+ "tests/examples/DerivingVia.hs" 97 47 97 48+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 39 97 47+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 97+ 39+ 97+ 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 97+ 39+ 97+ 45+ , srcInfoPoints = []+ }+ "trans'"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 97+ 46+ 97+ 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 97+ 46+ 97+ 47+ , srcInfoPoints = []+ }+ "m")))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51+ , srcInfoPoints = []+ }+ "\\\\")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 68+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 65+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 52 97 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 52 97 57+ , srcInfoPoints = []+ }+ "proof")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 59+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 59 97 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 59 97 65+ , srcInfoPoints = []+ }+ "trans'"))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 67 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 97 67 97 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 97 67 97 68+ , srcInfoPoints = []+ }+ "m"))))))))+ Nothing)+ ])+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 109 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 99 15 99 17+ , SrcSpan "tests/examples/DerivingVia.hs" 99 25 99 30+ , SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 3+ , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3+ , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3+ ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 8+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14+ , srcInfoPoints = []+ }+ "Stack"))+ (Just+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24+ , srcInfoPoints = []+ }+ "MTrans"))))+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 71+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 100 9 100 11 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 8+ , srcInfoPoints = []+ }+ "Stack")+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 71+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 100 59 100 61 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 58+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 56+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19+ , srcInfoPoints = []+ }+ "ReaderT")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23+ , srcInfoPoints = []+ }+ "Int"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 25+ , SrcSpan "tests/examples/DerivingVia.hs" 100 55 100 56+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31+ , srcInfoPoints = []+ }+ "StateT")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 38+ , SrcSpan "tests/examples/DerivingVia.hs" 100 54 100 55+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 54+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 52+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 100 38 100 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 100 38 100 45+ , srcInfoPoints = []+ }+ "WriterT")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 46 100 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 100 46 100 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 100 46 100 52+ , srcInfoPoints = []+ }+ "String"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54+ , srcInfoPoints = []+ }+ "m")))))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 71+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 69+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67+ , srcInfoPoints = []+ }+ "Stack")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69+ , srcInfoPoints = []+ }+ "m")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71+ , srcInfoPoints = []+ }+ "a"))))+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 101 3 108 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 11+ , SrcSpan "tests/examples/DerivingVia.hs" 102 5 102 6+ , SrcSpan "tests/examples/DerivingVia.hs" 103 5 103 6+ , SrcSpan "tests/examples/DerivingVia.hs" 104 5 104 6+ , SrcSpan "tests/examples/DerivingVia.hs" 105 5 105 6+ , SrcSpan "tests/examples/DerivingVia.hs" 106 5 106 6+ , SrcSpan "tests/examples/DerivingVia.hs" 107 5 107 6+ , SrcSpan "tests/examples/DerivingVia.hs" 108 5 108 6+ ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 101 12 101 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14+ , srcInfoPoints = []+ }+ "Functor")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18+ , srcInfoPoints = []+ }+ "Applicative")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12+ , srcInfoPoints = []+ }+ "Monad")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18+ , srcInfoPoints = []+ }+ "MonadReader")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22+ , srcInfoPoints = []+ }+ "Int"))))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17+ , srcInfoPoints = []+ }+ "MonadState")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22+ , srcInfoPoints = []+ }+ "Bool"))))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18+ , srcInfoPoints = []+ }+ "MonadWriter")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25+ , srcInfoPoints = []+ }+ "String"))))+ ]+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 11+ , SrcSpan "tests/examples/DerivingVia.hs" 109 12 109 13+ , SrcSpan "tests/examples/DerivingVia.hs" 109 23 109 24+ , SrcSpan "tests/examples/DerivingVia.hs" 109 33 109 34+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 8 110 11+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 13+ , SrcSpan "tests/examples/DerivingVia.hs" 110 73 110 74+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 73+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20+ , srcInfoPoints = []+ }+ "ReaderT")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24+ , srcInfoPoints = []+ }+ "Int"))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26+ , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34+ , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26+ , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34+ , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 73+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 47+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42+ , srcInfoPoints = []+ }+ "StateT")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47+ , srcInfoPoints = []+ }+ "Bool"))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49+ , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57+ , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49+ , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57+ , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 73+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66+ , srcInfoPoints = []+ }+ "WriterT")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73+ , srcInfoPoints = []+ }+ "String")))))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23+ , srcInfoPoints = []+ }+ "MonadTrans")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33+ , srcInfoPoints = []+ }+ "MFunctor")))+ ]+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 1 113 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 6+ , SrcSpan "tests/examples/DerivingVia.hs" 112 34 112 39+ , SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 3+ , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 33+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15+ , srcInfoPoints = []+ }+ "MFunctor"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 17+ , SrcSpan "tests/examples/DerivingVia.hs" 112 23 112 25+ , SrcSpan "tests/examples/DerivingVia.hs" 112 32 112 33+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 17 112 22+ , srcInfoPoints = []+ }+ "trans")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32+ , srcInfoPoints = []+ }+ "MTrans")))))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 8+ , srcInfoPoints = []+ }+ "hoist"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 57+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 113 12 113 17+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19+ , srcInfoPoints = []+ }+ "m"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 33 113 35 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 24+ , SrcSpan "tests/examples/DerivingVia.hs" 113 31 113 32+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28+ , srcInfoPoints = []+ }+ "~>")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31+ , srcInfoPoints = []+ }+ "m'"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 37+ , SrcSpan "tests/examples/DerivingVia.hs" 113 56 113 57+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 56+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 44+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42+ , srcInfoPoints = []+ }+ "trans"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47+ , srcInfoPoints = []+ }+ "~>")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 56+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53+ , srcInfoPoints = []+ }+ "trans"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56+ , srcInfoPoints = []+ }+ "m'"))))))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 115 1 119 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 9+ , SrcSpan "tests/examples/DerivingVia.hs" 115 41 115 46+ , SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 3+ , SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 3+ , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18+ , srcInfoPoints = []+ }+ "MFunctor")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 20+ , SrcSpan "tests/examples/DerivingVia.hs" 115 30 115 32+ , SrcSpan "tests/examples/DerivingVia.hs" 115 39 115 40+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27+ , srcInfoPoints = []+ }+ "ReaderT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29+ , srcInfoPoints = []+ }+ "r")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39+ , srcInfoPoints = []+ }+ "MTrans"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 8+ , srcInfoPoints = []+ }+ "hoist"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 65+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 116 12 116 17+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19+ , srcInfoPoints = []+ }+ "m"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 33 116 35 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 24+ , SrcSpan "tests/examples/DerivingVia.hs" 116 31 116 32+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28+ , srcInfoPoints = []+ }+ "~>")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31+ , srcInfoPoints = []+ }+ "m'"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 37+ , SrcSpan "tests/examples/DerivingVia.hs" 116 64 116 65+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 64+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 48+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 116 37 116 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 116 37 116 44+ , srcInfoPoints = []+ }+ "ReaderT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 45 116 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 116 45 116 46+ , srcInfoPoints = []+ }+ "r")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51+ , srcInfoPoints = []+ }+ "~>")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 64+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 116 52 116 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 116 52 116 59+ , srcInfoPoints = []+ }+ "ReaderT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 60 116 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 116 60 116 61+ , srcInfoPoints = []+ }+ "r")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64+ , srcInfoPoints = []+ }+ "m'"))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 8+ , srcInfoPoints = []+ }+ "hoist")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12+ , srcInfoPoints = []+ }+ "nat")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 14 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 46+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22+ , srcInfoPoints = []+ }+ "ReaderT")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 46+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 117 25 117 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 117 25 117 29+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 30 117 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 117 30 117 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 117 30 117 33+ , srcInfoPoints = []+ }+ "nat"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 117 34 117 35+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 117 36 117 46+ , srcInfoPoints = []+ }+ "runReaderT"))))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 119 1 123 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 9+ , SrcSpan "tests/examples/DerivingVia.hs" 119 40 119 45+ , SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 3+ , SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 3+ , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18+ , srcInfoPoints = []+ }+ "MFunctor")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 20+ , SrcSpan "tests/examples/DerivingVia.hs" 119 29 119 31+ , SrcSpan "tests/examples/DerivingVia.hs" 119 38 119 39+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26+ , srcInfoPoints = []+ }+ "StateT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28+ , srcInfoPoints = []+ }+ "s")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38+ , srcInfoPoints = []+ }+ "MTrans"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 8+ , srcInfoPoints = []+ }+ "hoist"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 63+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 120 12 120 17+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19+ , srcInfoPoints = []+ }+ "m"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 33 120 35 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 24+ , SrcSpan "tests/examples/DerivingVia.hs" 120 31 120 32+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28+ , srcInfoPoints = []+ }+ "~>")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31+ , srcInfoPoints = []+ }+ "m'"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 37+ , SrcSpan "tests/examples/DerivingVia.hs" 120 62 120 63+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 62+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 47+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 45+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 120 37 120 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 120 37 120 43+ , srcInfoPoints = []+ }+ "StateT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 44 120 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 120 44 120 45+ , srcInfoPoints = []+ }+ "s")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50+ , srcInfoPoints = []+ }+ "~>")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 62+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 59+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 120 51 120 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 120 51 120 57+ , srcInfoPoints = []+ }+ "StateT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 58 120 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 120 58 120 59+ , srcInfoPoints = []+ }+ "s")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62+ , srcInfoPoints = []+ }+ "m'"))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 8+ , srcInfoPoints = []+ }+ "hoist")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12+ , srcInfoPoints = []+ }+ "nat")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 14 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 44+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21+ , srcInfoPoints = []+ }+ "StateT")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 44+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 121 24 121 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 121 24 121 28+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 29 121 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 121 29 121 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 121 29 121 32+ , srcInfoPoints = []+ }+ "nat"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 121 33 121 34+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 121 35 121 44+ , srcInfoPoints = []+ }+ "runStateT"))))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 123 1 127 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 9+ , SrcSpan "tests/examples/DerivingVia.hs" 123 41 123 46+ , SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 3+ , SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 3+ , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18+ , srcInfoPoints = []+ }+ "MFunctor")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 20+ , SrcSpan "tests/examples/DerivingVia.hs" 123 30 123 32+ , SrcSpan "tests/examples/DerivingVia.hs" 123 39 123 40+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27+ , srcInfoPoints = []+ }+ "WriterT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29+ , srcInfoPoints = []+ }+ "w")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39+ , srcInfoPoints = []+ }+ "MTrans"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 8+ , srcInfoPoints = []+ }+ "hoist"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 65+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 124 12 124 17+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19+ , srcInfoPoints = []+ }+ "m"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 33 124 35 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 24+ , SrcSpan "tests/examples/DerivingVia.hs" 124 31 124 32+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28+ , srcInfoPoints = []+ }+ "~>")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31+ , srcInfoPoints = []+ }+ "m'"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 37+ , SrcSpan "tests/examples/DerivingVia.hs" 124 64 124 65+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 64+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 48+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 124 37 124 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 124 37 124 44+ , srcInfoPoints = []+ }+ "WriterT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 45 124 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 124 45 124 46+ , srcInfoPoints = []+ }+ "w")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51+ , srcInfoPoints = []+ }+ "~>")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 64+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 124 52 124 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 124 52 124 59+ , srcInfoPoints = []+ }+ "WriterT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 60 124 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 124 60 124 61+ , srcInfoPoints = []+ }+ "w")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64+ , srcInfoPoints = []+ }+ "m'"))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 8+ , srcInfoPoints = []+ }+ "hoist")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12+ , srcInfoPoints = []+ }+ "nat")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 14 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 41+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22+ , srcInfoPoints = []+ }+ "WriterT")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 125 25 125 28+ , srcInfoPoints = []+ }+ "nat")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 125 29 125 30+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 125 31 125 41+ , srcInfoPoints = []+ }+ "runWriterT"))))))+ Nothing+ ])+ ])+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 127 8 127 9 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 7+ , srcInfoPoints = []+ })+ (Just 9)+ [ ConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11+ , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19+ , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11+ , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19+ , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20+ ]+ }+ "ComposeT")+ ]+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 1 130 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 128 18 128 20+ , SrcSpan "tests/examples/DerivingVia.hs" 128 48 128 53+ , SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 3+ , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3+ , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3+ ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 8+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17+ , srcInfoPoints = []+ }+ "ComposeT"))+ (Just+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 128 28 128 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27+ , srcInfoPoints = []+ }+ "MTrans")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 128 38 128 40 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37+ , srcInfoPoints = []+ }+ "MTrans")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47+ , srcInfoPoints = []+ }+ "MTrans"))))))+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 129 12 129 14+ , SrcSpan "tests/examples/DerivingVia.hs" 129 15 129 16+ , SrcSpan "tests/examples/DerivingVia.hs" 129 42 129 43+ , SrcSpan "tests/examples/DerivingVia.hs" 129 44 129 46+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 11+ , srcInfoPoints = []+ }+ "ComposeT")+ Nothing+ Nothing+ (Just+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 129 29 129 31 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 28+ , srcInfoPoints = []+ }+ "getComposeT"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 41+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 39+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33+ , srcInfoPoints = []+ }+ "f"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 35+ , SrcSpan "tests/examples/DerivingVia.hs" 129 38 129 39+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 38+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36+ , srcInfoPoints = []+ }+ "g"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38+ , srcInfoPoints = []+ }+ "m")))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41+ , srcInfoPoints = []+ }+ "a")))+ ])+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 63+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 61+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 59+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 57+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59+ , srcInfoPoints = []+ }+ "g")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61+ , srcInfoPoints = []+ }+ "m")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63+ , srcInfoPoints = []+ }+ "a")))+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 11+ , SrcSpan "tests/examples/DerivingVia.hs" 130 20 130 21+ , SrcSpan "tests/examples/DerivingVia.hs" 130 28 130 29+ , SrcSpan "tests/examples/DerivingVia.hs" 130 41 130 42+ , SrcSpan "tests/examples/DerivingVia.hs" 130 48 130 49+ ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 12 130 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28+ , srcInfoPoints = []+ }+ "Functor")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41+ , srcInfoPoints = []+ }+ "Applicative")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48+ , srcInfoPoints = []+ }+ "Monad")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 132 1 137 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 9+ , SrcSpan "tests/examples/DerivingVia.hs" 132 84 132 89+ , SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 3+ , SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 3+ , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 83+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 11+ , SrcSpan "tests/examples/DerivingVia.hs" 132 23 132 24+ , SrcSpan "tests/examples/DerivingVia.hs" 132 37 132 38+ , SrcSpan "tests/examples/DerivingVia.hs" 132 53 132 54+ , SrcSpan "tests/examples/DerivingVia.hs" 132 55 132 57+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21+ , srcInfoPoints = []+ }+ "MonadTrans")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35+ , srcInfoPoints = []+ }+ "MonadTrans")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37+ , srcInfoPoints = []+ }+ "g")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51+ , srcInfoPoints = []+ }+ "LiftingMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53+ , srcInfoPoints = []+ }+ "g")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 83+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68+ , srcInfoPoints = []+ }+ "MonadTrans")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 83+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 70+ , SrcSpan "tests/examples/DerivingVia.hs" 132 82 132 83+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 82+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 80+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82+ , srcInfoPoints = []+ }+ "g"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 7+ , srcInfoPoints = []+ }+ "lift"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 17+ , SrcSpan "tests/examples/DerivingVia.hs" 133 19 133 20+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19+ , srcInfoPoints = []+ }+ "m")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 133 21 133 26+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28+ , srcInfoPoints = []+ }+ "m"))))))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 51+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36+ , srcInfoPoints = []+ }+ "~>")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 51+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 49+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 47+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 133 37 133 45+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49+ , srcInfoPoints = []+ }+ "g")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51+ , srcInfoPoints = []+ }+ "m"))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7+ , srcInfoPoints = []+ }+ "lift"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 8 135 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 134 8 134 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 10 135 19+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 32+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18+ , srcInfoPoints = []+ }+ "ComposeT")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25+ , srcInfoPoints = []+ }+ "lift")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32+ , srcInfoPoints = []+ }+ "lift")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7+ , srcInfoPoints = []+ }+ "\\\\")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 19+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13+ , srcInfoPoints = []+ }+ "proof")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 15 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16+ , srcInfoPoints = []+ }+ "g"))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19+ , srcInfoPoints = []+ }+ "m"))))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 137 1 146 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 9+ , SrcSpan "tests/examples/DerivingVia.hs" 137 78 137 83+ , SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 3+ , SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 3+ , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 77+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 11+ , SrcSpan "tests/examples/DerivingVia.hs" 137 21 137 22+ , SrcSpan "tests/examples/DerivingVia.hs" 137 33 137 34+ , SrcSpan "tests/examples/DerivingVia.hs" 137 49 137 50+ , SrcSpan "tests/examples/DerivingVia.hs" 137 51 137 53+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19+ , srcInfoPoints = []+ }+ "MFunctor")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31+ , srcInfoPoints = []+ }+ "MFunctor")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33+ , srcInfoPoints = []+ }+ "g")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47+ , srcInfoPoints = []+ }+ "LiftingMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49+ , srcInfoPoints = []+ }+ "g")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 77+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62+ , srcInfoPoints = []+ }+ "MFunctor")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 64+ , SrcSpan "tests/examples/DerivingVia.hs" 137 76 137 77+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 76+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 74+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76+ , srcInfoPoints = []+ }+ "g"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 8+ , srcInfoPoints = []+ }+ "hoist"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 18+ , SrcSpan "tests/examples/DerivingVia.hs" 138 23 138 24+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20+ , srcInfoPoints = []+ }+ "m")+ , UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23+ , srcInfoPoints = []+ }+ "m'")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 25 138 30+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32+ , srcInfoPoints = []+ }+ "m"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 46 138 48 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 37+ , SrcSpan "tests/examples/DerivingVia.hs" 138 44 138 45+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 44+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41+ , srcInfoPoints = []+ }+ "~>")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44+ , srcInfoPoints = []+ }+ "m'"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 50+ , SrcSpan "tests/examples/DerivingVia.hs" 138 83 138 84+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 83+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 64+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 62+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 60+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 50 138 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 50 138 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 138+ 50+ 138+ 58+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 59 138 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 59 138 60+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 61 138 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 61 138 62+ , srcInfoPoints = []+ }+ "g")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64+ , srcInfoPoints = []+ }+ "m")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67+ , srcInfoPoints = []+ }+ "~>")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 83+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 80+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 78+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 68 138 76+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 68 138 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 138+ 68+ 138+ 76+ , srcInfoPoints = []+ }+ "ComposeT")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 77 138 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 77 138 78+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 79 138 80+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 138 79 138 80+ , srcInfoPoints = []+ }+ "g")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83+ , srcInfoPoints = []+ }+ "m'"))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 8+ , srcInfoPoints = []+ }+ "hoist")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 11 140 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 139 11 139 12 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 13 140 19+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 53+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 13 139 21+ , srcInfoPoints = []+ }+ "ComposeT")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 22 139 23+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 53+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 24 139 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 24 139 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 139+ 24+ 139+ 29+ , srcInfoPoints = []+ }+ "hoist")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 30 139 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 139 30 139 31+ , SrcSpan+ "tests/examples/DerivingVia.hs" 139 38 139 39+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 31 139 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 139+ 31+ 139+ 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 139+ 31+ 139+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 139+ 31+ 139+ 36+ , srcInfoPoints = []+ }+ "hoist")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 139+ 37+ 139+ 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 139+ 37+ 139+ 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 139+ 37+ 139+ 38+ , srcInfoPoints = []+ }+ "f"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 40 139 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 40 139 41+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 40 139 41+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 139 42 139 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 42 139 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 139 42 139 53+ , srcInfoPoints = []+ }+ "getComposeT")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7+ , srcInfoPoints = []+ }+ "\\\\")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 19+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 140 8 140 13+ , srcInfoPoints = []+ }+ "proof")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 15+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 140 15 140 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 140 15 140 16+ , srcInfoPoints = []+ }+ "g"))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 140 18 140 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 140 18 140 19+ , srcInfoPoints = []+ }+ "m"))))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 1 150 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 146 13 146 14 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10+ , srcInfoPoints = []+ }+ "X"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 16+ , srcInfoPoints = []+ }+ "X")+ [ TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 18+ , SrcSpan "tests/examples/DerivingVia.hs" 146 19 146 20+ , SrcSpan "tests/examples/DerivingVia.hs" 146 22 146 23+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22+ , srcInfoPoints = []+ }+ "a")+ ]+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 11+ , SrcSpan "tests/examples/DerivingVia.hs" 147 12 147 13+ , SrcSpan "tests/examples/DerivingVia.hs" 147 22 147 23+ , SrcSpan "tests/examples/DerivingVia.hs" 147 30 147 31+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 8 148 11+ , srcInfoPoints = []+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 13+ , SrcSpan "tests/examples/DerivingVia.hs" 148 22 148 23+ , SrcSpan "tests/examples/DerivingVia.hs" 148 29 148 30+ ]+ }+ Boxed+ [ TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20+ , srcInfoPoints = []+ }+ "Product")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22+ , srcInfoPoints = []+ }+ "a"))+ , TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27+ , srcInfoPoints = []+ }+ "Sum")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29+ , srcInfoPoints = []+ }+ "a"))+ ])))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22+ , srcInfoPoints = []+ }+ "Semigroup")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30+ , srcInfoPoints = []+ }+ "Monoid")))+ ]+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 11+ , SrcSpan "tests/examples/DerivingVia.hs" 150 12 150 13+ , SrcSpan "tests/examples/DerivingVia.hs" 150 17 150 18+ , SrcSpan "tests/examples/DerivingVia.hs" 150 21 150 22+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 151 8 151 11+ , srcInfoPoints = []+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 13+ , SrcSpan "tests/examples/DerivingVia.hs" 151 14 151 15+ , SrcSpan "tests/examples/DerivingVia.hs" 151 17 151 18+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17+ , srcInfoPoints = []+ }+ "a")+ ])))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17+ , srcInfoPoints = []+ }+ "Show")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21+ , srcInfoPoints = []+ }+ "Eq")))+ ]+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 157 1 158 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 6+ , SrcSpan "tests/examples/DerivingVia.hs" 157 11 157 16+ , SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 3+ , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8+ , srcInfoPoints = []+ }+ "C"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10+ , srcInfoPoints = []+ }+ "f")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 4+ , srcInfoPoints = []+ }+ "c"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 158 12 158 14 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 11+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18+ , srcInfoPoints = []+ }+ "Int")))))+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 160 16 160 17 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 15+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11+ , srcInfoPoints = []+ }+ "X2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13+ , srcInfoPoints = []+ }+ "f")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 20+ , srcInfoPoints = []+ }+ "X2")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 22+ , SrcSpan "tests/examples/DerivingVia.hs" 160 25 160 26+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 25+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 162 1 165 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 9+ , SrcSpan "tests/examples/DerivingVia.hs" 162 19 162 24+ , SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 3+ , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11+ , srcInfoPoints = []+ }+ "C")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 13+ , SrcSpan "tests/examples/DerivingVia.hs" 162 17 162 18+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 17+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15+ , srcInfoPoints = []+ }+ "X2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17+ , srcInfoPoints = []+ }+ "f"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4+ , srcInfoPoints = []+ }+ "c"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12+ , srcInfoPoints = []+ }+ "const")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14+ , srcInfoPoints = []+ }+ 0+ "0"))))+ Nothing)+ ])+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 9+ , SrcSpan "tests/examples/DerivingVia.hs" 165 22 165 30+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 10 165 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 15+ , SrcSpan "tests/examples/DerivingVia.hs" 165 20 165 21+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17+ , srcInfoPoints = []+ }+ "X2")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20+ , srcInfoPoints = []+ }+ "IO")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32+ , srcInfoPoints = []+ }+ "C")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35+ , srcInfoPoints = []+ }+ "IO")))))+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 171 14 171 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11+ , srcInfoPoints = []+ }+ "P0"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 18+ , srcInfoPoints = []+ }+ "P0")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 47 171 50+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52+ , srcInfoPoints = []+ }+ "a"))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 172 14 172 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11+ , srcInfoPoints = []+ }+ "P1"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 18+ , srcInfoPoints = []+ }+ "P1")+ [ TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 20+ , SrcSpan "tests/examples/DerivingVia.hs" 172 21 172 22+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21+ , srcInfoPoints = []+ }+ "a"))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 47 172 50+ , srcInfoPoints = []+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 52+ , SrcSpan "tests/examples/DerivingVia.hs" 172 53 172 54+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53+ , srcInfoPoints = []+ }+ "a")))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 173 14 173 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11+ , srcInfoPoints = []+ }+ "P2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 18+ , srcInfoPoints = []+ }+ "P2")+ [ TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 20+ , SrcSpan "tests/examples/DerivingVia.hs" 173 21 173 22+ , SrcSpan "tests/examples/DerivingVia.hs" 173 24 173 25+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24+ , srcInfoPoints = []+ }+ "a")+ ]+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 47 173 50+ , srcInfoPoints = []+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 52+ , SrcSpan "tests/examples/DerivingVia.hs" 173 53 173 54+ , SrcSpan "tests/examples/DerivingVia.hs" 173 56 173 57+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56+ , srcInfoPoints = []+ }+ "a")+ ])))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 174 14 174 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11+ , srcInfoPoints = []+ }+ "P3"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 18+ , srcInfoPoints = []+ }+ "P3")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 20+ , SrcSpan "tests/examples/DerivingVia.hs" 174 27 174 28+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 47 174 50+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 52+ , SrcSpan "tests/examples/DerivingVia.hs" 174 59 174 60+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 59+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57+ , srcInfoPoints = []+ }+ "First")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59+ , srcInfoPoints = []+ }+ "a"))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 175 14 175 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11+ , srcInfoPoints = []+ }+ "P4"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 18+ , srcInfoPoints = []+ }+ "P4")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 20+ , SrcSpan "tests/examples/DerivingVia.hs" 175 27 175 28+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 47 175 50+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 52+ , SrcSpan "tests/examples/DerivingVia.hs" 175 61 175 62+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57+ , srcInfoPoints = []+ }+ "First")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59+ , srcInfoPoints = []+ }+ "$")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61+ , srcInfoPoints = []+ }+ "a"))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 176 14 176 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11+ , srcInfoPoints = []+ }+ "P5"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 18+ , srcInfoPoints = []+ }+ "P5")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 47 176 50+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 52+ , SrcSpan "tests/examples/DerivingVia.hs" 176 64 176 65+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 64+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60+ , srcInfoPoints = []+ }+ "Identity")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62+ , srcInfoPoints = []+ }+ "$")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64+ , srcInfoPoints = []+ }+ "a"))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 177 14 177 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11+ , srcInfoPoints = []+ }+ "P6"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 18+ , srcInfoPoints = []+ }+ "P6")+ [ TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 20+ , SrcSpan "tests/examples/DerivingVia.hs" 177 21 177 22+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21+ , srcInfoPoints = []+ }+ "a"))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 47 177 50+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 52+ , SrcSpan "tests/examples/DerivingVia.hs" 177 58 177 59+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53+ , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53+ , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54+ ]+ }+ (ListCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53+ , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54+ ]+ })))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56+ , srcInfoPoints = []+ }+ "$")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58+ , srcInfoPoints = []+ }+ "a"))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 178 14 178 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11+ , srcInfoPoints = []+ }+ "P7"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 18+ , srcInfoPoints = []+ }+ "P7")+ [ TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 20+ , SrcSpan "tests/examples/DerivingVia.hs" 178 21 178 22+ , SrcSpan "tests/examples/DerivingVia.hs" 178 24 178 25+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24+ , srcInfoPoints = []+ }+ "a")+ ]+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 47 178 50+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 70+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 52+ , SrcSpan "tests/examples/DerivingVia.hs" 178 69 178 70+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 69+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60+ , srcInfoPoints = []+ }+ "Identity")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62+ , srcInfoPoints = []+ }+ "$")))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 64+ , SrcSpan "tests/examples/DerivingVia.hs" 178 65 178 66+ , SrcSpan "tests/examples/DerivingVia.hs" 178 68 178 69+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68+ , srcInfoPoints = []+ }+ "a")+ ])))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 14 179 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11+ , srcInfoPoints = []+ }+ "P8"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 18+ , srcInfoPoints = []+ }+ "P8")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 20+ , SrcSpan "tests/examples/DerivingVia.hs" 179 31 179 32+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26+ , srcInfoPoints = []+ }+ "Either")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28+ , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28+ , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28+ , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29+ ]+ }))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 41 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 50 179 53+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 71+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 55+ , SrcSpan "tests/examples/DerivingVia.hs" 179 70 179 71+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 70+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56+ , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57+ , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56+ , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57+ , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57+ , srcInfoPoints = []+ }+ "$")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 70+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 60+ , SrcSpan "tests/examples/DerivingVia.hs" 179 69 179 70+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 69+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66+ , srcInfoPoints = []+ }+ "Either")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68+ , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68+ , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 179 67 179 68+ , SrcSpan+ "tests/examples/DerivingVia.hs" 179 68 179 69+ ]+ })))))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49+ , srcInfoPoints = []+ }+ "Functor")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 73+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 181 15 181 16 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14+ , srcInfoPoints = []+ }+ (DHInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14+ , srcInfoPoints = []+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10+ , srcInfoPoints = []+ }+ "f"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 11 181 12+ , srcInfoPoints = []+ }+ "$"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 20+ , srcInfoPoints = []+ }+ "APP")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 22+ , SrcSpan "tests/examples/DerivingVia.hs" 181 25 181 26+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 25+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 35 ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 36 181 43+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48+ , srcInfoPoints = []+ }+ "Show")))+ ]+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 73+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 57 ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 58 181 65+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73+ , srcInfoPoints = []+ }+ "Functor")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 1 191 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 190 29 190 30 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 28+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 26+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24+ , srcInfoPoints = []+ }+ "WrapApplicative"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26+ , srcInfoPoints = []+ }+ "f")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 49+ , srcInfoPoints = []+ }+ "WrappedApplicative")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 51+ , SrcSpan "tests/examples/DerivingVia.hs" 190 54 190 55+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 54+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 11+ , SrcSpan "tests/examples/DerivingVia.hs" 191 12 191 13+ , SrcSpan "tests/examples/DerivingVia.hs" 191 20 191 21+ , SrcSpan "tests/examples/DerivingVia.hs" 191 33 191 34+ ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20+ , srcInfoPoints = []+ }+ "Functor")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33+ , srcInfoPoints = []+ }+ "Applicative")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 193 1 201 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 9+ , SrcSpan "tests/examples/DerivingVia.hs" 193 62 193 67+ , SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 3+ , SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 3+ , SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 3+ , SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 3+ , SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 3+ , SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 3+ , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 61+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 11+ , SrcSpan "tests/examples/DerivingVia.hs" 193 24 193 25+ , SrcSpan "tests/examples/DerivingVia.hs" 193 31 193 32+ , SrcSpan "tests/examples/DerivingVia.hs" 193 33 193 35+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 61+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39+ , srcInfoPoints = []+ }+ "Num")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 41+ , SrcSpan "tests/examples/DerivingVia.hs" 193 60 193 61+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 60+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 4+ , SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5+ , SrcSpan "tests/examples/DerivingVia.hs" 194 5 194 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5+ , srcInfoPoints = []+ }+ "+"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23+ , srcInfoPoints = []+ }+ "liftA2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25+ , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26+ , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25+ , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26+ , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26+ , srcInfoPoints = []+ }+ "+")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 4+ , SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5+ , SrcSpan "tests/examples/DerivingVia.hs" 195 5 195 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5+ , srcInfoPoints = []+ }+ "*"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23+ , srcInfoPoints = []+ }+ "liftA2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25+ , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26+ , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25+ , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26+ , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26+ , srcInfoPoints = []+ }+ "*")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9+ , srcInfoPoints = []+ }+ "negate"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28+ , srcInfoPoints = []+ }+ "negate")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14+ , srcInfoPoints = []+ }+ "fromInteger"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 16 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21+ , srcInfoPoints = []+ }+ "pure")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35+ , srcInfoPoints = []+ }+ "fromInteger")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6+ , srcInfoPoints = []+ }+ "abs"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25+ , srcInfoPoints = []+ }+ "abs")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9+ , srcInfoPoints = []+ }+ "signum"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28+ , srcInfoPoints = []+ }+ "signum")))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 201 1 205 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 9+ , SrcSpan "tests/examples/DerivingVia.hs" 201 76 201 81+ , SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 3+ , SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 3+ , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 75+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 11+ , SrcSpan "tests/examples/DerivingVia.hs" 201 24 201 25+ , SrcSpan "tests/examples/DerivingVia.hs" 201 38 201 39+ , SrcSpan "tests/examples/DerivingVia.hs" 201 40 201 42+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36+ , srcInfoPoints = []+ }+ "Fractional")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 75+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53+ , srcInfoPoints = []+ }+ "Fractional")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 75+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 55+ , SrcSpan "tests/examples/DerivingVia.hs" 201 74 201 75+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 74+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 72+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8+ , srcInfoPoints = []+ }+ "recip"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 17 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28+ , srcInfoPoints = []+ }+ "recip")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15+ , srcInfoPoints = []+ }+ "fromRational"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 17 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22+ , srcInfoPoints = []+ }+ "pure")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37+ , srcInfoPoints = []+ }+ "fromRational")))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 205 1 221 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 9+ , SrcSpan "tests/examples/DerivingVia.hs" 205 72 205 77+ , SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 3+ , SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 3+ , SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 3+ , SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 3+ , SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 3+ , SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 3+ , SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 3+ , SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 3+ , SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 3+ , SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 3+ , SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 3+ , SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 3+ , SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 3+ , SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 3+ , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 71+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 11+ , SrcSpan "tests/examples/DerivingVia.hs" 205 24 205 25+ , SrcSpan "tests/examples/DerivingVia.hs" 205 36 205 37+ , SrcSpan "tests/examples/DerivingVia.hs" 205 38 205 40+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34+ , srcInfoPoints = []+ }+ "Floating")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 71+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49+ , srcInfoPoints = []+ }+ "Floating")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 71+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 51+ , SrcSpan "tests/examples/DerivingVia.hs" 205 70 205 71+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 70+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5+ , srcInfoPoints = []+ }+ "pi"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15+ , srcInfoPoints = []+ }+ "pure")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18+ , srcInfoPoints = []+ }+ "pi")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7+ , srcInfoPoints = []+ }+ "sqrt"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20+ , srcInfoPoints = []+ }+ "sqrt")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6+ , srcInfoPoints = []+ }+ "exp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19+ , srcInfoPoints = []+ }+ "exp")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6+ , srcInfoPoints = []+ }+ "log"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19+ , srcInfoPoints = []+ }+ "log")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6+ , srcInfoPoints = []+ }+ "sin"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19+ , srcInfoPoints = []+ }+ "sin")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6+ , srcInfoPoints = []+ }+ "cos"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19+ , srcInfoPoints = []+ }+ "cos")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7+ , srcInfoPoints = []+ }+ "asin"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20+ , srcInfoPoints = []+ }+ "asin")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7+ , srcInfoPoints = []+ }+ "atan"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20+ , srcInfoPoints = []+ }+ "atan")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7+ , srcInfoPoints = []+ }+ "acos"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20+ , srcInfoPoints = []+ }+ "acos")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7+ , srcInfoPoints = []+ }+ "sinh"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20+ , srcInfoPoints = []+ }+ "sinh")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7+ , srcInfoPoints = []+ }+ "cosh"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20+ , srcInfoPoints = []+ }+ "cosh")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8+ , srcInfoPoints = []+ }+ "asinh"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21+ , srcInfoPoints = []+ }+ "asinh")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8+ , srcInfoPoints = []+ }+ "atanh"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21+ , srcInfoPoints = []+ }+ "atanh")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8+ , srcInfoPoints = []+ }+ "acosh"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21+ , srcInfoPoints = []+ }+ "acosh")))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 221 1 224 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 9+ , SrcSpan "tests/examples/DerivingVia.hs" 221 74 221 79+ , SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 3+ , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 73+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 11+ , SrcSpan "tests/examples/DerivingVia.hs" 221 24 221 25+ , SrcSpan "tests/examples/DerivingVia.hs" 221 37 221 38+ , SrcSpan "tests/examples/DerivingVia.hs" 221 39 221 41+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35+ , srcInfoPoints = []+ }+ "Semigroup")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37+ , srcInfoPoints = []+ }+ "s")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 73+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51+ , srcInfoPoints = []+ }+ "Semigroup")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 73+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 53+ , SrcSpan "tests/examples/DerivingVia.hs" 221 72 221 73+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 72+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 70+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72+ , srcInfoPoints = []+ }+ "s"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 4+ , SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6+ , SrcSpan "tests/examples/DerivingVia.hs" 222 6 222 7+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6+ , srcInfoPoints = []+ }+ "<>"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16+ , srcInfoPoints = []+ }+ "liftA2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18+ , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20+ , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18+ , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20+ , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20+ , srcInfoPoints = []+ }+ "<>")))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 224 1 230 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 9+ , SrcSpan "tests/examples/DerivingVia.hs" 224 68 224 73+ , SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 3+ , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 67+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 11+ , SrcSpan "tests/examples/DerivingVia.hs" 224 24 224 25+ , SrcSpan "tests/examples/DerivingVia.hs" 224 34 224 35+ , SrcSpan "tests/examples/DerivingVia.hs" 224 36 224 38+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32+ , srcInfoPoints = []+ }+ "Monoid")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34+ , srcInfoPoints = []+ }+ "m")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 67+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45+ , srcInfoPoints = []+ }+ "Monoid")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 47+ , SrcSpan "tests/examples/DerivingVia.hs" 224 66 224 67+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 66+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 64+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66+ , srcInfoPoints = []+ }+ "m"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9+ , srcInfoPoints = []+ }+ "mempty"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16+ , srcInfoPoints = []+ }+ "pure")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23+ , srcInfoPoints = []+ }+ "mempty")))))+ Nothing)+ ])+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 230 1 231 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 6+ , SrcSpan "tests/examples/DerivingVia.hs" 230 17 230 22+ , SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 3+ , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14+ , srcInfoPoints = []+ }+ "Pointed"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16+ , srcInfoPoints = []+ }+ "p")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 10+ , srcInfoPoints = []+ }+ "pointed"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 231 16 231 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 22+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22+ , srcInfoPoints = []+ }+ "a")))))+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 1 234 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 233 23 233 24 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 22+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18+ , srcInfoPoints = []+ }+ "WrapMonad"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20+ , srcInfoPoints = []+ }+ "f")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 37+ , srcInfoPoints = []+ }+ "WrappedMonad")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 39+ , SrcSpan "tests/examples/DerivingVia.hs" 233 42 233 43+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 42+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 11+ , SrcSpan "tests/examples/DerivingVia.hs" 234 20 234 21+ , SrcSpan "tests/examples/DerivingVia.hs" 234 28 234 29+ , SrcSpan "tests/examples/DerivingVia.hs" 234 35 234 36+ ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 12 234 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28+ , srcInfoPoints = []+ }+ "Pointed")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35+ , srcInfoPoints = []+ }+ "Monad")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 236 1 239 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 9+ , SrcSpan "tests/examples/DerivingVia.hs" 236 56 236 61+ , SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 3+ , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 55+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 11+ , SrcSpan "tests/examples/DerivingVia.hs" 236 18 236 19+ , SrcSpan "tests/examples/DerivingVia.hs" 236 29 236 30+ , SrcSpan "tests/examples/DerivingVia.hs" 236 31 236 33+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18+ , srcInfoPoints = []+ }+ "m")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27+ , srcInfoPoints = []+ }+ "Pointed")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29+ , srcInfoPoints = []+ }+ "m")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 55+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41+ , srcInfoPoints = []+ }+ "Functor")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 43+ , SrcSpan "tests/examples/DerivingVia.hs" 236 54 236 55+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 54+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52+ , srcInfoPoints = []+ }+ "WrapMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54+ , srcInfoPoints = []+ }+ "m"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7+ , srcInfoPoints = []+ }+ "fmap"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15+ , srcInfoPoints = []+ }+ "liftM"))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 239 1 244 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 9+ , SrcSpan "tests/examples/DerivingVia.hs" 239 60 239 65+ , SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 3+ , SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 3+ , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 59+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 11+ , SrcSpan "tests/examples/DerivingVia.hs" 239 18 239 19+ , SrcSpan "tests/examples/DerivingVia.hs" 239 29 239 30+ , SrcSpan "tests/examples/DerivingVia.hs" 239 31 239 33+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16+ , srcInfoPoints = []+ }+ "Monad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18+ , srcInfoPoints = []+ }+ "m")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27+ , srcInfoPoints = []+ }+ "Pointed")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29+ , srcInfoPoints = []+ }+ "m")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 59+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 47+ , SrcSpan "tests/examples/DerivingVia.hs" 239 58 239 59+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56+ , srcInfoPoints = []+ }+ "WrapMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58+ , srcInfoPoints = []+ }+ "m"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7+ , srcInfoPoints = []+ }+ "pure"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18+ , srcInfoPoints = []+ }+ "pointed"))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 4+ , SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7+ , SrcSpan "tests/examples/DerivingVia.hs" 241 7 241 8+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7+ , srcInfoPoints = []+ }+ "<*>"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13+ , srcInfoPoints = []+ }+ "ap"))))+ Nothing)+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 1 247 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 244 15 244 16 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 14+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12+ , srcInfoPoints = []+ }+ "Sorted"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 23+ , srcInfoPoints = []+ }+ "Sorted")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 11+ , SrcSpan "tests/examples/DerivingVia.hs" 245 12 245 13+ , SrcSpan "tests/examples/DerivingVia.hs" 245 20 245 21+ , SrcSpan "tests/examples/DerivingVia.hs" 245 33 245 34+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 246 5 246 8+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 10+ , SrcSpan "tests/examples/DerivingVia.hs" 246 26 246 27+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19+ , srcInfoPoints = []+ }+ "WrapMonad")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26+ , srcInfoPoints = []+ }+ "Sorted")))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20+ , srcInfoPoints = []+ }+ "Functor")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33+ , srcInfoPoints = []+ }+ "Applicative")))+ ]+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 11+ , SrcSpan "tests/examples/DerivingVia.hs" 247 12 247 13+ , SrcSpan "tests/examples/DerivingVia.hs" 247 16 247 17+ , SrcSpan "tests/examples/DerivingVia.hs" 247 28 247 29+ , SrcSpan "tests/examples/DerivingVia.hs" 247 38 247 39+ , SrcSpan "tests/examples/DerivingVia.hs" 247 49 247 50+ , SrcSpan "tests/examples/DerivingVia.hs" 247 57 247 58+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 248 5 248 8+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 10+ , SrcSpan "tests/examples/DerivingVia.hs" 248 34 248 35+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 34+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32+ , srcInfoPoints = []+ }+ "Sorted"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34+ , srcInfoPoints = []+ }+ "a"))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16+ , srcInfoPoints = []+ }+ "Num")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28+ , srcInfoPoints = []+ }+ "Fractional")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38+ , srcInfoPoints = []+ }+ "Floating")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49+ , srcInfoPoints = []+ }+ "Semigroup")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57+ , srcInfoPoints = []+ }+ "Monoid")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 251 1 258 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 9+ , SrcSpan "tests/examples/DerivingVia.hs" 251 23 251 28+ , SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 3+ , SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 3+ , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15+ , srcInfoPoints = []+ }+ "Monad")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22+ , srcInfoPoints = []+ }+ "Sorted")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 4+ , SrcSpan "tests/examples/DerivingVia.hs" 252 4 252 7+ , SrcSpan "tests/examples/DerivingVia.hs" 252 7 252 8+ ]+ }+ ">>="+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 252 21 252 23 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18+ , srcInfoPoints = []+ }+ "Sorted")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 252 40 252 42 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 25+ , SrcSpan "tests/examples/DerivingVia.hs" 252 38 252 39+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 252 27 252 29 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 252 30 252 36+ , srcInfoPoints = []+ }+ "Sorted")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38+ , srcInfoPoints = []+ }+ "b")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 51+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49+ , srcInfoPoints = []+ }+ "Sorted")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51+ , srcInfoPoints = []+ }+ "b"))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9+ , srcInfoPoints = []+ }+ "Sorted"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13+ , srcInfoPoints = []+ }+ "b")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15+ , srcInfoPoints = []+ }+ "c")+ ])+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 16 253 19+ , srcInfoPoints = []+ }+ ">>=")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 23 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 39+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 36+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 33+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 253 24 253 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 253 24 253 30+ , srcInfoPoints = []+ }+ "Sorted")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 31 253 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 253 31 253 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 253 31 253 33+ , srcInfoPoints = []+ }+ "a'"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 253 34 253 36+ , srcInfoPoints = []+ }+ "b'"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39+ , srcInfoPoints = []+ }+ "c'")))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 5 256 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 5+ , SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 5+ , SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 5+ , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 26+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 254 5 254 11+ , srcInfoPoints = []+ }+ "Sorted"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 12 254 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 254 12 254 14+ , srcInfoPoints = []+ }+ "a'")+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 15 254 16+ , srcInfoPoints = []+ }+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 18 254 19+ , srcInfoPoints = []+ }+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 22 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 254 23 254 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 254 23 254 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 254 23 254 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 254+ 23+ 254+ 24+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 254 25 254 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 254 25 254 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 254+ 25+ 254+ 26+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 26+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 255 5 255 11+ , srcInfoPoints = []+ }+ "Sorted"))+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 12 255 13+ , srcInfoPoints = []+ }+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 15 255 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 255 15 255 17+ , srcInfoPoints = []+ }+ "b'")+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 18 255 19+ , srcInfoPoints = []+ }+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 22 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 255 23 255 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 255 23 255 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 255 23 255 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 255+ 23+ 255+ 24+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 255 25 255 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 255 25 255 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 255+ 25+ 255+ 26+ , srcInfoPoints = []+ }+ "b")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 26+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 256 5 256 11+ , srcInfoPoints = []+ }+ "Sorted"))+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 12 256 13+ , srcInfoPoints = []+ }+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 15 256 16+ , srcInfoPoints = []+ }+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 18 256 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 256 18 256 20+ , srcInfoPoints = []+ }+ "c'")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 22 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 256 23 256 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 256 23 256 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 256 23 256 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 256+ 23+ 256+ 24+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 256 25 256 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 256 25 256 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 256+ 25+ 256+ 26+ , srcInfoPoints = []+ }+ "c")))))+ Nothing+ ]))+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 258 1 265 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 9+ , SrcSpan "tests/examples/DerivingVia.hs" 258 25 258 30+ , SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 3+ , SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 3+ , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17+ , srcInfoPoints = []+ }+ "Pointed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24+ , srcInfoPoints = []+ }+ "Sorted")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 10+ , srcInfoPoints = []+ }+ "pointed"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 259 16 259 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25+ , srcInfoPoints = []+ }+ "Sorted")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27+ , srcInfoPoints = []+ }+ "a")))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 10+ , srcInfoPoints = []+ }+ "pointed")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12+ , srcInfoPoints = []+ }+ "a")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 14 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 23+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 260 15 260 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 260 15 260 21+ , srcInfoPoints = []+ }+ "Sorted")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 22 260 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 260 22 260 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 260 22 260 23+ , srcInfoPoints = []+ }+ "a"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 260 24 260 25+ , srcInfoPoints = []+ }+ "a"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ ])+ ])+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 265 1 266 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 6+ , SrcSpan "tests/examples/DerivingVia.hs" 265 16 265 21+ , SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 3+ , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 15+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13+ , srcInfoPoints = []+ }+ "IsZero"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 9+ , srcInfoPoints = []+ }+ "isZero"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 266 15 266 17 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22+ , srcInfoPoints = []+ }+ "Bool")))))+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 268 25 268 26 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21+ , srcInfoPoints = []+ }+ "WrappedNumEq"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 39+ , srcInfoPoints = []+ }+ "WrappedNumEq")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 269 25 269 26 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20+ , srcInfoPoints = []+ }+ "WrappedShow"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 38+ , srcInfoPoints = []+ }+ "WrappedShow")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 270 25 270 26 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22+ , srcInfoPoints = []+ }+ "WrappedNumEq2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 40+ , srcInfoPoints = []+ }+ "WrappedNumEq2")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 272 1 276 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 9+ , SrcSpan "tests/examples/DerivingVia.hs" 272 51 272 56+ , SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 3+ , SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 3+ , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 50+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 11+ , SrcSpan "tests/examples/DerivingVia.hs" 272 16 272 17+ , SrcSpan "tests/examples/DerivingVia.hs" 272 22 272 23+ , SrcSpan "tests/examples/DerivingVia.hs" 272 24 272 26+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 50+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33+ , srcInfoPoints = []+ }+ "IsZero")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 35+ , SrcSpan "tests/examples/DerivingVia.hs" 272 49 272 50+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 49+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47+ , srcInfoPoints = []+ }+ "WrappedNumEq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 9+ , srcInfoPoints = []+ }+ "isZero"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 273 28 273 30 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25+ , srcInfoPoints = []+ }+ "WrappedNumEq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35+ , srcInfoPoints = []+ }+ "Bool")))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 9+ , srcInfoPoints = []+ }+ "isZero")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 11+ , SrcSpan "tests/examples/DerivingVia.hs" 274 25 274 26+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23+ , srcInfoPoints = []+ }+ "WrappedNumEq"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 28 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 35+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30+ , srcInfoPoints = []+ }+ 0+ "0"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 276 1 280 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 9+ , SrcSpan "tests/examples/DerivingVia.hs" 276 43 276 48+ , SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 3+ , SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 3+ , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 42+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 42+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26+ , srcInfoPoints = []+ }+ "IsZero")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 28+ , SrcSpan "tests/examples/DerivingVia.hs" 276 41 276 42+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39+ , srcInfoPoints = []+ }+ "WrappedShow")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 9+ , srcInfoPoints = []+ }+ "isZero"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 277 27 277 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24+ , srcInfoPoints = []+ }+ "WrappedShow")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34+ , srcInfoPoints = []+ }+ "Bool")))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 9+ , srcInfoPoints = []+ }+ "isZero")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 11+ , SrcSpan "tests/examples/DerivingVia.hs" 278 24 278 25+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22+ , srcInfoPoints = []+ }+ "WrappedShow"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 27 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 41+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31+ , srcInfoPoints = []+ }+ "0"+ "0"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34+ , srcInfoPoints = []+ }+ "==")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 278 35 278 39+ , srcInfoPoints = []+ }+ "show")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 278 40 278 41+ , srcInfoPoints = []+ }+ "a"))))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 280 1 284 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 9+ , SrcSpan "tests/examples/DerivingVia.hs" 280 52 280 57+ , SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 3+ , SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 3+ , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 51+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 11+ , SrcSpan "tests/examples/DerivingVia.hs" 280 16 280 17+ , SrcSpan "tests/examples/DerivingVia.hs" 280 22 280 23+ , SrcSpan "tests/examples/DerivingVia.hs" 280 24 280 26+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 51+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33+ , srcInfoPoints = []+ }+ "IsZero")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 35+ , SrcSpan "tests/examples/DerivingVia.hs" 280 50 280 51+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 50+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48+ , srcInfoPoints = []+ }+ "WrappedNumEq2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 9+ , srcInfoPoints = []+ }+ "isZero"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 281 29 281 31 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26+ , srcInfoPoints = []+ }+ "WrappedNumEq2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36+ , srcInfoPoints = []+ }+ "Bool")))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 9+ , srcInfoPoints = []+ }+ "isZero")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 11+ , SrcSpan "tests/examples/DerivingVia.hs" 282 26 282 27+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24+ , srcInfoPoints = []+ }+ "WrappedNumEq2"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 29 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 40+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 282 30 282 31+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 282 32 282 33+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 282 34 282 35+ , srcInfoPoints = []+ }+ "a"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 1 286 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 284 13 284 14 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 8+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12+ , srcInfoPoints = []+ }+ "INT"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 18+ , srcInfoPoints = []+ }+ "INT")+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22+ , srcInfoPoints = []+ }+ "Int"))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 11 ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 285 12 285 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24+ , srcInfoPoints = []+ }+ "Show")))+ ]+ , Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 11 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 19 286 22+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 24+ , SrcSpan "tests/examples/DerivingVia.hs" 286 40 286 41+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 40+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36+ , srcInfoPoints = []+ }+ "WrappedNumEq")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40+ , srcInfoPoints = []+ }+ "Int")))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18+ , srcInfoPoints = []+ }+ "IsZero")))+ ]+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 288 14 288 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 8+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13+ , srcInfoPoints = []+ }+ "VOID"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 20+ , srcInfoPoints = []+ }+ "VOID")+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25+ , srcInfoPoints = []+ }+ "Void"))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 34 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 42 288 45+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 47+ , SrcSpan "tests/examples/DerivingVia.hs" 288 63 288 64+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 63+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58+ , srcInfoPoints = []+ }+ "WrappedShow")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63+ , srcInfoPoints = []+ }+ "Void")))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41+ , srcInfoPoints = []+ }+ "IsZero")))+ ]+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 1 301 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 6+ , SrcSpan "tests/examples/DerivingVia.hs" 293 38 293 43+ , SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 3+ , SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 3+ , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 0+ ]+ }+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16+ , srcInfoPoints = []+ }+ "Bifunctor")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18+ , srcInfoPoints = []+ }+ "p"))))))+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 37+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35+ , srcInfoPoints = []+ }+ "Biapplicative"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37+ , srcInfoPoints = []+ }+ "p")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 9+ , srcInfoPoints = []+ }+ "bipure"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 294 15 294 17 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 294 20 294 22 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19+ , srcInfoPoints = []+ }+ "b"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 26+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28+ , srcInfoPoints = []+ }+ "b"))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 11+ , srcInfoPoints = []+ }+ "biliftA2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 8 301 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 298 5 298 7 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 9+ , SrcSpan "tests/examples/DerivingVia.hs" 297 22 297 23+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 297 12 297 14 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 297 18 297 20 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16+ , srcInfoPoints = []+ }+ "b"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22+ , srcInfoPoints = []+ }+ "c")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 8 301 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 299 5 299 7 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 9+ , SrcSpan "tests/examples/DerivingVia.hs" 298 23 298 24+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 298 12 298 14 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11+ , srcInfoPoints = []+ }+ "a'"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 298 18 298 20 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17+ , srcInfoPoints = []+ }+ "b'"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23+ , srcInfoPoints = []+ }+ "c'")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 8 301 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 300 5 300 7 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 14+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 11+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14+ , srcInfoPoints = []+ }+ "a'")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 300 8 301 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 301 5 301 7 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 14+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 11+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 300 8 300 9+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 300 10 300 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 300 10 300 11+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14+ , srcInfoPoints = []+ }+ "b'")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 14+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 11+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 301 8 301 9+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 301 10 301 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 301 10 301 11+ , srcInfoPoints = []+ }+ "c")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14+ , srcInfoPoints = []+ }+ "c'"))))))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 303 1 309 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 9+ , SrcSpan "tests/examples/DerivingVia.hs" 303 28 303 33+ , SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 3+ , SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 3+ , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23+ , srcInfoPoints = []+ }+ "Biapplicative")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25+ , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26+ , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25+ , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26+ , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25+ , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26+ , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27+ ]+ }+ Boxed+ 2)))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9+ , srcInfoPoints = []+ }+ "bipure"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 11 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13+ , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14+ , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13+ , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14+ , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13+ , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14+ , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15+ ]+ }+ Boxed+ 2))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 11+ , srcInfoPoints = []+ }+ "biliftA2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13+ , srcInfoPoints = []+ }+ "f")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16+ , srcInfoPoints = []+ }+ "f'")+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 18+ , SrcSpan "tests/examples/DerivingVia.hs" 306 19 306 20+ , SrcSpan "tests/examples/DerivingVia.hs" 306 23 306 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23+ , srcInfoPoints = []+ }+ "a'")+ ]+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 26+ , SrcSpan "tests/examples/DerivingVia.hs" 306 27 306 28+ , SrcSpan "tests/examples/DerivingVia.hs" 306 31 306 32+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27+ , srcInfoPoints = []+ }+ "b")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31+ , srcInfoPoints = []+ }+ "b'")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 306 33 307 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 306 33 306 34 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 6+ , SrcSpan "tests/examples/DerivingVia.hs" 307 11 307 12+ , SrcSpan "tests/examples/DerivingVia.hs" 307 21 307 22+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 11+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 9+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 6 307 7+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 8 307 9+ , srcInfoPoints = []+ }+ "a"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 10 307 11+ , srcInfoPoints = []+ }+ "b")))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 21+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 13 307 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 13 307 15+ , srcInfoPoints = []+ }+ "f'")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 16 307 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 16 307 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 16 307 18+ , srcInfoPoints = []+ }+ "a'"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 307 19 307 21+ , srcInfoPoints = []+ }+ "b'")))+ ]))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 1 310 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 309 25 309 26 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 24+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 22+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18+ , srcInfoPoints = []+ }+ "WrapBiapp"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20+ , srcInfoPoints = []+ }+ "p")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 35+ , srcInfoPoints = []+ }+ "WrapBiap")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 37+ , SrcSpan "tests/examples/DerivingVia.hs" 309 42 309 43+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 42+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 40+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42+ , srcInfoPoints = []+ }+ "b")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 11+ , SrcSpan "tests/examples/DerivingVia.hs" 310 20 310 21+ , SrcSpan "tests/examples/DerivingVia.hs" 310 30 310 31+ , SrcSpan "tests/examples/DerivingVia.hs" 310 45 310 46+ , SrcSpan "tests/examples/DerivingVia.hs" 310 49 310 50+ ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 12 310 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30+ , srcInfoPoints = []+ }+ "Bifunctor")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45+ , srcInfoPoints = []+ }+ "Biapplicative")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49+ , srcInfoPoints = []+ }+ "Eq")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 312 1 321 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 9+ , SrcSpan "tests/examples/DerivingVia.hs" 312 67 312 72+ , SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 3+ , SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 3+ , SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 3+ , SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 3+ , SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 3+ , SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 3+ , SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 3+ , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 66+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 11+ , SrcSpan "tests/examples/DerivingVia.hs" 312 26 312 27+ , SrcSpan "tests/examples/DerivingVia.hs" 312 33 312 34+ , SrcSpan "tests/examples/DerivingVia.hs" 312 40 312 41+ , SrcSpan "tests/examples/DerivingVia.hs" 312 42 312 44+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24+ , srcInfoPoints = []+ }+ "Biapplicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26+ , srcInfoPoints = []+ }+ "p")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40+ , srcInfoPoints = []+ }+ "b")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 66+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48+ , srcInfoPoints = []+ }+ "Num")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 66+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 50+ , SrcSpan "tests/examples/DerivingVia.hs" 312 65 312 66+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 65+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 63+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59+ , srcInfoPoints = []+ }+ "WrapBiapp")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61+ , srcInfoPoints = []+ }+ "p")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65+ , srcInfoPoints = []+ }+ "b"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 4+ , SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5+ , SrcSpan "tests/examples/DerivingVia.hs" 313 5 313 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5+ , srcInfoPoints = []+ }+ "+"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17+ , srcInfoPoints = []+ }+ "biliftA2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19+ , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20+ , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19+ , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20+ , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20+ , srcInfoPoints = []+ }+ "+"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23+ , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24+ , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23+ , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24+ , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24+ , srcInfoPoints = []+ }+ "+")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 4+ , SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5+ , SrcSpan "tests/examples/DerivingVia.hs" 314 5 314 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5+ , srcInfoPoints = []+ }+ "-"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17+ , srcInfoPoints = []+ }+ "biliftA2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19+ , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20+ , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19+ , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20+ , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20+ , srcInfoPoints = []+ }+ "*"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23+ , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24+ , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23+ , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24+ , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24+ , srcInfoPoints = []+ }+ "*")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 4+ , SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5+ , SrcSpan "tests/examples/DerivingVia.hs" 315 5 315 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5+ , srcInfoPoints = []+ }+ "*"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17+ , srcInfoPoints = []+ }+ "biliftA2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19+ , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20+ , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19+ , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20+ , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20+ , srcInfoPoints = []+ }+ "*"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23+ , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24+ , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23+ , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24+ , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24+ , srcInfoPoints = []+ }+ "*")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9+ , srcInfoPoints = []+ }+ "negate"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 31+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17+ , srcInfoPoints = []+ }+ "bimap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24+ , srcInfoPoints = []+ }+ "negate"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31+ , srcInfoPoints = []+ }+ "negate")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6+ , srcInfoPoints = []+ }+ "abs"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 22+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14+ , srcInfoPoints = []+ }+ "bimap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18+ , srcInfoPoints = []+ }+ "abs"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22+ , srcInfoPoints = []+ }+ "abs")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9+ , srcInfoPoints = []+ }+ "signum"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 31+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17+ , srcInfoPoints = []+ }+ "bimap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24+ , srcInfoPoints = []+ }+ "signum"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31+ , srcInfoPoints = []+ }+ "signum")))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 14+ , srcInfoPoints = []+ }+ "fromInteger")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16+ , srcInfoPoints = []+ }+ "n")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 18 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 55+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 319 19 319 30+ , srcInfoPoints = []+ }+ "fromInteger")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 319 31 319 32+ , srcInfoPoints = []+ }+ "n"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34+ , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40+ , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34+ , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40+ , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40+ , srcInfoPoints = []+ }+ "bipure")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 319 42 319 53+ , srcInfoPoints = []+ }+ "fromInteger")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 319 54 319 55+ , srcInfoPoints = []+ }+ "n"))))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 1 322 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 321 14 321 15 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 8+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13+ , srcInfoPoints = []+ }+ "INT2"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 20+ , srcInfoPoints = []+ }+ "INT2")+ [ TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 22+ , SrcSpan "tests/examples/DerivingVia.hs" 321 25 321 26+ , SrcSpan "tests/examples/DerivingVia.hs" 321 30 321 31+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30+ , srcInfoPoints = []+ }+ "Int"))+ ]+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 11 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 19 322 22+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 24+ , SrcSpan "tests/examples/DerivingVia.hs" 322 61 322 62+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37+ , srcInfoPoints = []+ }+ "WrappedNumEq2")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 39+ , SrcSpan "tests/examples/DerivingVia.hs" 322 60 322 61+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 60+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 56+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 52+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 322 39 322 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 322 39 322 48+ , srcInfoPoints = []+ }+ "WrapBiapp")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 49 322 52+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 322 49 322 50+ , SrcSpan+ "tests/examples/DerivingVia.hs" 322 50 322 51+ , SrcSpan+ "tests/examples/DerivingVia.hs" 322 51 322 52+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 322 49 322 52+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 322 49 322 50+ , SrcSpan+ "tests/examples/DerivingVia.hs" 322 50 322 51+ , SrcSpan+ "tests/examples/DerivingVia.hs" 322 51 322 52+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 322 49 322 52+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs"+ 322+ 49+ 322+ 50+ , SrcSpan+ "tests/examples/DerivingVia.hs"+ 322+ 50+ 322+ 51+ , SrcSpan+ "tests/examples/DerivingVia.hs"+ 322+ 51+ 322+ 52+ ]+ }+ Boxed+ 2))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 322 53 322 56+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60+ , srcInfoPoints = []+ }+ "Int")))))))))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18+ , srcInfoPoints = []+ }+ "IsZero")))+ ]+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 1 328 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 6+ , SrcSpan "tests/examples/DerivingVia.hs" 327 32 327 37+ , SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 3+ , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 0+ ]+ }+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13+ , srcInfoPoints = []+ }+ "Monoid")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15+ , srcInfoPoints = []+ }+ "a"))))))+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 31+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29+ , srcInfoPoints = []+ }+ "MonoidNull"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 7+ , srcInfoPoints = []+ }+ "null"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 328 13 328 15 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20+ , srcInfoPoints = []+ }+ "Bool")))))+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 330 22 330 23 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 21+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19+ , srcInfoPoints = []+ }+ "WrpMonNull"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 27+ , srcInfoPoints = []+ }+ "WRM")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 38+ , SrcSpan "tests/examples/DerivingVia.hs" 330 39 330 40+ , SrcSpan "tests/examples/DerivingVia.hs" 330 42 330 43+ , SrcSpan "tests/examples/DerivingVia.hs" 330 53 330 54+ , SrcSpan "tests/examples/DerivingVia.hs" 330 61 330 62+ ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42+ , srcInfoPoints = []+ }+ "Eq")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53+ , srcInfoPoints = []+ }+ "Semigroup")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61+ , srcInfoPoints = []+ }+ "Monoid")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 332 1 336 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 9+ , SrcSpan "tests/examples/DerivingVia.hs" 332 56 332 61+ , SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 3+ , SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 3+ , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 55+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 11+ , SrcSpan "tests/examples/DerivingVia.hs" 332 15 332 16+ , SrcSpan "tests/examples/DerivingVia.hs" 332 25 332 26+ , SrcSpan "tests/examples/DerivingVia.hs" 332 27 332 29+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23+ , srcInfoPoints = []+ }+ "Monoid")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 55+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40+ , srcInfoPoints = []+ }+ "MonoidNull")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 42+ , SrcSpan "tests/examples/DerivingVia.hs" 332 54 332 55+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 54+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52+ , srcInfoPoints = []+ }+ "WrpMonNull")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 7+ , srcInfoPoints = []+ }+ "null"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 333 24 333 26 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21+ , srcInfoPoints = []+ }+ "WrpMonNull")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31+ , srcInfoPoints = []+ }+ "Bool")))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7+ , srcInfoPoints = []+ }+ "null"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 9 ]+ }+ (RightSection+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 11+ , SrcSpan "tests/examples/DerivingVia.hs" 334 20 334 21+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20+ , srcInfoPoints = []+ }+ "mempty")))))+ Nothing)+ ])+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 9+ , SrcSpan "tests/examples/DerivingVia.hs" 336 31 336 39+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 10 336 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 15+ , SrcSpan "tests/examples/DerivingVia.hs" 336 29 336 30+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25+ , srcInfoPoints = []+ }+ "WrpMonNull")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29+ , srcInfoPoints = []+ }+ "Any")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50+ , srcInfoPoints = []+ }+ "MonoidNull")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54+ , srcInfoPoints = []+ }+ "Any")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 9+ , SrcSpan "tests/examples/DerivingVia.hs" 337 31 337 39+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 10 337 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15+ , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15+ , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15+ , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16+ ]+ })))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50+ , srcInfoPoints = []+ }+ "MonoidNull")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52+ , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52+ , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52+ , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53+ ]+ })))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 9+ , SrcSpan "tests/examples/DerivingVia.hs" 338 31 338 39+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 10 338 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22+ , srcInfoPoints = []+ }+ "Ordering")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50+ , srcInfoPoints = []+ }+ "MonoidNull")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59+ , srcInfoPoints = []+ }+ "Ordering")))))+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 345 1 348 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 6+ , SrcSpan "tests/examples/DerivingVia.hs" 345 17 345 22+ , SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 3+ , SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 3+ , SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 3+ , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14+ , srcInfoPoints = []+ }+ "Lattice"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 6+ , srcInfoPoints = []+ }+ "sup"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 346 14 346 16 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 346 19 346 21 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23+ , srcInfoPoints = []+ }+ "a")))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 4+ , SrcSpan "tests/examples/DerivingVia.hs" 347 4 347 7+ , SrcSpan "tests/examples/DerivingVia.hs" 347 7 347 8+ ]+ }+ ".>="+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 347 14 347 16 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 347 19 347 21 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26+ , srcInfoPoints = []+ }+ "Bool"))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 4+ , SrcSpan "tests/examples/DerivingVia.hs" 348 4 348 6+ , SrcSpan "tests/examples/DerivingVia.hs" 348 6 348 7+ ]+ }+ ".>"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 348 14 348 16 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 348 19 348 21 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26+ , srcInfoPoints = []+ }+ "Bool"))))))+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 1 351 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 350 19 350 20 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16+ , srcInfoPoints = []+ }+ "WrapOrd"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 31+ , srcInfoPoints = []+ }+ "WrappedOrd")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 11+ , SrcSpan "tests/examples/DerivingVia.hs" 351 20 351 21+ , SrcSpan "tests/examples/DerivingVia.hs" 351 23 351 24+ , SrcSpan "tests/examples/DerivingVia.hs" 351 28 351 29+ ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 12 351 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23+ , srcInfoPoints = []+ }+ "Eq")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28+ , srcInfoPoints = []+ }+ "Ord")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 353 1 358 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 9+ , SrcSpan "tests/examples/DerivingVia.hs" 353 39 353 44+ , SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 3+ , SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 3+ , SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 3+ , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 38+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13+ , srcInfoPoints = []+ }+ "Ord")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 38+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 28+ , SrcSpan "tests/examples/DerivingVia.hs" 353 37 353 38+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35+ , srcInfoPoints = []+ }+ "WrapOrd")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6+ , srcInfoPoints = []+ }+ "sup"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14+ , srcInfoPoints = []+ }+ "max"))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 4+ , SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7+ , SrcSpan "tests/examples/DerivingVia.hs" 355 7 355 8+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7+ , srcInfoPoints = []+ }+ ".>="))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12+ , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14+ , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12+ , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14+ , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14+ , srcInfoPoints = []+ }+ ">="))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 4+ , SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6+ , SrcSpan "tests/examples/DerivingVia.hs" 356 6 356 7+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6+ , srcInfoPoints = []+ }+ ".>"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12+ , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13+ , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12+ , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13+ , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13+ , srcInfoPoints = []+ }+ ">"))))+ Nothing)+ ])+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 9+ , SrcSpan "tests/examples/DerivingVia.hs" 358 21 358 29+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 10 358 13+ , srcInfoPoints = []+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 15+ , SrcSpan "tests/examples/DerivingVia.hs" 358 16 358 17+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 59+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33+ , srcInfoPoints = []+ }+ "Ord")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 59+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 57+ , SrcSpan "tests/examples/DerivingVia.hs" 358 58 358 59+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58+ , srcInfoPoints = []+ }+ "a")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 9+ , SrcSpan "tests/examples/DerivingVia.hs" 359 21 359 29+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 10 359 13+ , srcInfoPoints = []+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 15+ , SrcSpan "tests/examples/DerivingVia.hs" 359 16 359 17+ , SrcSpan "tests/examples/DerivingVia.hs" 359 19 359 20+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19+ , srcInfoPoints = []+ }+ "b")+ ])))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 62+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 31+ , SrcSpan "tests/examples/DerivingVia.hs" 359 36 359 37+ , SrcSpan "tests/examples/DerivingVia.hs" 359 43 359 44+ , SrcSpan "tests/examples/DerivingVia.hs" 359 45 359 47+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34+ , srcInfoPoints = []+ }+ "Ord")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41+ , srcInfoPoints = []+ }+ "Ord")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43+ , srcInfoPoints = []+ }+ "b")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 62+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 57+ , SrcSpan "tests/examples/DerivingVia.hs" 359 58 359 59+ , SrcSpan "tests/examples/DerivingVia.hs" 359 61 359 62+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61+ , srcInfoPoints = []+ }+ "b")+ ])))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 9+ , SrcSpan "tests/examples/DerivingVia.hs" 361 19 361 27+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 10 361 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18+ , srcInfoPoints = []+ }+ "Bool")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40+ , srcInfoPoints = []+ }+ "Bool")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 9+ , SrcSpan "tests/examples/DerivingVia.hs" 363 19 363 27+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 10 363 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18+ , srcInfoPoints = []+ }+ "Char")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40+ , srcInfoPoints = []+ }+ "Char")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 9+ , SrcSpan "tests/examples/DerivingVia.hs" 365 18 365 26+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 10 365 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17+ , srcInfoPoints = []+ }+ "Int")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38+ , srcInfoPoints = []+ }+ "Int")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 9+ , SrcSpan "tests/examples/DerivingVia.hs" 367 22 367 30+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 10 367 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21+ , srcInfoPoints = []+ }+ "Integer")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46+ , srcInfoPoints = []+ }+ "Integer")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 9+ , SrcSpan "tests/examples/DerivingVia.hs" 369 20 369 28+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 10 369 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19+ , srcInfoPoints = []+ }+ "Float")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42+ , srcInfoPoints = []+ }+ "Float")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 9+ , SrcSpan "tests/examples/DerivingVia.hs" 371 21 371 29+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 10 371 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20+ , srcInfoPoints = []+ }+ "Double")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44+ , srcInfoPoints = []+ }+ "Double")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 9+ , SrcSpan "tests/examples/DerivingVia.hs" 373 23 373 31+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 10 373 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22+ , srcInfoPoints = []+ }+ "Rational")))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39+ , srcInfoPoints = []+ }+ "Lattice")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48+ , srcInfoPoints = []+ }+ "Rational")))))+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 1 386 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 6+ , SrcSpan "tests/examples/DerivingVia.hs" 380 31 380 36+ , SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 3+ , SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 3+ , SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 3+ , SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 3+ , SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 3+ , SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 3+ , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 0+ ]+ }+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14+ , srcInfoPoints = []+ }+ "Functor")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16+ , srcInfoPoints = []+ }+ "f"))))))+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 30+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28+ , srcInfoPoints = []+ }+ "Additive"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30+ , srcInfoPoints = []+ }+ "f")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 7+ , srcInfoPoints = []+ }+ "zero"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 23+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 381 11 381 14+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16+ , srcInfoPoints = []+ }+ "a"))))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 23+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23+ , srcInfoPoints = []+ }+ "a")))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 4+ , SrcSpan "tests/examples/DerivingVia.hs" 382 4 382 7+ , SrcSpan "tests/examples/DerivingVia.hs" 382 7 382 8+ ]+ }+ "^+^"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 38+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 382 12 382 15+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17+ , srcInfoPoints = []+ }+ "a"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 25 382 27 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 24+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 382 32 382 34 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 38+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38+ , srcInfoPoints = []+ }+ "a")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 4+ , SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7+ , SrcSpan "tests/examples/DerivingVia.hs" 383 7 383 8+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7+ , srcInfoPoints = []+ }+ "^+^"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17+ , srcInfoPoints = []+ }+ "liftU2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19+ , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20+ , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19+ , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20+ , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20+ , srcInfoPoints = []+ }+ "+")))))+ Nothing)+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 4+ , SrcSpan "tests/examples/DerivingVia.hs" 384 4 384 7+ , SrcSpan "tests/examples/DerivingVia.hs" 384 7 384 8+ ]+ }+ "^-^"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 38+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 384 12 384 15+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17+ , srcInfoPoints = []+ }+ "a"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 25 384 27 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 24+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 384 32 384 34 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 38+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38+ , srcInfoPoints = []+ }+ "a")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4+ , srcInfoPoints = []+ }+ "x"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 5 385 8+ , srcInfoPoints = []+ }+ "^-^")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 12 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18+ , srcInfoPoints = []+ }+ "^+^")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 385 19 385 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 385 19 385 23+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 24 385 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 385 24 385 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 385 24 385 30+ , srcInfoPoints = []+ }+ "negate"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 385 31 385 32+ , srcInfoPoints = []+ }+ "y"))))))+ Nothing+ ])+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 9+ , srcInfoPoints = []+ }+ "liftU2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 27 386 29 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 14+ , SrcSpan "tests/examples/DerivingVia.hs" 386 25 386 26+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 16 386 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 21 386 23 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25+ , srcInfoPoints = []+ }+ "a")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 34 386 36 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 33+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 386 41 386 43 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 40+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 47+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47+ , srcInfoPoints = []+ }+ "a")))))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 388 1 395 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 9+ , SrcSpan "tests/examples/DerivingVia.hs" 388 22 388 27+ , SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 3+ , SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 3+ , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18+ , srcInfoPoints = []+ }+ "Additive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20+ , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20+ , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21+ ]+ }+ (ListCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20+ , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21+ ]+ })))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7+ , srcInfoPoints = []+ }+ "zero"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 9 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 11+ , SrcSpan "tests/examples/DerivingVia.hs" 389 11 389 12+ ]+ }+ []))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 9+ , srcInfoPoints = []+ }+ "liftU2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 13 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16+ , srcInfoPoints = []+ }+ "go"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 5+ , SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 5+ , SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 5+ , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0+ ]+ }+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 7+ , srcInfoPoints = []+ }+ "go")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 391 8 391 14+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 391 8 391 9+ , SrcSpan+ "tests/examples/DerivingVia.hs" 391 13 391 14+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 9 391 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 9 391 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 9+ 391+ 10+ , srcInfoPoints = []+ }+ "x"))+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 10+ 391+ 11+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 10+ 391+ 11+ , srcInfoPoints = []+ }))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 11+ 391+ 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 11+ 391+ 13+ , srcInfoPoints = []+ }+ "xs")))+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 15 391 21+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 391 15 391 16+ , SrcSpan+ "tests/examples/DerivingVia.hs" 391 20 391 21+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 16 391 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 16+ 391+ 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 16+ 391+ 17+ , srcInfoPoints = []+ }+ "y"))+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 17+ 391+ 18+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 17+ 391+ 18+ , srcInfoPoints = []+ }))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 18+ 391+ 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 18+ 391+ 20+ , srcInfoPoints = []+ }+ "ys")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 391 22 391 40+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 391 22 391 23+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 24 391 40+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 24 391 29+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 24+ 391+ 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 24+ 391+ 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 24+ 391+ 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 24+ 391+ 25+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 26+ 391+ 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 26+ 391+ 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 26+ 391+ 27+ , srcInfoPoints = []+ }+ "x"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 28+ 391+ 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 28+ 391+ 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 28+ 391+ 29+ , srcInfoPoints = []+ }+ "y"))))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 30 391 31+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 30+ 391+ 31+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 30+ 391+ 31+ , srcInfoPoints = []+ })))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 391 32 391 40+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 32+ 391+ 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 32+ 391+ 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 32+ 391+ 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 32+ 391+ 34+ , srcInfoPoints = []+ }+ "go")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 35+ 391+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 35+ 391+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 35+ 391+ 37+ , srcInfoPoints = []+ }+ "xs"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 38+ 391+ 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 38+ 391+ 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 391+ 38+ 391+ 40+ , srcInfoPoints = []+ }+ "ys"))))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 7+ , srcInfoPoints = []+ }+ "go")+ [ PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 392 8 392 10+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 392 8 392 9+ , SrcSpan+ "tests/examples/DerivingVia.hs" 392 9 392 10+ ]+ }+ []+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 392 11 392 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 392 11 392 13+ , srcInfoPoints = []+ }+ "ys")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 392 14 392 18+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 392 14 392 15+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 392 16 392 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 392 16 392 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 392+ 16+ 392+ 18+ , srcInfoPoints = []+ }+ "ys"))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 7+ , srcInfoPoints = []+ }+ "go")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 393 8 393 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 393 8 393 10+ , srcInfoPoints = []+ }+ "xs")+ , PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 393 11 393 13+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 393 11 393 12+ , SrcSpan+ "tests/examples/DerivingVia.hs" 393 12 393 13+ ]+ }+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 393 14 393 18+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DerivingVia.hs" 393 14 393 15+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 393 16 393 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 393 16 393 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 393+ 16+ 393+ 18+ , srcInfoPoints = []+ }+ "xs"))))+ Nothing+ ]+ ]))+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 395 1 401 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 9+ , SrcSpan "tests/examples/DerivingVia.hs" 395 25 395 30+ , SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 3+ , SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 3+ , SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 3+ , SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 3+ , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18+ , srcInfoPoints = []+ }+ "Additive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24+ , srcInfoPoints = []+ }+ "Maybe")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7+ , srcInfoPoints = []+ }+ "zero"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 9 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17+ , srcInfoPoints = []+ }+ "Nothing"))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 9+ , srcInfoPoints = []+ }+ "liftU2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11+ , srcInfoPoints = []+ }+ "f")+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 13+ , SrcSpan "tests/examples/DerivingVia.hs" 397 19 397 20+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19+ , srcInfoPoints = []+ }+ "a")+ ])+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 22+ , SrcSpan "tests/examples/DerivingVia.hs" 397 28 397 29+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28+ , srcInfoPoints = []+ }+ "b")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 31 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 44+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36+ , srcInfoPoints = []+ }+ "Just")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 38+ , SrcSpan "tests/examples/DerivingVia.hs" 397 43 397 44+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 43+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 397 38 397 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 397 38 397 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 397+ 38+ 397+ 39+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 397 40 397 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 397 40 397 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 397+ 40+ 397+ 41+ , srcInfoPoints = []+ }+ "a"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 397 42 397 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 397 42 397 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 397 42 397 43+ , srcInfoPoints = []+ }+ "b")))))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 9+ , srcInfoPoints = []+ }+ "liftU2")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 10 398 11+ , srcInfoPoints = []+ }+ , PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19+ , srcInfoPoints = []+ }+ "Nothing"))+ []+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22+ , srcInfoPoints = []+ }+ "ys")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 24 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27+ , srcInfoPoints = []+ }+ "ys"))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 9+ , srcInfoPoints = []+ }+ "liftU2")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 10 399 11+ , srcInfoPoints = []+ }+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14+ , srcInfoPoints = []+ }+ "xs")+ , PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22+ , srcInfoPoints = []+ }+ "Nothing"))+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 24 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27+ , srcInfoPoints = []+ }+ "xs"))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 401 1 405 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 9+ , SrcSpan "tests/examples/DerivingVia.hs" 401 56 401 61+ , SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 3+ , SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 3+ , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 55+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23+ , srcInfoPoints = []+ }+ "f"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 55+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35+ , srcInfoPoints = []+ }+ "Additive")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 37+ , SrcSpan "tests/examples/DerivingVia.hs" 401 54 401 55+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 54+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54+ , srcInfoPoints = []+ }+ "f"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7+ , srcInfoPoints = []+ }+ "zero"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16+ , srcInfoPoints = []+ }+ "pure")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18+ , srcInfoPoints = []+ }+ 0+ "0"))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9+ , srcInfoPoints = []+ }+ "liftU2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 11 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18+ , srcInfoPoints = []+ }+ "liftA2"))))+ Nothing)+ ])+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 9+ , SrcSpan "tests/examples/DerivingVia.hs" 405 41 405 49+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 10 405 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 15+ , SrcSpan "tests/examples/DerivingVia.hs" 405 39 405 40+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 39+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 32+ , SrcSpan "tests/examples/DerivingVia.hs" 405 38 405 39+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33+ , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35+ , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33+ , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35+ , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33+ , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35+ , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36+ ]+ })))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38+ , srcInfoPoints = []+ }+ "a"))))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58+ , srcInfoPoints = []+ }+ "Additive")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 60+ , SrcSpan "tests/examples/DerivingVia.hs" 405 66 405 67+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 66+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61+ , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63+ , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61+ , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63+ , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61+ , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63+ , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64+ ]+ })))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66+ , srcInfoPoints = []+ }+ "a"))))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 66+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 9+ , SrcSpan "tests/examples/DerivingVia.hs" 406 41 406 49+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 10 406 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 15+ , SrcSpan "tests/examples/DerivingVia.hs" 406 38 406 39+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38+ , srcInfoPoints = []+ }+ "Complex")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58+ , srcInfoPoints = []+ }+ "Additive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66+ , srcInfoPoints = []+ }+ "Complex")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 9+ , SrcSpan "tests/examples/DerivingVia.hs" 407 41 407 49+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 10 407 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 15+ , SrcSpan "tests/examples/DerivingVia.hs" 407 39 407 40+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 39+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30+ , srcInfoPoints = []+ }+ "WrapApplicative")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39+ , srcInfoPoints = []+ }+ "Identity")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58+ , srcInfoPoints = []+ }+ "Additive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67+ , srcInfoPoints = []+ }+ "Identity")))))+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 409 1 413 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 9+ , SrcSpan "tests/examples/DerivingVia.hs" 409 27 409 32+ , SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 3+ , SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 3+ , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18+ , srcInfoPoints = []+ }+ "Additive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26+ , srcInfoPoints = []+ }+ "ZipList")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7+ , srcInfoPoints = []+ }+ "zero"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 20+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17+ , srcInfoPoints = []+ }+ "ZipList")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 19+ , SrcSpan "tests/examples/DerivingVia.hs" 410 19 410 20+ ]+ }+ [])))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 9+ , srcInfoPoints = []+ }+ "liftU2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11+ , srcInfoPoints = []+ }+ "f")+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 13+ , SrcSpan "tests/examples/DerivingVia.hs" 411 23 411 24+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20+ , srcInfoPoints = []+ }+ "ZipList"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23+ , srcInfoPoints = []+ }+ "xs")+ ])+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 26+ , SrcSpan "tests/examples/DerivingVia.hs" 411 36 411 37+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33+ , srcInfoPoints = []+ }+ "ZipList"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36+ , srcInfoPoints = []+ }+ "ys")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 39 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 64+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47+ , srcInfoPoints = []+ }+ "ZipList")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 49+ , SrcSpan "tests/examples/DerivingVia.hs" 411 63 411 64+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 63+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 60+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 411 49 411 57+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 411 49 411 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 411+ 49+ 411+ 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 411+ 49+ 411+ 55+ , srcInfoPoints = []+ }+ "liftU2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 411 56 411 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 411+ 56+ 411+ 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 411+ 56+ 411+ 57+ , srcInfoPoints = []+ }+ "f"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 411 58 411 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 411 58 411 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs"+ 411+ 58+ 411+ 60+ , srcInfoPoints = []+ }+ "xs"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 411 61 411 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 411 61 411 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 411 61 411 63+ , srcInfoPoints = []+ }+ "ys")))))))+ Nothing+ ])+ ])+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 1 419 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 6+ , SrcSpan "tests/examples/DerivingVia.hs" 413 37 413 42+ , SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 3+ , SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 3+ , SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 3+ , SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 3+ , SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 3+ , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 0+ ]+ }+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15+ , srcInfoPoints = []+ }+ "Additive")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 17+ , SrcSpan "tests/examples/DerivingVia.hs" 413 23 413 24+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21+ , srcInfoPoints = []+ }+ "Diff")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23+ , srcInfoPoints = []+ }+ "p"))))))))+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 36+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34+ , srcInfoPoints = []+ }+ "Affine"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36+ , srcInfoPoints = []+ }+ "p")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 14+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12+ , srcInfoPoints = []+ }+ "Diff"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14+ , srcInfoPoints = []+ }+ "p")))+ (Just+ (KindSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 17 ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 414 23 414 25 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22+ , srcInfoPoints = []+ }+ "Type")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30+ , srcInfoPoints = []+ }+ "Type"))))))+ Nothing+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 4+ , SrcSpan "tests/examples/DerivingVia.hs" 416 4 416 7+ , SrcSpan "tests/examples/DerivingVia.hs" 416 7 416 8+ ]+ }+ ".-."+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 43+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 416 12 416 15+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17+ , srcInfoPoints = []+ }+ "a"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 25 416 27 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 24+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 416 32 416 34 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 43+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 416 35 416 39+ , srcInfoPoints = []+ }+ "Diff")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41+ , srcInfoPoints = []+ }+ "p")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43+ , srcInfoPoints = []+ }+ "a")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 4+ , SrcSpan "tests/examples/DerivingVia.hs" 417 4 417 7+ , SrcSpan "tests/examples/DerivingVia.hs" 417 7 417 8+ ]+ }+ ".+^"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 43+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 417 12 417 15+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17+ , srcInfoPoints = []+ }+ "a"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 25 417 27 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 24+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 417 37 417 39 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 36+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 417 28 417 32+ , srcInfoPoints = []+ }+ "Diff")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34+ , srcInfoPoints = []+ }+ "p")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 43+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43+ , srcInfoPoints = []+ }+ "a")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 4+ , SrcSpan "tests/examples/DerivingVia.hs" 418 4 418 7+ , SrcSpan "tests/examples/DerivingVia.hs" 418 7 418 8+ ]+ }+ ".-^"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 43+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 418 12 418 15+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17+ , srcInfoPoints = []+ }+ "a"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 25 418 27 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 24+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 418 37 418 39 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 36+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 418 28 418 32+ , srcInfoPoints = []+ }+ "Diff")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34+ , srcInfoPoints = []+ }+ "p")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 43+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41+ , srcInfoPoints = []+ }+ "p"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43+ , srcInfoPoints = []+ }+ "a")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4+ , srcInfoPoints = []+ }+ "p"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 5 419 8+ , srcInfoPoints = []+ }+ ".-^")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10+ , srcInfoPoints = []+ }+ "v")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 12 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14+ , srcInfoPoints = []+ }+ "p")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18+ , srcInfoPoints = []+ }+ ".+^")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 419 19 419 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 419 19 419 23+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 24 419 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 419 24 419 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 419 24 419 30+ , srcInfoPoints = []+ }+ "negate"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 419 31 419 32+ , srcInfoPoints = []+ }+ "v"))))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 425 26 425 27 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 25+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 23+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21+ , srcInfoPoints = []+ }+ "WrapAdditive"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23+ , srcInfoPoints = []+ }+ "f")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 43+ , srcInfoPoints = []+ }+ "WrappedAdditive")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 45+ , SrcSpan "tests/examples/DerivingVia.hs" 425 48 425 49+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 48+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 427 1 435 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 9+ , SrcSpan "tests/examples/DerivingVia.hs" 427 48 427 53+ , SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 3+ , SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 3+ , SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 3+ , SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 3+ , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 47+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18+ , srcInfoPoints = []+ }+ "Additive")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20+ , srcInfoPoints = []+ }+ "f"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 47+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30+ , srcInfoPoints = []+ }+ "Affine")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 32+ , SrcSpan "tests/examples/DerivingVia.hs" 427 46 427 47+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46+ , srcInfoPoints = []+ }+ "f"))))))+ (Just+ [ InsType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 7+ , SrcSpan "tests/examples/DerivingVia.hs" 428 30 428 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12+ , srcInfoPoints = []+ }+ "Diff")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 14+ , SrcSpan "tests/examples/DerivingVia.hs" 428 28 428 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28+ , srcInfoPoints = []+ }+ "f")))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33+ , srcInfoPoints = []+ }+ "f"))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18+ , srcInfoPoints = []+ }+ "WrappedAdditive"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20+ , srcInfoPoints = []+ }+ "a")+ ])+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 21 430 24+ , srcInfoPoints = []+ }+ ".-.")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40+ , srcInfoPoints = []+ }+ "WrappedAdditive"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42+ , srcInfoPoints = []+ }+ "b")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 44 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 52+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50+ , srcInfoPoints = []+ }+ "^-^")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52+ , srcInfoPoints = []+ }+ "b")))))+ Nothing+ ])+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18+ , srcInfoPoints = []+ }+ "WrappedAdditive"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20+ , srcInfoPoints = []+ }+ "a")+ ])+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 21 431 24+ , srcInfoPoints = []+ }+ ".+^")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 28 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 54+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44+ , srcInfoPoints = []+ }+ "WrappedAdditive")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 46+ , SrcSpan "tests/examples/DerivingVia.hs" 431 53 431 54+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 53+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 431 46 431 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 431 46 431 47+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 48 431 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 431 48 431 51+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 431 48 431 51+ , srcInfoPoints = []+ }+ "^+^")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 431 52 431 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 431 52 431 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 431 52 431 53+ , srcInfoPoints = []+ }+ "b")))))))+ Nothing+ ])+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18+ , srcInfoPoints = []+ }+ "WrappedAdditive"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20+ , srcInfoPoints = []+ }+ "a")+ ])+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 21 432 24+ , srcInfoPoints = []+ }+ ".-^")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 28 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 54+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44+ , srcInfoPoints = []+ }+ "WrappedAdditive")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 46+ , SrcSpan "tests/examples/DerivingVia.hs" 432 53 432 54+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 53+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 432 46 432 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 432 46 432 47+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 48 432 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 432 48 432 51+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 432 48 432 51+ , srcInfoPoints = []+ }+ "^-^")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 432 52 432 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 432 52 432 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia.hs" 432 52 432 53+ , srcInfoPoints = []+ }+ "b")))))))+ Nothing+ ])+ ])+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 9+ , SrcSpan "tests/examples/DerivingVia.hs" 435 38 435 46+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 10 435 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 15+ , SrcSpan "tests/examples/DerivingVia.hs" 435 36 435 37+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 29+ , SrcSpan "tests/examples/DerivingVia.hs" 435 35 435 36+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30+ , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32+ , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30+ , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32+ , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30+ , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32+ , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33+ ]+ })))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35+ , srcInfoPoints = []+ }+ "a"))))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53+ , srcInfoPoints = []+ }+ "Affine")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 55+ , SrcSpan "tests/examples/DerivingVia.hs" 435 61 435 62+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56+ , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58+ , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56+ , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58+ , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56+ , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58+ , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59+ ]+ })))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61+ , srcInfoPoints = []+ }+ "a"))))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 9+ , SrcSpan "tests/examples/DerivingVia.hs" 437 38 437 46+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 10 437 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 15+ , SrcSpan "tests/examples/DerivingVia.hs" 437 30 437 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29+ , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29+ , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30+ ]+ }+ (ListCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29+ , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30+ ]+ })))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53+ , srcInfoPoints = []+ }+ "Affine")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55+ , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55+ , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56+ ]+ }+ (ListCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55+ , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56+ ]+ })))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 9+ , SrcSpan "tests/examples/DerivingVia.hs" 439 38 439 46+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 10 439 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 15+ , SrcSpan "tests/examples/DerivingVia.hs" 439 35 439 36+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35+ , srcInfoPoints = []+ }+ "Complex")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53+ , srcInfoPoints = []+ }+ "Affine")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61+ , srcInfoPoints = []+ }+ "Complex")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 9+ , SrcSpan "tests/examples/DerivingVia.hs" 441 38 441 46+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 10 441 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 15+ , SrcSpan "tests/examples/DerivingVia.hs" 441 33 441 34+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 33+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33+ , srcInfoPoints = []+ }+ "Maybe")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53+ , srcInfoPoints = []+ }+ "Affine")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59+ , srcInfoPoints = []+ }+ "Maybe")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 9+ , SrcSpan "tests/examples/DerivingVia.hs" 443 38 443 46+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 10 443 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 15+ , SrcSpan "tests/examples/DerivingVia.hs" 443 35 443 36+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35+ , srcInfoPoints = []+ }+ "ZipList")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53+ , srcInfoPoints = []+ }+ "Affine")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61+ , srcInfoPoints = []+ }+ "ZipList")))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 9+ , SrcSpan "tests/examples/DerivingVia.hs" 445 38 445 46+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 10 445 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 15+ , SrcSpan "tests/examples/DerivingVia.hs" 445 36 445 37+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27+ , srcInfoPoints = []+ }+ "WrapAdditive")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36+ , srcInfoPoints = []+ }+ "Identity")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53+ , srcInfoPoints = []+ }+ "Affine")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62+ , srcInfoPoints = []+ }+ "Identity")))))+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 1 452 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 6+ , SrcSpan "tests/examples/DerivingVia.hs" 451 16 451 21+ , SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 3+ , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 15+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 13+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 11+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9+ , srcInfoPoints = []+ }+ "C2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13+ , srcInfoPoints = []+ }+ "b")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15+ , srcInfoPoints = []+ }+ "c")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 5+ , srcInfoPoints = []+ }+ "c2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 452 11 452 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 452 16 452 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15+ , srcInfoPoints = []+ }+ "b"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20+ , srcInfoPoints = []+ }+ "c")))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 454 1 457 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 9+ , SrcSpan "tests/examples/DerivingVia.hs" 454 29 454 34+ , SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 3+ , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 16+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 14+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12+ , srcInfoPoints = []+ }+ "C2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16+ , srcInfoPoints = []+ }+ "b")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 18+ , SrcSpan "tests/examples/DerivingVia.hs" 454 27 454 28+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 27+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23+ , srcInfoPoints = []+ }+ "Const")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27+ , srcInfoPoints = []+ }+ "b"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 5+ , srcInfoPoints = []+ }+ "c2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7+ , srcInfoPoints = []+ }+ "x")+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 8 455 9+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 19+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17+ , srcInfoPoints = []+ }+ "Const")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 1 458 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 457 18 457 19 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15+ , srcInfoPoints = []+ }+ "Fweemp"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 26+ , srcInfoPoints = []+ }+ "Fweemp")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 11 ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 8 459 11+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 13+ , SrcSpan "tests/examples/DerivingVia.hs" 459 32 459 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18+ , srcInfoPoints = []+ }+ "Const")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20+ , srcInfoPoints = []+ }+ "a")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 22+ , SrcSpan "tests/examples/DerivingVia.hs" 459 24 459 26+ , SrcSpan "tests/examples/DerivingVia.hs" 459 31 459 32+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23+ , srcInfoPoints = []+ }+ "b"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31+ , srcInfoPoints = []+ }+ "Type"))))))))+ [ IParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 13+ , SrcSpan "tests/examples/DerivingVia.hs" 458 19 458 20+ ]+ }+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 17+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15+ , srcInfoPoints = []+ }+ "C2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19+ , srcInfoPoints = []+ }+ "b"))))+ ]+ ]+ ]+ , [ Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 38 1 38 6) "---"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 39 1 39 18)+ " Simple example"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 40 1 40 6) "---"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 46 1 46 6) "---"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 47 1 47 25)+ " Eta reduction at work"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 48 1 48 6) "---"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 62 1 62 6) "---"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 63 1 63 22)+ " Monad transformers"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 64 1 64 6) "---"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 68 1 68 22)+ " From `constraints'"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 78 1 78 52)+ " With `-XQuantifiedConstraints' this just becomes"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 79 1 79 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 80 1 80 68)+ " type Lifting cls trans = forall mm. cls mm => cls (trans mm)"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 81 1 81 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 82 1 82 52)+ " type LiftingMonad trans = Lifting Monad trans"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 83 1 83 3) ""+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 142 1 142 6) "---"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 143 1 143 32)+ " Using tuples in a `via` type"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 144 1 144 6) "---"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 153 1 153 6) "---"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 154 1 154 23)+ " Abstract data types"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 155 1 155 6) "---"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 167 1 167 5) "--"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 168 1 168 18)+ " Testing parser"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 169 1 169 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 183 1 183 5) "--"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 184 1 184 23)+ " From Baldur's notes"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 185 1 185 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 187 1 187 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 188 1 188 5) " 1"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 189 1 189 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 227 1 227 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 228 1 228 5) " 2"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 229 1 229 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 243 1 243 8) " data"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 262 1 262 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 263 1 263 5) " 3"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 264 1 264 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 290 1 290 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 291 1 291 5) " 4"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 292 1 292 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 324 1 324 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 325 1 325 5) " 5"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 326 1 326 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 340 1 340 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 341 1 341 5) " 6"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 342 1 342 5) "--"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 343 1 343 116)+ " https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 360 1 360 19)+ "mkLattice_(Bool)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 362 1 362 19)+ "mkLattice_(Char)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 364 1 364 18)+ "mkLattice_(Int)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 366 1 366 22)+ "mkLattice_(Integer)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 368 1 368 20)+ "mkLattice_(Float)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 370 1 370 21)+ "mkLattice_(Double)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 372 1 372 23)+ "mkLattice_(Rational)"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 375 1 375 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 376 1 376 5) " 7"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 377 1 377 5) "--"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 378 1 378 81)+ " https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 421 1 421 79)+ " #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \\"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 422 1 422 85)+ " (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \\"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 423 1 423 42)+ " (.-^) = (^-^) ; {-# INLINE (.-^) #-}"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 424 1 424 40)+ " #define ADDITIVE(T) ADDITIVEC((), T)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 434 1 434 22)+ " ADDITIVE(((->) a))"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 436 1 436 16)+ " ADDITIVE([])"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 438 1 438 21)+ " ADDITIVE(Complex)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 440 1 440 19)+ " ADDITIVE(Maybe)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 442 1 442 21)+ " ADDITIVE(ZipList)"+ , Comment+ False+ (SrcSpan "tests/examples/DerivingVia.hs" 444 1 444 22)+ " ADDITIVE(Identity)"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 447 1 447 5) "--"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 448 1 448 5) " 8"+ , Comment+ False (SrcSpan "tests/examples/DerivingVia.hs" 449 1 449 5) "--"+ ]+ )
+ tests/examples/DerivingVia.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingVia.hs.prettyprinter.golden view
@@ -0,0 +1,418 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeInType #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE UndecidableInstances #-}+module DerivingVia where+import Data.Void+import Data.Complex+import Data.Functor.Const+import Data.Functor.Identity+import Data.Ratio+import Control.Monad.Reader+import Control.Monad.State+import Control.Monad.Writer+import Control.Applicative hiding (WrappedMonad(..))+import Data.Bifunctor+import Data.Monoid+import Data.Kind++type f ~> g = forall xx . f xx -> g xx++data Foo a = MkFoo a a+ deriving Show via (Identity (Foo a))++newtype Flip p a b = Flip{runFlip :: p b a}++instance Bifunctor p => Bifunctor (Flip p) where+ bimap f g = Flip . bimap g f . runFlip++instance Bifunctor p => Functor (Flip p a) where+ fmap f = Flip . first f . runFlip++newtype Bar a = MkBar (Either a Int)+ deriving Functor via (Flip Either Int)++type MTrans = (Type -> Type) -> (Type -> Type)++data Dict c where+ Dict :: c => Dict c++newtype a :- b = Sub (a => Dict b)++infixl 1 \\++(\\) :: a => (b => r) -> (a :- b) -> r+r \\ Sub Dict = r++class LiftingMonad (trans :: MTrans) where+ proof :: Monad m :- Monad (trans m)++instance LiftingMonad (StateT s :: MTrans) where+ proof :: Monad m :- Monad (StateT s m)+ proof = Sub Dict++instance Monoid w => LiftingMonad (WriterT w :: MTrans) where+ proof :: Monad m :- Monad (WriterT w m)+ proof = Sub Dict++instance (LiftingMonad trans, LiftingMonad trans') =>+ LiftingMonad (ComposeT trans trans' :: MTrans)+ where+ proof :: forall m . Monad m :- Monad (ComposeT trans trans' m)+ proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)++newtype Stack :: MTrans where+ Stack ::+ ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a+ deriving newtype (Functor, Applicative, Monad, MonadReader Int,+ MonadState Bool, MonadWriter String)+ deriving (MonadTrans, MFunctor) via (ReaderT Int `ComposeT`+ StateT Bool `ComposeT` WriterT String)++class MFunctor (trans :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')++instance MFunctor (ReaderT r :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')+ hoist nat = ReaderT . fmap nat . runReaderT++instance MFunctor (StateT s :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')+ hoist nat = StateT . fmap nat . runStateT++instance MFunctor (WriterT w :: MTrans) where+ hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')+ hoist nat = WriterT . nat . runWriterT++infixr 9 `ComposeT`++newtype ComposeT :: MTrans -> MTrans -> MTrans where+ ComposeT :: {getComposeT :: f (g m) a} -> ComposeT f g m a+ deriving newtype (Functor, Applicative, Monad)++instance (MonadTrans f, MonadTrans g, LiftingMonad g) =>+ MonadTrans (ComposeT f g)+ where+ lift :: forall m . Monad m => m ~> ComposeT f g m+ lift = ComposeT . lift . lift \\ proof @g @m++instance (MFunctor f, MFunctor g, LiftingMonad g) =>+ MFunctor (ComposeT f g)+ where+ hoist ::+ forall m m' . Monad m =>+ (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')+ hoist f = ComposeT . hoist (hoist f) . getComposeT \\ proof @g @m++newtype X a = X (a, a)+ deriving (Semigroup, Monoid) via (Product a, Sum a)+ deriving (Show, Eq) via (a, a)++class C f where+ c :: f a -> Int++newtype X2 f a = X2 (f a)++instance C (X2 f) where+ c = const 0++deriving via (X2 IO) instance C IO++newtype P0 a = P0 a+ deriving Show via a++newtype P1 a = P1 [a]+ deriving Show via [a]++newtype P2 a = P2 (a, a)+ deriving Show via (a, a)++newtype P3 a = P3 (Maybe a)+ deriving Show via (First a)++newtype P4 a = P4 (Maybe a)+ deriving Show via (First $ a)++newtype P5 a = P5 a+ deriving Show via (Identity $ a)++newtype P6 a = P6 [a]+ deriving Show via ([] $ a)++newtype P7 a = P7 (a, a)+ deriving Show via (Identity $ (a, a))++newtype P8 a = P8 (Either () a)+ deriving Functor via (($) (Either ()))++newtype f $ a = APP (f a)+ deriving newtype Show+ deriving newtype Functor++newtype WrapApplicative f a = WrappedApplicative (f a)+ deriving (Functor, Applicative)++instance (Applicative f, Num a) => Num (WrapApplicative f a) where+ (+) = liftA2 (+)+ (*) = liftA2 (*)+ negate = fmap negate+ fromInteger = pure . fromInteger+ abs = fmap abs+ signum = fmap signum++instance (Applicative f, Fractional a) =>+ Fractional (WrapApplicative f a)+ where+ recip = fmap recip+ fromRational = pure . fromRational++instance (Applicative f, Floating a) =>+ Floating (WrapApplicative f a)+ where+ pi = pure pi+ sqrt = fmap sqrt+ exp = fmap exp+ log = fmap log+ sin = fmap sin+ cos = fmap cos+ asin = fmap asin+ atan = fmap atan+ acos = fmap acos+ sinh = fmap sinh+ cosh = fmap cosh+ asinh = fmap asinh+ atanh = fmap atanh+ acosh = fmap acosh++instance (Applicative f, Semigroup s) =>+ Semigroup (WrapApplicative f s)+ where+ (<>) = liftA2 (<>)++instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m)+ where+ mempty = pure mempty++class Pointed p where+ pointed :: a -> p a++newtype WrapMonad f a = WrappedMonad (f a)+ deriving newtype (Pointed, Monad)++instance (Monad m, Pointed m) => Functor (WrapMonad m) where+ fmap = liftM++instance (Monad m, Pointed m) => Applicative (WrapMonad m) where+ pure = pointed+ (<*>) = ap++data Sorted a = Sorted a a a+ deriving (Functor, Applicative) via (WrapMonad Sorted)+ deriving (Num, Fractional, Floating, Semigroup,+ Monoid) via (WrapApplicative Sorted a)++instance Monad Sorted where+ (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b+ Sorted a b c >>= f = Sorted a' b' c'+ where Sorted a' _ _ = f a+ Sorted _ b' _ = f b+ Sorted _ _ c' = f c++instance Pointed Sorted where+ pointed :: a -> Sorted a+ pointed a = Sorted a a a++class IsZero a where+ isZero :: a -> Bool++newtype WrappedNumEq a = WrappedNumEq a++newtype WrappedShow a = WrappedShow a++newtype WrappedNumEq2 a = WrappedNumEq2 a++instance (Num a, Eq a) => IsZero (WrappedNumEq a) where+ isZero :: WrappedNumEq a -> Bool+ isZero (WrappedNumEq a) = 0 == a++instance Show a => IsZero (WrappedShow a) where+ isZero :: WrappedShow a -> Bool+ isZero (WrappedShow a) = "0" == show a++instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where+ isZero :: WrappedNumEq2 a -> Bool+ isZero (WrappedNumEq2 a) = a + a == a++newtype INT = INT Int+ deriving newtype Show+ deriving IsZero via (WrappedNumEq Int)++newtype VOID = VOID Void+ deriving IsZero via (WrappedShow Void)++class Bifunctor p => Biapplicative p where+ bipure :: a -> b -> p a b+ + biliftA2 ::+ (a -> b -> c) -> (a' -> b' -> c') -> p a a' -> p b b' -> p c c'++instance Biapplicative (,) where+ bipure = (,)+ biliftA2 f f' (a, a') (b, b') = (f a b, f' a' b')++newtype WrapBiapp p a b = WrapBiap (p a b)+ deriving newtype (Bifunctor, Biapplicative, Eq)++instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b)+ where+ (+) = biliftA2 (+) (+)+ (-) = biliftA2 (*) (*)+ (*) = biliftA2 (*) (*)+ negate = bimap negate negate+ abs = bimap abs abs+ signum = bimap signum signum+ fromInteger n = fromInteger n `bipure` fromInteger n++newtype INT2 = INT2 (Int, Int)+ deriving IsZero via (WrappedNumEq2 (WrapBiapp (,) Int Int))++class Monoid a => MonoidNull a where+ null :: a -> Bool++newtype WrpMonNull a = WRM a+ deriving (Eq, Semigroup, Monoid)++instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where+ null :: WrpMonNull a -> Bool+ null = (== mempty)++deriving via (WrpMonNull Any) instance MonoidNull Any++deriving via () instance MonoidNull ()++deriving via Ordering instance MonoidNull Ordering++class Lattice a where+ sup :: a -> a -> a+ + (.>=) :: a -> a -> Bool+ + (.>) :: a -> a -> Bool++newtype WrapOrd a = WrappedOrd a+ deriving newtype (Eq, Ord)++instance Ord a => Lattice (WrapOrd a) where+ sup = max+ (.>=) = (>=)+ (.>) = (>)++deriving via [a] instance Ord a => Lattice [a]++deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)++deriving via Bool instance Lattice Bool++deriving via Char instance Lattice Char++deriving via Int instance Lattice Int++deriving via Integer instance Lattice Integer++deriving via Float instance Lattice Float++deriving via Double instance Lattice Double++deriving via Rational instance Lattice Rational++class Functor f => Additive f where+ zero :: Num a => f a+ + (^+^) :: Num a => f a -> f a -> f a+ (^+^) = liftU2 (+)+ + (^-^) :: Num a => f a -> f a -> f a+ x ^-^ y = x ^+^ fmap negate y+ + liftU2 :: (a -> a -> a) -> f a -> f a -> f a++instance Additive [] where+ zero = []+ liftU2 f = go+ where go (x : xs) (y : ys) = f x y : go xs ys+ go [] ys = ys+ go xs [] = xs++instance Additive Maybe where+ zero = Nothing+ liftU2 f (Just a) (Just b) = Just (f a b)+ liftU2 _ Nothing ys = ys+ liftU2 _ xs Nothing = xs++instance Applicative f => Additive (WrapApplicative f) where+ zero = pure 0+ liftU2 = liftA2++deriving via (WrapApplicative ((->) a)) instance Additive ((->) a)++deriving via (WrapApplicative Complex) instance Additive Complex++deriving via (WrapApplicative Identity) instance Additive Identity++instance Additive ZipList where+ zero = ZipList []+ liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)++class Additive (Diff p) => Affine p where+ type Diff p :: Type -> Type+ + (.-.) :: Num a => p a -> p a -> Diff p a+ + (.+^) :: Num a => p a -> Diff p a -> p a+ + (.-^) :: Num a => p a -> Diff p a -> p a+ p .-^ v = p .+^ fmap negate v++newtype WrapAdditive f a = WrappedAdditive (f a)++instance Additive f => Affine (WrapAdditive f) where+ type Diff (WrapAdditive f) = f+ WrappedAdditive a .-. WrappedAdditive b = a ^-^ b+ WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)+ WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)++deriving via (WrapAdditive ((->) a)) instance Affine ((->) a)++deriving via (WrapAdditive []) instance Affine []++deriving via (WrapAdditive Complex) instance Affine Complex++deriving via (WrapAdditive Maybe) instance Affine Maybe++deriving via (WrapAdditive ZipList) instance Affine ZipList++deriving via (WrapAdditive Identity) instance Affine Identity++class C2 a b c where+ c2 :: a -> b -> c++instance C2 a b (Const a b) where+ c2 x _ = Const x++newtype Fweemp a = Fweemp a+ deriving (C2 a b) via (Const a (b :: Type))
+ tests/examples/DerivingVia2.hs view
@@ -0,0 +1,41 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingVia2 where++import Control.Applicative+import Data.Functor.Compose+import Data.Proxy+import Data.Semigroup++newtype App (f :: * -> *) a = App (f a)+ deriving newtype+ (Functor, Applicative)++instance (Applicative f, Semigroup a) => Semigroup (App f a) where+ (<>) = liftA2 (<>)++deriving via (App (Compose (f :: * -> *) g) a)+ instance (Applicative f, Applicative g, Semigroup a)+ => Semigroup (Compose f g a)++class C (a :: k -> *)+instance C Proxy++newtype MyProxy a = MyProxy (Proxy a)+deriving via (Proxy :: * -> *) instance C MyProxy++class Z a b+data T a+data X1 a+data X2 a+data X3 a++deriving via (forall a. T a) instance Z a (X1 b)+deriving via (T a) instance forall b. Z a (X2 b)+deriving via (forall a. T a) instance forall b. Z a (X3 b)
+ tests/examples/DerivingVia2.hs.exactprinter.golden view
@@ -0,0 +1,42 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingVia2 where++import Control.Applicative+import Data.Functor.Compose+import Data.Proxy+import Data.Semigroup++newtype App (f :: * -> *) a = App (f a)+ deriving newtype+ (Functor, Applicative)++instance (Applicative f, Semigroup a) => Semigroup (App f a) where+ (<>) = liftA2 (<>)++deriving via( App (Compose (f :: * -> *) g) a)+ instance (Applicative f, Applicative g, Semigroup a)+ => Semigroup (Compose f g a)++class C (a :: k -> *)+instance C Proxy++newtype MyProxy a = MyProxy (Proxy a)+deriving via( Proxy :: * -> *) instance C MyProxy++class Z a b+data T a+data X1 a+data X2 a+data X3 a++deriving via( forall a. T a) instance Z a (X1 b)+deriving via( T a) instance forall b. Z a (X2 b)+deriving via( forall a. T a) instance forall b. Z a (X3 b)+
+ tests/examples/DerivingVia2.hs.parser.golden view
@@ -0,0 +1,2346 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 42 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1+ , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 7+ , SrcSpan "tests/examples/DerivingVia2.hs" 9 21 9 26+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 8 9 20+ , srcInfoPoints = []+ }+ "DerivingVia2")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 1 33 1 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 14 1 32+ , srcInfoPoints = []+ }+ "DerivingStrategies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 2 26 2 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 14 2 25+ , srcInfoPoints = []+ }+ "DerivingVia"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 3 32 3 35+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 14 3 31+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 4 41 4 44+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 14 4 40+ , srcInfoPoints = []+ }+ "GeneralizedNewtypeDeriving"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 5 36 5 39+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 14 5 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 6 24 6 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 14 6 23+ , srcInfoPoints = []+ }+ "PolyKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 7 25 7 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 14 7 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 13+ , SrcSpan "tests/examples/DerivingVia2.hs" 8 33 8 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 14 8 32+ , srcInfoPoints = []+ }+ "StandaloneDeriving"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 8 11 27+ , srcInfoPoints = []+ }+ "Control.Applicative"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 8 12 28+ , srcInfoPoints = []+ }+ "Data.Functor.Compose"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 8 13 18+ , srcInfoPoints = []+ }+ "Data.Proxy"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 8 14 22+ , srcInfoPoints = []+ }+ "Data.Semigroup"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 18 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 16 29 16 30 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 28+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 26+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12+ , srcInfoPoints = []+ }+ "App"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 14+ , SrcSpan "tests/examples/DerivingVia2.hs" 16 16 16 18+ , SrcSpan "tests/examples/DerivingVia2.hs" 16 25 16 26+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 14 16 15+ , srcInfoPoints = []+ }+ "f")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 16 21 16 23 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 20+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 24 16 25+ , srcInfoPoints = []+ }))))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 34+ , srcInfoPoints = []+ }+ "App")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 36+ , SrcSpan "tests/examples/DerivingVia2.hs" 16 39 16 40+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 39+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 17 3 18 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 17 3 17 11+ , SrcSpan "tests/examples/DerivingVia2.hs" 18 5 18 6+ , SrcSpan "tests/examples/DerivingVia2.hs" 18 13 18 14+ , SrcSpan "tests/examples/DerivingVia2.hs" 18 26 18 27+ ]+ }+ (Just+ (DerivNewtype+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 17 12 17 19+ , srcInfoPoints = []+ }))+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13+ , srcInfoPoints = []+ }+ "Functor")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26+ , srcInfoPoints = []+ }+ "Applicative")))+ ]+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 20 1 23 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 9+ , SrcSpan "tests/examples/DerivingVia2.hs" 20 62 20 67+ , SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 3+ , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 61+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 11+ , SrcSpan "tests/examples/DerivingVia2.hs" 20 24 20 25+ , SrcSpan "tests/examples/DerivingVia2.hs" 20 37 20 38+ , SrcSpan "tests/examples/DerivingVia2.hs" 20 39 20 41+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35+ , srcInfoPoints = []+ }+ "Semigroup")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 61+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51+ , srcInfoPoints = []+ }+ "Semigroup")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 53+ , SrcSpan "tests/examples/DerivingVia2.hs" 20 60 20 61+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 60+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56+ , srcInfoPoints = []+ }+ "App")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 4+ , SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6+ , SrcSpan "tests/examples/DerivingVia2.hs" 21 6 21 7+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6+ , srcInfoPoints = []+ }+ "<>"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16+ , srcInfoPoints = []+ }+ "liftA2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18+ , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20+ , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18+ , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20+ , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20+ , srcInfoPoints = []+ }+ "<>")))))+ Nothing)+ ])+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 23 1 25 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 9+ , SrcSpan "tests/examples/DerivingVia2.hs" 24 10 24 18+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 10 23 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 15+ , SrcSpan "tests/examples/DerivingVia2.hs" 23 46 23 47+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 46+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 44+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18+ , srcInfoPoints = []+ }+ "App")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 20+ , SrcSpan "tests/examples/DerivingVia2.hs" 23 43 23 44+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 43+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia2.hs" 23 20 23 27+ , srcInfoPoints = []+ }+ "Compose")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 29+ , SrcSpan "tests/examples/DerivingVia2.hs" 23 31 23 33+ , SrcSpan "tests/examples/DerivingVia2.hs" 23 40 23 41+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 29 23 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia2.hs" 23 29 23 30+ , srcInfoPoints = []+ }+ "f"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 34 23 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 23 36 23 38+ ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia2.hs" 23 34 23 35+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DerivingVia2.hs" 23 39 23 40+ , srcInfoPoints = []+ }))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43+ , srcInfoPoints = []+ }+ "g")))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46+ , srcInfoPoints = []+ }+ "a"))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 44+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 24 19 24 20+ , SrcSpan "tests/examples/DerivingVia2.hs" 24 33 24 34+ , SrcSpan "tests/examples/DerivingVia2.hs" 24 48 24 49+ , SrcSpan "tests/examples/DerivingVia2.hs" 24 61 24 62+ , SrcSpan "tests/examples/DerivingVia2.hs" 25 16 25 18+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33+ , srcInfoPoints = []+ }+ "f")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48+ , srcInfoPoints = []+ }+ "g")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59+ , srcInfoPoints = []+ }+ "Semigroup")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 44+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28+ , srcInfoPoints = []+ }+ "Semigroup")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 30+ , SrcSpan "tests/examples/DerivingVia2.hs" 25 43 25 44+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 43+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 41+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 39+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37+ , srcInfoPoints = []+ }+ "Compose")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39+ , srcInfoPoints = []+ }+ "f")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41+ , srcInfoPoints = []+ }+ "g")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43+ , srcInfoPoints = []+ }+ "a"))))))+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 22+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8+ , srcInfoPoints = []+ }+ "C"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 10+ , SrcSpan "tests/examples/DerivingVia2.hs" 27 12 27 14+ , SrcSpan "tests/examples/DerivingVia2.hs" 27 21 27 22+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 27 10 27 11+ , srcInfoPoints = []+ }+ "a")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 27 17 27 19 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16+ , srcInfoPoints = []+ }+ "k"))+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 27 20 27 21+ , srcInfoPoints = []+ }))))+ []+ Nothing+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 9 ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11+ , srcInfoPoints = []+ }+ "C")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17+ , srcInfoPoints = []+ }+ "Proxy")))))+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 30 19 30 20 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16+ , srcInfoPoints = []+ }+ "MyProxy"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 28+ , srcInfoPoints = []+ }+ "MyProxy")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 30+ , SrcSpan "tests/examples/DerivingVia2.hs" 30 37 30 38+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35+ , srcInfoPoints = []+ }+ "Proxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ []+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 9+ , SrcSpan "tests/examples/DerivingVia2.hs" 31 32 31 40+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 10 31 13+ , srcInfoPoints = []+ }+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 15+ , SrcSpan "tests/examples/DerivingVia2.hs" 31 21 31 23+ , SrcSpan "tests/examples/DerivingVia2.hs" 31 30 31 31+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20+ , srcInfoPoints = []+ }+ "Proxy")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 31 26 31 28 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 25+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 29 31 30+ , srcInfoPoints = []+ })))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42+ , srcInfoPoints = []+ }+ "C")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50+ , srcInfoPoints = []+ }+ "MyProxy")))))+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 6 ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 12+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8+ , srcInfoPoints = []+ }+ "Z"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12+ , srcInfoPoints = []+ }+ "b")))+ []+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 9+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7+ , srcInfoPoints = []+ }+ "T"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9+ , srcInfoPoints = []+ }+ "a")))+ []+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8+ , srcInfoPoints = []+ }+ "X1"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10+ , srcInfoPoints = []+ }+ "a")))+ []+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8+ , srcInfoPoints = []+ }+ "X2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10+ , srcInfoPoints = []+ }+ "a")))+ []+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8+ , srcInfoPoints = []+ }+ "X3"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10+ , srcInfoPoints = []+ }+ "a")))+ []+ []+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 9+ , SrcSpan "tests/examples/DerivingVia2.hs" 39 30 39 38+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 10 39 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 15+ , SrcSpan "tests/examples/DerivingVia2.hs" 39 28 39 29+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 21+ , SrcSpan "tests/examples/DerivingVia2.hs" 39 23 39 24+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26+ , srcInfoPoints = []+ }+ "T")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28+ , srcInfoPoints = []+ }+ "a")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 52+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50+ , srcInfoPoints = []+ }+ "Z")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52+ , srcInfoPoints = []+ }+ "a")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 54+ , SrcSpan "tests/examples/DerivingVia2.hs" 39 58 39 59+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56+ , srcInfoPoints = []+ }+ "X1")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58+ , srcInfoPoints = []+ }+ "b"))))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 9+ , SrcSpan "tests/examples/DerivingVia2.hs" 40 30 40 38+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 10 40 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 25+ , SrcSpan "tests/examples/DerivingVia2.hs" 40 28 40 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26+ , srcInfoPoints = []+ }+ "T")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28+ , srcInfoPoints = []+ }+ "a"))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 45+ , SrcSpan "tests/examples/DerivingVia2.hs" 40 47 40 48+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47+ , srcInfoPoints = []+ }+ "b")+ ])+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 59+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 52+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50+ , srcInfoPoints = []+ }+ "Z")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52+ , srcInfoPoints = []+ }+ "a")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 54+ , SrcSpan "tests/examples/DerivingVia2.hs" 40 58 40 59+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56+ , srcInfoPoints = []+ }+ "X2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58+ , srcInfoPoints = []+ }+ "b"))))))+ , DerivDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 9+ , SrcSpan "tests/examples/DerivingVia2.hs" 41 30 41 38+ ]+ }+ (Just+ (DerivVia+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 10 41 13+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 15+ , SrcSpan "tests/examples/DerivingVia2.hs" 41 28 41 29+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 21+ , SrcSpan "tests/examples/DerivingVia2.hs" 41 23 41 24+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26+ , srcInfoPoints = []+ }+ "T")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28+ , srcInfoPoints = []+ }+ "a")))))))+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 45+ , SrcSpan "tests/examples/DerivingVia2.hs" 41 47 41 48+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47+ , srcInfoPoints = []+ }+ "b")+ ])+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 59+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 52+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50+ , srcInfoPoints = []+ }+ "Z")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52+ , srcInfoPoints = []+ }+ "a")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 54+ , SrcSpan "tests/examples/DerivingVia2.hs" 41 58 41 59+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56+ , srcInfoPoints = []+ }+ "X3")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58+ , srcInfoPoints = []+ }+ "b"))))))+ ]+ , []+ )
+ tests/examples/DerivingVia2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingVia2.hs.prettyprinter.golden view
@@ -0,0 +1,47 @@+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+module DerivingVia2 where+import Control.Applicative+import Data.Functor.Compose+import Data.Proxy+import Data.Semigroup++newtype App (f :: * -> *) a = App (f a)+ deriving newtype (Functor, Applicative)++instance (Applicative f, Semigroup a) => Semigroup (App f a) where+ (<>) = liftA2 (<>)++deriving via (App (Compose (f :: * -> *) g) a) instance+ (Applicative f, Applicative g, Semigroup a) =>+ Semigroup (Compose f g a)++class C (a :: k -> *)++instance C Proxy++newtype MyProxy a = MyProxy (Proxy a)++deriving via (Proxy :: * -> *) instance C MyProxy++class Z a b++data T a++data X1 a++data X2 a++data X3 a++deriving via (forall a . T a) instance Z a (X1 b)++deriving via (T a) instance forall b . Z a (X2 b)++deriving via (forall a . T a) instance forall b . Z a (X3 b)
+ tests/examples/DerivingViaStealing.hs view
@@ -0,0 +1,5 @@+module DerivingViaStealing where++via = ()+stock = ()+anyclass = ()
+ tests/examples/DerivingViaStealing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingViaStealing.hs.parser.golden view
@@ -0,0 +1,201 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 1+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 1+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 1+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 1+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 6 1 6 1+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 6 1 6 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 7+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 1 28 1 33+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 8 1 27+ , srcInfoPoints = []+ }+ "DerivingViaStealing")+ Nothing+ Nothing))+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 9+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "via"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 5 3 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 5 3 6 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9+ ]+ }))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 6+ , srcInfoPoints = []+ }+ "stock"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 7 4 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 7 4 8 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11+ ]+ }))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 9+ , srcInfoPoints = []+ }+ "anyclass"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 10 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 10 5 11 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13+ , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14+ ]+ }))))+ Nothing+ ]+ , []+ )
+ tests/examples/DerivingViaStealing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DerivingViaStealing.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+module DerivingViaStealing where+via = ()+stock = ()+anyclass = ()
+ tests/examples/Directory.hs view
@@ -0,0 +1,913 @@+{-# LANGUAGE ForeignFunctionInterface, NondecreasingIndentation #-}++-----------------------------------------------------------------------------+-- |+-- Module : System.Directory+-- Copyright : (c) The University of Glasgow 2001+-- License : BSD-style (see the file libraries/base/LICENSE)+--+-- Maintainer : libraries@haskell.org+-- Stability : stable+-- Portability : portable+--+-- System-independent interface to directory manipulation.+--+-----------------------------------------------------------------------------++module System.Directory+ (+ -- $intro++ -- * Actions on directories+ createDirectory -- :: FilePath -> IO ()+ , createDirectoryIfMissing -- :: Bool -> FilePath -> IO ()+ , removeDirectory -- :: FilePath -> IO ()+ , removeDirectoryRecursive -- :: FilePath -> IO ()+ , renameDirectory -- :: FilePath -> FilePath -> IO ()++ , getDirectoryContents -- :: FilePath -> IO [FilePath]+ , getCurrentDirectory -- :: IO FilePath+ , setCurrentDirectory -- :: FilePath -> IO ()++ -- * Pre-defined directories+ , getHomeDirectory+ , getAppUserDataDirectory+ , getUserDocumentsDirectory+ , getTemporaryDirectory++ -- * Actions on files+ , removeFile -- :: FilePath -> IO ()+ , renameFile -- :: FilePath -> FilePath -> IO ()+ , copyFile -- :: FilePath -> FilePath -> IO ()++ , canonicalizePath+ , makeRelativeToCurrentDirectory+ , findExecutable++ -- * Existence tests+ , doesFileExist -- :: FilePath -> IO Bool+ , doesDirectoryExist -- :: FilePath -> IO Bool++ -- * Permissions++ -- $permissions++ , Permissions(+ Permissions,+ readable, -- :: Permissions -> Bool+ writable, -- :: Permissions -> Bool+ executable, -- :: Permissions -> Bool+ searchable -- :: Permissions -> Bool+ )++ , getPermissions -- :: FilePath -> IO Permissions+ , setPermissions -- :: FilePath -> Permissions -> IO ()+ , copyPermissions++ -- * Timestamps++ , getModificationTime -- :: FilePath -> IO ClockTime+ ) where++import Prelude hiding ( catch )+import qualified Prelude++import Control.Monad (guard)+import System.Environment ( getEnv )+import System.FilePath+import System.IO+import System.IO.Error hiding ( catch, try )+import Control.Monad ( when, unless )+import Control.Exception.Base++import Foreign+import Foreign.C++{-# CFILES cbits/directory.c #-}++import System.Time ( ClockTime(..) )++import GHC.IO.Exception ( IOException(..), IOErrorType(..), ioException )++import System.Posix.Types+import System.Posix.Internals+import qualified System.Win32 as Win32++{- $intro+A directory contains a series of entries, each of which is a named+reference to a file system object (file, directory etc.). Some+entries may be hidden, inaccessible, or have some administrative+function (e.g. `.' or `..' under POSIX+<http://www.opengroup.org/onlinepubs/009695399/>), but in+this standard all such entries are considered to form part of the+directory contents. Entries in sub-directories are not, however,+considered to form part of the directory contents.++Each file system object is referenced by a /path/. There is+normally at least one absolute path to each file system object. In+some operating systems, it may also be possible to have paths which+are relative to the current directory.+-}++-----------------------------------------------------------------------------+-- Permissions++{- $permissions++ The 'Permissions' type is used to record whether certain operations are+ permissible on a file\/directory. 'getPermissions' and 'setPermissions'+ get and set these permissions, respectively. Permissions apply both to+ files and directories. For directories, the executable field will be+ 'False', and for files the searchable field will be 'False'. Note that+ directories may be searchable without being readable, if permission has+ been given to use them as part of a path, but not to examine the+ directory contents.++Note that to change some, but not all permissions, a construct on the following lines must be used.++> makeReadable f = do+> p <- getPermissions f+> setPermissions f (p {readable = True})++-}++data Permissions+ = Permissions {+ readable, writable,+ executable, searchable :: Bool+ } deriving (Eq, Ord, Read, Show)++{- |The 'getPermissions' operation returns the+permissions for the file or directory.++The operation may fail with:++* 'isPermissionError' if the user is not permitted to access+ the permissions; or++* 'isDoesNotExistError' if the file or directory does not exist.++-}++getPermissions :: FilePath -> IO Permissions+getPermissions name = do+ withFilePath name $ \s -> do+ -- stat() does a better job of guessing the permissions on Windows+ -- than access() does. e.g. for execute permission, it looks at the+ -- filename extension :-)+ --+ -- I tried for a while to do this properly, using the Windows security API,+ -- and eventually gave up. getPermissions is a flawed API anyway. -- SimonM+ allocaBytes sizeof_stat $ \ p_stat -> do+ throwErrnoIfMinus1_ "getPermissions" $ c_stat s p_stat+ mode <- st_mode p_stat+ let usr_read = mode .&. s_IRUSR+ let usr_write = mode .&. s_IWUSR+ let usr_exec = mode .&. s_IXUSR+ let is_dir = mode .&. s_IFDIR+ return (+ Permissions {+ readable = usr_read /= 0,+ writable = usr_write /= 0,+ executable = is_dir == 0 && usr_exec /= 0,+ searchable = is_dir /= 0 && usr_exec /= 0+ }+ )++{- |The 'setPermissions' operation sets the+permissions for the file or directory.++The operation may fail with:++* 'isPermissionError' if the user is not permitted to set+ the permissions; or++* 'isDoesNotExistError' if the file or directory does not exist.++-}++setPermissions :: FilePath -> Permissions -> IO ()+setPermissions name (Permissions r w e s) = do+ allocaBytes sizeof_stat $ \ p_stat -> do+ withFilePath name $ \p_name -> do+ throwErrnoIfMinus1_ "setPermissions" $ do+ c_stat p_name p_stat+ mode <- st_mode p_stat+ let mode1 = modifyBit r mode s_IRUSR+ let mode2 = modifyBit w mode1 s_IWUSR+ let mode3 = modifyBit (e || s) mode2 s_IXUSR+ c_wchmod p_name mode3+ where+ modifyBit :: Bool -> CMode -> CMode -> CMode+ modifyBit False m b = m .&. (complement b)+ modifyBit True m b = m .|. b++foreign import ccall unsafe "_wchmod"+ c_wchmod :: CWString -> CMode -> IO CInt++copyPermissions :: FilePath -> FilePath -> IO ()+copyPermissions source dest = do+ allocaBytes sizeof_stat $ \ p_stat -> do+ withFilePath source $ \p_source -> do+ withFilePath dest $ \p_dest -> do+ throwErrnoIfMinus1_ "copyPermissions" $ c_stat p_source p_stat+ mode <- st_mode p_stat+ throwErrnoIfMinus1_ "copyPermissions" $ c_wchmod p_dest mode++-----------------------------------------------------------------------------+-- Implementation++{- |@'createDirectory' dir@ creates a new directory @dir@ which is+initially empty, or as near to empty as the operating system+allows.++The operation may fail with:++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES]@++* 'isAlreadyExistsError' \/ 'AlreadyExists'+The operand refers to a directory that already exists.+@ [EEXIST]@++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'NoSuchThing'+There is no path to the directory.+@[ENOENT, ENOTDIR]@++* 'ResourceExhausted'+Insufficient resources (virtual memory, process file descriptors,+physical disk space, etc.) are available to perform the operation.+@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@++* 'InappropriateType'+The path refers to an existing non-directory object.+@[EEXIST]@++-}++createDirectory :: FilePath -> IO ()+createDirectory path = do+ Win32.createDirectory path Nothing++-- | @'createDirectoryIfMissing' parents dir@ creates a new directory+-- @dir@ if it doesn\'t exist. If the first argument is 'True'+-- the function will also create all parent directories if they are missing.+createDirectoryIfMissing :: Bool -- ^ Create its parents too?+ -> FilePath -- ^ The path to the directory you want to make+ -> IO ()+createDirectoryIfMissing create_parents path0+ | create_parents = createDirs (parents path0)+ | otherwise = createDirs (take 1 (parents path0))+ where+ parents = reverse . scanl1 (</>) . splitDirectories . normalise++ createDirs [] = return ()+ createDirs (dir:[]) = createDir dir throw+ createDirs (dir:dirs) =+ createDir dir $ \_ -> do+ createDirs dirs+ createDir dir throw++ createDir :: FilePath -> (IOException -> IO ()) -> IO ()+ createDir dir notExistHandler = do+ r <- try $ createDirectory dir+ case (r :: Either IOException ()) of+ Right () -> return ()+ Left e+ | isDoesNotExistError e -> notExistHandler e+ -- createDirectory (and indeed POSIX mkdir) does not distinguish+ -- between a dir already existing and a file already existing. So we+ -- check for it here. Unfortunately there is a slight race condition+ -- here, but we think it is benign. It could report an exeption in+ -- the case that the dir did exist but another process deletes the+ -- directory and creates a file in its place before we can check+ -- that the directory did indeed exist.+ | isAlreadyExistsError e -> (do+ withFileStatus "createDirectoryIfMissing" dir $ \st -> do+ isDir <- isDirectory st+ if isDir then return ()+ else throw e+ ) `catch` ((\_ -> return ()) :: IOException -> IO ())+ | otherwise -> throw e++{- | @'removeDirectory' dir@ removes an existing directory /dir/. The+implementation may specify additional constraints which must be+satisfied before a directory can be removed (e.g. the directory has to+be empty, or may not be in use by other processes). It is not legal+for an implementation to partially remove a directory unless the+entire directory is removed. A conformant implementation need not+support directory removal in all situations (e.g. removal of the root+directory).++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+EIO++* 'InvalidArgument'+The operand is not a valid directory name.+[ENAMETOOLONG, ELOOP]++* 'isDoesNotExistError' \/ 'NoSuchThing'+The directory does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY, ENOTEMPTY, EEXIST]@++* 'UnsupportedOperation'+The implementation does not support removal in this situation.+@[EINVAL]@++* 'InappropriateType'+The operand refers to an existing non-directory object.+@[ENOTDIR]@++-}++removeDirectory :: FilePath -> IO ()+removeDirectory path =+ Win32.removeDirectory path++-- | @'removeDirectoryRecursive' dir@ removes an existing directory /dir/+-- together with its content and all subdirectories. Be careful,+-- if the directory contains symlinks, the function will follow them.+removeDirectoryRecursive :: FilePath -> IO ()+removeDirectoryRecursive startLoc = do+ cont <- getDirectoryContents startLoc+ sequence_ [rm (startLoc </> x) | x <- cont, x /= "." && x /= ".."]+ removeDirectory startLoc+ where+ rm :: FilePath -> IO ()+ rm f = do temp <- try (removeFile f)+ case temp of+ Left e -> do isDir <- doesDirectoryExist f+ -- If f is not a directory, re-throw the error+ unless isDir $ throw (e :: SomeException)+ removeDirectoryRecursive f+ Right _ -> return ()++{- |'removeFile' /file/ removes the directory entry for an existing file+/file/, where /file/ is not itself a directory. The+implementation may specify additional constraints which must be+satisfied before a file can be removed (e.g. the file may not be in+use by other processes).++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid file name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The file does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY]@++* 'InappropriateType'+The operand refers to an existing directory.+@[EPERM, EINVAL]@++-}++removeFile :: FilePath -> IO ()+removeFile path =+ Win32.deleteFile path++{- |@'renameDirectory' old new@ changes the name of an existing+directory from /old/ to /new/. If the /new/ directory+already exists, it is atomically replaced by the /old/ directory.+If the /new/ directory is neither the /old/ directory nor an+alias of the /old/ directory, it is removed as if by+'removeDirectory'. A conformant implementation need not support+renaming directories in all situations (e.g. renaming to an existing+directory, or across different physical devices), but the constraints+must be documented.++On Win32 platforms, @renameDirectory@ fails if the /new/ directory already+exists.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+Either operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The original directory does not exist, or there is no path to the target.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.+@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY, ENOTEMPTY, EEXIST]@++* 'UnsupportedOperation'+The implementation does not support renaming in this situation.+@[EINVAL, EXDEV]@++* 'InappropriateType'+Either path refers to an existing non-directory object.+@[ENOTDIR, EISDIR]@++-}++renameDirectory :: FilePath -> FilePath -> IO ()+renameDirectory opath npath = do+ -- XXX this test isn't performed atomically with the following rename+ -- ToDo: use Win32 API+ withFileStatus "renameDirectory" opath $ \st -> do+ is_dir <- isDirectory st+ if (not is_dir)+ then ioException (ioeSetErrorString+ (mkIOError InappropriateType "renameDirectory" Nothing (Just opath))+ "not a directory")+ else do+ Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++{- |@'renameFile' old new@ changes the name of an existing file system+object from /old/ to /new/. If the /new/ object already+exists, it is atomically replaced by the /old/ object. Neither+path may refer to an existing directory. A conformant implementation+need not support renaming files in all situations (e.g. renaming+across different physical devices), but the constraints must be+documented.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+Either operand is not a valid file name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The original file does not exist, or there is no path to the target.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EROFS, EACCES, EPERM]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.+@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@++* 'UnsatisfiedConstraints'+Implementation-dependent constraints are not satisfied.+@[EBUSY]@++* 'UnsupportedOperation'+The implementation does not support renaming in this situation.+@[EXDEV]@++* 'InappropriateType'+Either path refers to an existing directory.+@[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]@++-}++renameFile :: FilePath -> FilePath -> IO ()+renameFile opath npath = do+ -- XXX this test isn't performed atomically with the following rename+ -- ToDo: use Win32 API+ withFileOrSymlinkStatus "renameFile" opath $ \st -> do+ is_dir <- isDirectory st+ if is_dir+ then ioException (ioeSetErrorString+ (mkIOError InappropriateType "renameFile" Nothing (Just opath))+ "is a directory")+ else do+ Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++{- |@'copyFile' old new@ copies the existing file from /old/ to /new/.+If the /new/ file already exists, it is atomically replaced by the /old/ file.+Neither path may refer to an existing directory. The permissions of /old/ are+copied to /new/, if possible.+-}++copyFile :: FilePath -> FilePath -> IO ()+copyFile fromFPath toFPath =+ copy `Prelude.catch` (\exc -> throw $ ioeSetLocation exc "copyFile")+ where copy = bracket (openBinaryFile fromFPath ReadMode) hClose $ \hFrom ->+ bracketOnError openTmp cleanTmp $ \(tmpFPath, hTmp) ->+ do allocaBytes bufferSize $ copyContents hFrom hTmp+ hClose hTmp+ ignoreIOExceptions $ copyPermissions fromFPath tmpFPath+ renameFile tmpFPath toFPath+ openTmp = openBinaryTempFile (takeDirectory toFPath) ".copyFile.tmp"+ cleanTmp (tmpFPath, hTmp)+ = do ignoreIOExceptions $ hClose hTmp+ ignoreIOExceptions $ removeFile tmpFPath+ bufferSize = 1024++ copyContents hFrom hTo buffer = do+ count <- hGetBuf hFrom buffer bufferSize+ when (count > 0) $ do+ hPutBuf hTo buffer count+ copyContents hFrom hTo buffer++ ignoreIOExceptions io = io `catch` ioExceptionIgnorer+ ioExceptionIgnorer :: IOException -> IO ()+ ioExceptionIgnorer _ = return ()++-- | Given path referring to a file or directory, returns a+-- canonicalized path, with the intent that two paths referring+-- to the same file\/directory will map to the same canonicalized+-- path. Note that it is impossible to guarantee that the+-- implication (same file\/dir \<=\> same canonicalizedPath) holds+-- in either direction: this function can make only a best-effort+-- attempt.+canonicalizePath :: FilePath -> IO FilePath+canonicalizePath fpath =+ do path <- Win32.getFullPathName fpath+ return (normalise path)+ -- normalise does more stuff, like upper-casing the drive letter+++-- | 'makeRelative' the current directory.+makeRelativeToCurrentDirectory :: FilePath -> IO FilePath+makeRelativeToCurrentDirectory x = do+ cur <- getCurrentDirectory+ return $ makeRelative cur x++-- | Given an executable file name, searches for such file in the+-- directories listed in system PATH. The returned value is the path+-- to the found executable or Nothing if an executable with the given+-- name was not found. For example (findExecutable \"ghc\") gives you+-- the path to GHC.+--+-- The path returned by 'findExecutable' corresponds to the+-- program that would be executed by 'System.Process.createProcess'+-- when passed the same string (as a RawCommand, not a ShellCommand).+--+-- On Windows, 'findExecutable' calls the Win32 function 'SearchPath',+-- which may search other places before checking the directories in+-- @PATH@. Where it actually searches depends on registry settings,+-- but notably includes the directory containing the current+-- executable. See+-- <http://msdn.microsoft.com/en-us/library/aa365527.aspx> for more+-- details.+--+findExecutable :: String -> IO (Maybe FilePath)+findExecutable binary =+ Win32.searchPath Nothing binary ('.':exeExtension)+++{- |@'getDirectoryContents' dir@ returns a list of /all/ entries+in /dir/.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The directory does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EACCES]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.+@[EMFILE, ENFILE]@++* 'InappropriateType'+The path refers to an existing non-directory object.+@[ENOTDIR]@++-}++getDirectoryContents :: FilePath -> IO [FilePath]+getDirectoryContents path =+ modifyIOError ((`ioeSetFileName` path) .+ (`ioeSetLocation` "getDirectoryContents")) $ do+ bracket+ (Win32.findFirstFile (path </> "*"))+ (\(h,_) -> Win32.findClose h)+ (\(h,fdat) -> loop h fdat [])+ where+ -- we needn't worry about empty directories: adirectory always+ -- has at least "." and ".." entries+ loop :: Win32.HANDLE -> Win32.FindData -> [FilePath] -> IO [FilePath]+ loop h fdat acc = do+ filename <- Win32.getFindDataFileName fdat+ more <- Win32.findNextFile h fdat+ if more+ then loop h fdat (filename:acc)+ else return (filename:acc)+ -- no need to reverse, ordering is undefined++{- |If the operating system has a notion of current directories,+'getCurrentDirectory' returns an absolute path to the+current directory of the calling process.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+There is no path referring to the current directory.+@[EPERM, ENOENT, ESTALE...]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EACCES]@++* 'ResourceExhausted'+Insufficient resources are available to perform the operation.++* 'UnsupportedOperation'+The operating system has no notion of current directory.++-}+getCurrentDirectory :: IO FilePath+getCurrentDirectory = do+ Win32.getCurrentDirectory++{- |If the operating system has a notion of current directories,+@'setCurrentDirectory' dir@ changes the current+directory of the calling process to /dir/.++The operation may fail with:++* 'HardwareFault'+A physical I\/O error has occurred.+@[EIO]@++* 'InvalidArgument'+The operand is not a valid directory name.+@[ENAMETOOLONG, ELOOP]@++* 'isDoesNotExistError' \/ 'NoSuchThing'+The directory does not exist.+@[ENOENT, ENOTDIR]@++* 'isPermissionError' \/ 'PermissionDenied'+The process has insufficient privileges to perform the operation.+@[EACCES]@++* 'UnsupportedOperation'+The operating system has no notion of current directory, or the+current directory cannot be dynamically changed.++* 'InappropriateType'+The path refers to an existing non-directory object.+@[ENOTDIR]@++-}++setCurrentDirectory :: FilePath -> IO ()+setCurrentDirectory path =+ Win32.setCurrentDirectory path++{- |The operation 'doesDirectoryExist' returns 'True' if the argument file+exists and is a directory, and 'False' otherwise.+-}++doesDirectoryExist :: FilePath -> IO Bool+doesDirectoryExist name =+ (withFileStatus "doesDirectoryExist" name $ \st -> isDirectory st)+ `catch` ((\ _ -> return False) :: IOException -> IO Bool)++{- |The operation 'doesFileExist' returns 'True'+if the argument file exists and is not a directory, and 'False' otherwise.+-}++doesFileExist :: FilePath -> IO Bool+doesFileExist name =+ (withFileStatus "doesFileExist" name $ \st -> do b <- isDirectory st; return (not b))+ `catch` ((\ _ -> return False) :: IOException -> IO Bool)++{- |The 'getModificationTime' operation returns the+clock time at which the file or directory was last modified.++The operation may fail with:++* 'isPermissionError' if the user is not permitted to access+ the modification time; or++* 'isDoesNotExistError' if the file or directory does not exist.++-}++getModificationTime :: FilePath -> IO ClockTime+getModificationTime name = do+ -- ToDo: use Win32 API+ withFileStatus "getModificationTime" name $ \ st -> do+ modificationTime st+++withFileStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileStatus loc name f = do+ modifyIOError (`ioeSetFileName` name) $+ allocaBytes sizeof_stat $ \p ->+ withFilePath (fileNameEndClean name) $ \s -> do+ throwErrnoIfMinus1Retry_ loc (c_stat s p)++withFileOrSymlinkStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileOrSymlinkStatus loc name f = do+ modifyIOError (`ioeSetFileName` name) $+ allocaBytes sizeof_stat $ \p ->+ withFilePath name $ \s -> do+ throwErrnoIfMinus1Retry_ loc (lstat s p)++modificationTime :: Ptr CStat -> IO ClockTime+modificationTime stat = do+ mtime <- st_mtime stat+ let realToInteger = round . realToFrac :: Real a => a -> Integer+ return (TOD (realToInteger (mtime :: CTime)) 0)++isDirectory :: Ptr CStat -> IO Bool+isDirectory stat = do+ mode <- st_mode stat+ return (s_isdir mode)++fileNameEndClean :: String -> String+fileNameEndClean name = if isDrive name then addTrailingPathSeparator name+ else dropTrailingPathSeparator name++foreign import ccall unsafe "HsDirectory.h __hscore_S_IRUSR" s_IRUSR :: CMode+foreign import ccall unsafe "HsDirectory.h __hscore_S_IWUSR" s_IWUSR :: CMode+foreign import ccall unsafe "HsDirectory.h __hscore_S_IXUSR" s_IXUSR :: CMode+foreign import ccall unsafe "__hscore_S_IFDIR" s_IFDIR :: CMode+++foreign import ccall unsafe "__hscore_long_path_size"+ long_path_size :: Int++{- | Returns the current user's home directory.++The directory returned is expected to be writable by the current user,+but note that it isn't generally considered good practice to store+application-specific data here; use 'getAppUserDataDirectory'+instead.++On Unix, 'getHomeDirectory' returns the value of the @HOME@+environment variable. On Windows, the system is queried for a+suitable path; a typical path might be+@C:/Documents And Settings/user@.++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of home directory.++* 'isDoesNotExistError'+The home directory for the current user does not exist, or+cannot be found.+-}+getHomeDirectory :: IO FilePath+getHomeDirectory =+ modifyIOError ((`ioeSetLocation` "getHomeDirectory")) $ do+ r <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_PROFILE nullPtr 0+ case (r :: Either IOException String) of+ Right s -> return s+ Left _ -> do+ r1 <- try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_WINDOWS nullPtr 0+ case r1 of+ Right s -> return s+ Left e -> ioError (e :: IOException)++{- | Returns the pathname of a directory in which application-specific+data for the current user can be stored. The result of+'getAppUserDataDirectory' for a given application is specific to+the current user.++The argument should be the name of the application, which will be used+to construct the pathname (so avoid using unusual characters that+might result in an invalid pathname).++Note: the directory may not actually exist, and may need to be created+first. It is expected that the parent directory exists and is+writable.++On Unix, this function returns @$HOME\/.appName@. On Windows, a+typical path might be++> C:/Documents And Settings/user/Application Data/appName++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of application-specific data directory.++* 'isDoesNotExistError'+The home directory for the current user does not exist, or+cannot be found.+-}+getAppUserDataDirectory :: String -> IO FilePath+getAppUserDataDirectory appName = do+ modifyIOError ((`ioeSetLocation` "getAppUserDataDirectory")) $ do+ s <- Win32.sHGetFolderPath nullPtr Win32.cSIDL_APPDATA nullPtr 0+ return (s++'\\':appName)++{- | Returns the current user's document directory.++The directory returned is expected to be writable by the current user,+but note that it isn't generally considered good practice to store+application-specific data here; use 'getAppUserDataDirectory'+instead.++On Unix, 'getUserDocumentsDirectory' returns the value of the @HOME@+environment variable. On Windows, the system is queried for a+suitable path; a typical path might be+@C:\/Documents and Settings\/user\/My Documents@.++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of document directory.++* 'isDoesNotExistError'+The document directory for the current user does not exist, or+cannot be found.+-}+getUserDocumentsDirectory :: IO FilePath+getUserDocumentsDirectory = do+ modifyIOError ((`ioeSetLocation` "getUserDocumentsDirectory")) $ do+ Win32.sHGetFolderPath nullPtr Win32.cSIDL_PERSONAL nullPtr 0++{- | Returns the current directory for temporary files.++On Unix, 'getTemporaryDirectory' returns the value of the @TMPDIR@+environment variable or \"\/tmp\" if the variable isn\'t defined.+On Windows, the function checks for the existence of environment variables in+the following order and uses the first path found:++*+TMP environment variable.++*+TEMP environment variable.++*+USERPROFILE environment variable.++*+The Windows directory++The operation may fail with:++* 'UnsupportedOperation'+The operating system has no notion of temporary directory.++The function doesn\'t verify whether the path exists.+-}+getTemporaryDirectory :: IO FilePath+getTemporaryDirectory = do+ Win32.getTemporaryDirectory++-- ToDo: This should be determined via autoconf (AC_EXEEXT)+-- | Extension for executable files+-- (typically @\"\"@ on Unix and @\"exe\"@ on Windows or OS\/2)+exeExtension :: String+exeExtension = "exe"
+ tests/examples/Directory.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Directory.hs.parser.golden view
@@ -0,0 +1,29264 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 1 914 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 1 1 1 1+ , SrcSpan "tests/examples/Directory.hs" 17 1 17 1+ , SrcSpan "tests/examples/Directory.hs" 17 1 17 1+ , SrcSpan "tests/examples/Directory.hs" 72 1 72 1+ , SrcSpan "tests/examples/Directory.hs" 73 1 73 1+ , SrcSpan "tests/examples/Directory.hs" 75 1 75 1+ , SrcSpan "tests/examples/Directory.hs" 76 1 76 1+ , SrcSpan "tests/examples/Directory.hs" 77 1 77 1+ , SrcSpan "tests/examples/Directory.hs" 78 1 78 1+ , SrcSpan "tests/examples/Directory.hs" 79 1 79 1+ , SrcSpan "tests/examples/Directory.hs" 80 1 80 1+ , SrcSpan "tests/examples/Directory.hs" 81 1 81 1+ , SrcSpan "tests/examples/Directory.hs" 83 1 83 1+ , SrcSpan "tests/examples/Directory.hs" 84 1 84 1+ , SrcSpan "tests/examples/Directory.hs" 88 1 88 1+ , SrcSpan "tests/examples/Directory.hs" 90 1 90 1+ , SrcSpan "tests/examples/Directory.hs" 92 1 92 1+ , SrcSpan "tests/examples/Directory.hs" 93 1 93 1+ , SrcSpan "tests/examples/Directory.hs" 94 1 94 1+ , SrcSpan "tests/examples/Directory.hs" 134 1 134 1+ , SrcSpan "tests/examples/Directory.hs" 152 1 152 1+ , SrcSpan "tests/examples/Directory.hs" 153 1 153 1+ , SrcSpan "tests/examples/Directory.hs" 189 1 189 1+ , SrcSpan "tests/examples/Directory.hs" 190 1 190 1+ , SrcSpan "tests/examples/Directory.hs" 205 1 205 1+ , SrcSpan "tests/examples/Directory.hs" 208 1 208 1+ , SrcSpan "tests/examples/Directory.hs" 209 1 209 1+ , SrcSpan "tests/examples/Directory.hs" 257 1 257 1+ , SrcSpan "tests/examples/Directory.hs" 258 1 258 1+ , SrcSpan "tests/examples/Directory.hs" 264 1 264 1+ , SrcSpan "tests/examples/Directory.hs" 267 1 267 1+ , SrcSpan "tests/examples/Directory.hs" 343 1 343 1+ , SrcSpan "tests/examples/Directory.hs" 344 1 344 1+ , SrcSpan "tests/examples/Directory.hs" 350 1 350 1+ , SrcSpan "tests/examples/Directory.hs" 351 1 351 1+ , SrcSpan "tests/examples/Directory.hs" 399 1 399 1+ , SrcSpan "tests/examples/Directory.hs" 400 1 400 1+ , SrcSpan "tests/examples/Directory.hs" 452 1 452 1+ , SrcSpan "tests/examples/Directory.hs" 453 1 453 1+ , SrcSpan "tests/examples/Directory.hs" 509 1 509 1+ , SrcSpan "tests/examples/Directory.hs" 510 1 510 1+ , SrcSpan "tests/examples/Directory.hs" 528 1 528 1+ , SrcSpan "tests/examples/Directory.hs" 529 1 529 1+ , SrcSpan "tests/examples/Directory.hs" 560 1 560 1+ , SrcSpan "tests/examples/Directory.hs" 561 1 561 1+ , SrcSpan "tests/examples/Directory.hs" 568 1 568 1+ , SrcSpan "tests/examples/Directory.hs" 569 1 569 1+ , SrcSpan "tests/examples/Directory.hs" 591 1 591 1+ , SrcSpan "tests/examples/Directory.hs" 592 1 592 1+ , SrcSpan "tests/examples/Directory.hs" 627 1 627 1+ , SrcSpan "tests/examples/Directory.hs" 628 1 628 1+ , SrcSpan "tests/examples/Directory.hs" 672 1 672 1+ , SrcSpan "tests/examples/Directory.hs" 673 1 673 1+ , SrcSpan "tests/examples/Directory.hs" 708 1 708 1+ , SrcSpan "tests/examples/Directory.hs" 709 1 709 1+ , SrcSpan "tests/examples/Directory.hs" 716 1 716 1+ , SrcSpan "tests/examples/Directory.hs" 717 1 717 1+ , SrcSpan "tests/examples/Directory.hs" 725 1 725 1+ , SrcSpan "tests/examples/Directory.hs" 726 1 726 1+ , SrcSpan "tests/examples/Directory.hs" 742 1 742 1+ , SrcSpan "tests/examples/Directory.hs" 743 1 743 1+ , SrcSpan "tests/examples/Directory.hs" 749 1 749 1+ , SrcSpan "tests/examples/Directory.hs" 750 1 750 1+ , SrcSpan "tests/examples/Directory.hs" 756 1 756 1+ , SrcSpan "tests/examples/Directory.hs" 757 1 757 1+ , SrcSpan "tests/examples/Directory.hs" 763 1 763 1+ , SrcSpan "tests/examples/Directory.hs" 764 1 764 1+ , SrcSpan "tests/examples/Directory.hs" 769 1 769 1+ , SrcSpan "tests/examples/Directory.hs" 770 1 770 1+ , SrcSpan "tests/examples/Directory.hs" 774 1 774 1+ , SrcSpan "tests/examples/Directory.hs" 775 1 775 1+ , SrcSpan "tests/examples/Directory.hs" 778 1 778 1+ , SrcSpan "tests/examples/Directory.hs" 779 1 779 1+ , SrcSpan "tests/examples/Directory.hs" 780 1 780 1+ , SrcSpan "tests/examples/Directory.hs" 781 1 781 1+ , SrcSpan "tests/examples/Directory.hs" 784 1 784 1+ , SrcSpan "tests/examples/Directory.hs" 808 1 808 1+ , SrcSpan "tests/examples/Directory.hs" 809 1 809 1+ , SrcSpan "tests/examples/Directory.hs" 847 1 847 1+ , SrcSpan "tests/examples/Directory.hs" 848 1 848 1+ , SrcSpan "tests/examples/Directory.hs" 874 1 874 1+ , SrcSpan "tests/examples/Directory.hs" 875 1 875 1+ , SrcSpan "tests/examples/Directory.hs" 905 1 905 1+ , SrcSpan "tests/examples/Directory.hs" 906 1 906 1+ , SrcSpan "tests/examples/Directory.hs" 912 1 912 1+ , SrcSpan "tests/examples/Directory.hs" 913 1 913 1+ , SrcSpan "tests/examples/Directory.hs" 914 1 914 1+ , SrcSpan "tests/examples/Directory.hs" 914 1 914 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 17 1 70 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 17 1 17 7+ , SrcSpan "tests/examples/Directory.hs" 70 6 70 11+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 17 8 17 24+ , srcInfoPoints = []+ }+ "System.Directory")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 18 4 70 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 18 4 18 5+ , SrcSpan "tests/examples/Directory.hs" 23 5 23 6+ , SrcSpan "tests/examples/Directory.hs" 24 5 24 6+ , SrcSpan "tests/examples/Directory.hs" 25 5 25 6+ , SrcSpan "tests/examples/Directory.hs" 26 5 26 6+ , SrcSpan "tests/examples/Directory.hs" 28 5 28 6+ , SrcSpan "tests/examples/Directory.hs" 29 5 29 6+ , SrcSpan "tests/examples/Directory.hs" 30 5 30 6+ , SrcSpan "tests/examples/Directory.hs" 33 5 33 6+ , SrcSpan "tests/examples/Directory.hs" 34 5 34 6+ , SrcSpan "tests/examples/Directory.hs" 35 5 35 6+ , SrcSpan "tests/examples/Directory.hs" 36 5 36 6+ , SrcSpan "tests/examples/Directory.hs" 39 5 39 6+ , SrcSpan "tests/examples/Directory.hs" 40 5 40 6+ , SrcSpan "tests/examples/Directory.hs" 41 5 41 6+ , SrcSpan "tests/examples/Directory.hs" 43 5 43 6+ , SrcSpan "tests/examples/Directory.hs" 44 5 44 6+ , SrcSpan "tests/examples/Directory.hs" 45 5 45 6+ , SrcSpan "tests/examples/Directory.hs" 48 5 48 6+ , SrcSpan "tests/examples/Directory.hs" 49 5 49 6+ , SrcSpan "tests/examples/Directory.hs" 55 5 55 6+ , SrcSpan "tests/examples/Directory.hs" 63 5 63 6+ , SrcSpan "tests/examples/Directory.hs" 64 5 64 6+ , SrcSpan "tests/examples/Directory.hs" 65 5 65 6+ , SrcSpan "tests/examples/Directory.hs" 69 5 69 6+ , SrcSpan "tests/examples/Directory.hs" 70 4 70 5+ ]+ }+ [ EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 22 7 22 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 22 7 22 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 22 7 22 22+ , srcInfoPoints = []+ }+ "createDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 23 7 23 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 23 7 23 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 23 7 23 31+ , srcInfoPoints = []+ }+ "createDirectoryIfMissing"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 24 7 24 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 24 7 24 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 24 7 24 22+ , srcInfoPoints = []+ }+ "removeDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 25 7 25 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 25 7 25 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 25 7 25 31+ , srcInfoPoints = []+ }+ "removeDirectoryRecursive"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 26 7 26 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 26 7 26 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 26 7 26 22+ , srcInfoPoints = []+ }+ "renameDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 28 7 28 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 28 7 28 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 28 7 28 27+ , srcInfoPoints = []+ }+ "getDirectoryContents"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 29 7 29 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 29 7 29 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 29 7 29 26+ , srcInfoPoints = []+ }+ "getCurrentDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 30 7 30 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 30 7 30 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 30 7 30 26+ , srcInfoPoints = []+ }+ "setCurrentDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 33 7 33 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 33 7 33 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 33 7 33 23+ , srcInfoPoints = []+ }+ "getHomeDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 34 7 34 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 34 7 34 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 34 7 34 30+ , srcInfoPoints = []+ }+ "getAppUserDataDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 35 7 35 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 35 7 35 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 35 7 35 32+ , srcInfoPoints = []+ }+ "getUserDocumentsDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 36 7 36 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 36 7 36 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 36 7 36 28+ , srcInfoPoints = []+ }+ "getTemporaryDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 39 7 39 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 39 7 39 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 39 7 39 17+ , srcInfoPoints = []+ }+ "removeFile"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 40 7 40 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 40 7 40 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 40 7 40 17+ , srcInfoPoints = []+ }+ "renameFile"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 41 7 41 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 41 7 41 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 41 7 41 15+ , srcInfoPoints = []+ }+ "copyFile"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 43 7 43 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 43 7 43 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 43 7 43 23+ , srcInfoPoints = []+ }+ "canonicalizePath"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 44 7 44 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 44 7 44 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 44 7 44 37+ , srcInfoPoints = []+ }+ "makeRelativeToCurrentDirectory"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 45 7 45 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 45 7 45 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 45 7 45 21+ , srcInfoPoints = []+ }+ "findExecutable"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 48 7 48 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 48 7 48 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 48 7 48 20+ , srcInfoPoints = []+ }+ "doesFileExist"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 49 7 49 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 49 7 49 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 49 7 49 25+ , srcInfoPoints = []+ }+ "doesDirectoryExist"))+ , EThingWith+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 55 7 61 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 55 18 55 19+ , SrcSpan "tests/examples/Directory.hs" 56 16 56 17+ , SrcSpan "tests/examples/Directory.hs" 57 13 57 14+ , SrcSpan "tests/examples/Directory.hs" 58 13 58 14+ , SrcSpan "tests/examples/Directory.hs" 59 15 59 16+ , SrcSpan "tests/examples/Directory.hs" 61 7 61 8+ ]+ }+ (NoWildcard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+ , srcInfoPoints = []+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 55 7 55 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 55 7 55 18+ , srcInfoPoints = []+ }+ "Permissions"))+ [ ConName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 56 5 56 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 56 5 56 16+ , srcInfoPoints = []+ }+ "Permissions")+ , VarName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 57 5 57 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 57 5 57 13+ , srcInfoPoints = []+ }+ "readable")+ , VarName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 58 5 58 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 58 5 58 13+ , srcInfoPoints = []+ }+ "writable")+ , VarName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 59 5 59 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 59 5 59 15+ , srcInfoPoints = []+ }+ "executable")+ , VarName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 60 5 60 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 60 5 60 15+ , srcInfoPoints = []+ }+ "searchable")+ ]+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 63 7 63 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 63 7 63 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 63 7 63 21+ , srcInfoPoints = []+ }+ "getPermissions"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 64 7 64 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 64 7 64 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 64 7 64 21+ , srcInfoPoints = []+ }+ "setPermissions"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 65 7 65 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 65 7 65 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 65 7 65 22+ , srcInfoPoints = []+ }+ "copyPermissions"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 69 7 69 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 69 7 69 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 69 7 69 26+ , srcInfoPoints = []+ }+ "getModificationTime"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 1 1 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 1 1 1 13+ , SrcSpan "tests/examples/Directory.hs" 1 38 1 39+ , SrcSpan "tests/examples/Directory.hs" 1 65 1 68+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 14 1 38+ , srcInfoPoints = []+ }+ "ForeignFunctionInterface"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 1 40 1 64+ , srcInfoPoints = []+ }+ "NondecreasingIndentation"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 1 72 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 72 1 72 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 8 72 15+ , srcInfoPoints = []+ }+ "Prelude"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 16 72 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 72 16 72 22+ , SrcSpan "tests/examples/Directory.hs" 72 23 72 24+ , SrcSpan "tests/examples/Directory.hs" 72 31 72 32+ ]+ }+ True+ [ IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 25 72 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 72 25 72 30+ , srcInfoPoints = []+ }+ "catch")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 73 1 73 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 73 1 73 7+ , SrcSpan "tests/examples/Directory.hs" 73 8 73 17+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 73 18 73 25+ , srcInfoPoints = []+ }+ "Prelude"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 1 75 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 75 1 75 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 8 75 21+ , srcInfoPoints = []+ }+ "Control.Monad"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 22 75 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 75 22 75 23+ , SrcSpan "tests/examples/Directory.hs" 75 28 75 29+ ]+ }+ False+ [ IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 23 75 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 75 23 75 28+ , srcInfoPoints = []+ }+ "guard")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 1 76 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 76 1 76 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 8 76 26+ , srcInfoPoints = []+ }+ "System.Environment"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 32 76 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 76 32 76 33+ , SrcSpan "tests/examples/Directory.hs" 76 41 76 42+ ]+ }+ False+ [ IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 34 76 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 76 34 76 40+ , srcInfoPoints = []+ }+ "getEnv")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 77 1 77 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 77 1 77 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 77 8 77 23+ , srcInfoPoints = []+ }+ "System.FilePath"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 78 1 78 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 78 1 78 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 78 8 78 17+ , srcInfoPoints = []+ }+ "System.IO"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 1 79 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 79 1 79 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 8 79 23+ , srcInfoPoints = []+ }+ "System.IO.Error"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 24 79 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 79 24 79 30+ , SrcSpan "tests/examples/Directory.hs" 79 31 79 32+ , SrcSpan "tests/examples/Directory.hs" 79 38 79 39+ , SrcSpan "tests/examples/Directory.hs" 79 44 79 45+ ]+ }+ True+ [ IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 33 79 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 33 79 38+ , srcInfoPoints = []+ }+ "catch")+ , IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 40 79 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 79 40 79 43+ , srcInfoPoints = []+ }+ "try")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 1 80 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 80 1 80 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 8 80 21+ , srcInfoPoints = []+ }+ "Control.Monad"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 32 80 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 80 32 80 33+ , SrcSpan "tests/examples/Directory.hs" 80 38 80 39+ , SrcSpan "tests/examples/Directory.hs" 80 47 80 48+ ]+ }+ False+ [ IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 34 80 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 34 80 38+ , srcInfoPoints = []+ }+ "when")+ , IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 40 80 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 80 40 80 46+ , srcInfoPoints = []+ }+ "unless")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 81 1 81 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 81 1 81 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 81 8 81 30+ , srcInfoPoints = []+ }+ "Control.Exception.Base"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 83 1 83 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 83 1 83 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 83 8 83 15+ , srcInfoPoints = []+ }+ "Foreign"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 84 1 84 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 84 1 84 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 84 8 84 17+ , srcInfoPoints = []+ }+ "Foreign.C"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 1 88 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 88 1 88 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 8 88 19+ , srcInfoPoints = []+ }+ "System.Time"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 32 88 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 88 32 88 33+ , SrcSpan "tests/examples/Directory.hs" 88 48 88 49+ ]+ }+ False+ [ IThingAll+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 34 88 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 88 43 88 44+ , SrcSpan "tests/examples/Directory.hs" 88 44 88 46+ , SrcSpan "tests/examples/Directory.hs" 88 46 88 47+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 88 34 88 43+ , srcInfoPoints = []+ }+ "ClockTime")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 1 90 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 90 1 90 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 8 90 24+ , srcInfoPoints = []+ }+ "GHC.IO.Exception"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 25 90 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 90 25 90 26+ , SrcSpan "tests/examples/Directory.hs" 90 42 90 43+ , SrcSpan "tests/examples/Directory.hs" 90 59 90 60+ , SrcSpan "tests/examples/Directory.hs" 90 73 90 74+ ]+ }+ False+ [ IThingAll+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 27 90 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 90 38 90 39+ , SrcSpan "tests/examples/Directory.hs" 90 39 90 41+ , SrcSpan "tests/examples/Directory.hs" 90 41 90 42+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 27 90 38+ , srcInfoPoints = []+ }+ "IOException")+ , IThingAll+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 44 90 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 90 55 90 56+ , SrcSpan "tests/examples/Directory.hs" 90 56 90 58+ , SrcSpan "tests/examples/Directory.hs" 90 58 90 59+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 44 90 55+ , srcInfoPoints = []+ }+ "IOErrorType")+ , IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 61 90 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 90 61 90 72+ , srcInfoPoints = []+ }+ "ioException")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 92 1 92 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 92 1 92 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 92 8 92 26+ , srcInfoPoints = []+ }+ "System.Posix.Types"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 93 1 93 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 93 1 93 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 93 8 93 30+ , srcInfoPoints = []+ }+ "System.Posix.Internals"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 94 1 94 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 94 1 94 7+ , SrcSpan "tests/examples/Directory.hs" 94 8 94 17+ , SrcSpan "tests/examples/Directory.hs" 94 31 94 33+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 94 18 94 30+ , srcInfoPoints = []+ }+ "System.Win32"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 94 34 94 39+ , srcInfoPoints = []+ }+ "Win32")+ , importSpecs = Nothing+ }+ ]+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 1 138 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 135 2 135 3 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 1 134 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 6 134 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 134 6 134 17+ , srcInfoPoints = []+ }+ "Permissions"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 135 4 138 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 135 16 135 17+ , SrcSpan "tests/examples/Directory.hs" 138 4 138 5+ ]+ }+ Nothing+ Nothing+ (RecDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 135 4 138 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 135 16 135 17+ , SrcSpan "tests/examples/Directory.hs" 138 4 138 5+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 135 4 135 15+ , srcInfoPoints = []+ }+ "Permissions")+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 136 5 137 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 136 13 136 14+ , SrcSpan "tests/examples/Directory.hs" 136 25 136 26+ , SrcSpan "tests/examples/Directory.hs" 137 15 137 16+ , SrcSpan "tests/examples/Directory.hs" 137 28 137 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 136 5 136 13+ , srcInfoPoints = []+ }+ "readable"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 136 17 136 25+ , srcInfoPoints = []+ }+ "writable"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 5 137 15+ , srcInfoPoints = []+ }+ "executable"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 17 137 27+ , srcInfoPoints = []+ }+ "searchable"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 31 137 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 31 137 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 137 31 137 35+ , srcInfoPoints = []+ }+ "Bool")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 6 138 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 138 6 138 14+ , SrcSpan "tests/examples/Directory.hs" 138 15 138 16+ , SrcSpan "tests/examples/Directory.hs" 138 18 138 19+ , SrcSpan "tests/examples/Directory.hs" 138 23 138 24+ , SrcSpan "tests/examples/Directory.hs" 138 29 138 30+ , SrcSpan "tests/examples/Directory.hs" 138 35 138 36+ ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 16 138 18+ , srcInfoPoints = []+ }+ "Eq")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 20 138 23+ , srcInfoPoints = []+ }+ "Ord")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 25 138 29+ , srcInfoPoints = []+ }+ "Read")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 138 31 138 35+ , srcInfoPoints = []+ }+ "Show")))+ ]+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 1 152 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 152 16 152 18 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 1 152 15+ , srcInfoPoints = []+ }+ "getPermissions"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 152 28 152 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 19 152 27+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 45+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 31 152 33+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 34 152 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 34 152 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 152 34 152 45+ , srcInfoPoints = []+ }+ "Permissions")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 1 175 5+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 1 175 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 1 153 15+ , srcInfoPoints = []+ }+ "getPermissions")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 16 153 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 16 153 20+ , srcInfoPoints = []+ }+ "name")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 21 175 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 153 21 153 22 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 153 23 175 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 153 23 153 25+ , SrcSpan "tests/examples/Directory.hs" 154 3 154 3+ , SrcSpan "tests/examples/Directory.hs" 189 1 189 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 3 175 5+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 3 175 5+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 3 154 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 3 154 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 3 154 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 3 154 15+ , srcInfoPoints = []+ }+ "withFilePath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 16 154 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 16 154 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 16 154 20+ , srcInfoPoints = []+ }+ "name"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 21 154 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 21 154 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 21 154 22+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 154 23 175 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 154 23 154 24+ , SrcSpan "tests/examples/Directory.hs" 154 26 154 28+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 24 154 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 24 154 25+ , srcInfoPoints = []+ }+ "s")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 154 29 175 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 154 29 154 31+ , SrcSpan "tests/examples/Directory.hs" 161 3 161 3+ , SrcSpan "tests/examples/Directory.hs" 161 3 161 3+ , SrcSpan "tests/examples/Directory.hs" 189 1 189 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 161 3 175 5+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 161 3 175 5+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 161 3 161 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 3 161 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 3 161 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 161+ 3+ 161+ 14+ , srcInfoPoints = []+ }+ "allocaBytes")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 15 161 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 15 161 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 161+ 15+ 161+ 26+ , srcInfoPoints = []+ }+ "sizeof_stat"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 161 27 161 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 27 161 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 27 161 28+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 161 29 175 5+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 161 29 161 30+ , SrcSpan+ "tests/examples/Directory.hs" 161 38 161 40+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 31 161 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 161+ 31+ 161+ 37+ , srcInfoPoints = []+ }+ "p_stat")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 161 41 175 5+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 161 41 161 43+ , SrcSpan+ "tests/examples/Directory.hs" 162 3 162 3+ , SrcSpan+ "tests/examples/Directory.hs" 162 3 162 3+ , SrcSpan+ "tests/examples/Directory.hs" 163 3 163 3+ , SrcSpan+ "tests/examples/Directory.hs" 164 3 164 3+ , SrcSpan+ "tests/examples/Directory.hs" 165 3 165 3+ , SrcSpan+ "tests/examples/Directory.hs" 166 3 166 3+ , SrcSpan+ "tests/examples/Directory.hs" 167 3 167 3+ , SrcSpan+ "tests/examples/Directory.hs" 168 3 168 3+ , SrcSpan+ "tests/examples/Directory.hs" 189 1 189 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 162 3 162 57+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 3+ 162+ 57+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 3+ 162+ 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 3+ 162+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 3+ 162+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 3+ 162+ 22+ , srcInfoPoints = []+ }+ "throwErrnoIfMinus1_")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 23+ 162+ 39+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 23+ 162+ 39+ , srcInfoPoints = []+ }+ "getPermissions"+ "getPermissions")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 40+ 162+ 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 40+ 162+ 41+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 40+ 162+ 41+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 42+ 162+ 57+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 42+ 162+ 50+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 42+ 162+ 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 42+ 162+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 42+ 162+ 48+ , srcInfoPoints = []+ }+ "c_stat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 49+ 162+ 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 49+ 162+ 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 49+ 162+ 50+ , srcInfoPoints = []+ }+ "s"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 51+ 162+ 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 51+ 162+ 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 162+ 51+ 162+ 57+ , srcInfoPoints = []+ }+ "p_stat")))))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 163 3 163 25+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 8+ 163+ 10+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 3+ 163+ 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 3+ 163+ 7+ , srcInfoPoints = []+ }+ "mode"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 11+ 163+ 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 11+ 163+ 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 11+ 163+ 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 11+ 163+ 18+ , srcInfoPoints = []+ }+ "st_mode")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 19+ 163+ 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 19+ 163+ 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 163+ 19+ 163+ 25+ , srcInfoPoints = []+ }+ "p_stat"))))+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 164 3 164 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 3+ 164+ 6+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 7+ 164+ 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 7+ 164+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 165+ 3+ 165+ 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 7+ 164+ 36+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 7+ 164+ 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 7+ 164+ 15+ , srcInfoPoints = []+ }+ "usr_read"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 18+ 164+ 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 18+ 164+ 19+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 20+ 164+ 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 20+ 164+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 20+ 164+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 20+ 164+ 24+ , srcInfoPoints = []+ }+ "mode")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 25+ 164+ 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 25+ 164+ 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 25+ 164+ 28+ , srcInfoPoints = []+ }+ ".&.")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 29+ 164+ 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 29+ 164+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 164+ 29+ 164+ 36+ , srcInfoPoints = []+ }+ "s_IRUSR")))))+ Nothing+ ])+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 165 3 165 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 3+ 165+ 6+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 7+ 165+ 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 7+ 165+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 166+ 3+ 166+ 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 7+ 165+ 36+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 7+ 165+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 7+ 165+ 16+ , srcInfoPoints = []+ }+ "usr_write"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 18+ 165+ 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 18+ 165+ 19+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 20+ 165+ 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 20+ 165+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 20+ 165+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 20+ 165+ 24+ , srcInfoPoints = []+ }+ "mode")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 25+ 165+ 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 25+ 165+ 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 25+ 165+ 28+ , srcInfoPoints = []+ }+ ".&.")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 29+ 165+ 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 29+ 165+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 165+ 29+ 165+ 36+ , srcInfoPoints = []+ }+ "s_IWUSR")))))+ Nothing+ ])+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 166 3 166 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 3+ 166+ 6+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 7+ 166+ 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 7+ 166+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 167+ 3+ 167+ 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 7+ 166+ 36+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 7+ 166+ 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 7+ 166+ 15+ , srcInfoPoints = []+ }+ "usr_exec"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 18+ 166+ 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 18+ 166+ 19+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 20+ 166+ 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 20+ 166+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 20+ 166+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 20+ 166+ 24+ , srcInfoPoints = []+ }+ "mode")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 25+ 166+ 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 25+ 166+ 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 25+ 166+ 28+ , srcInfoPoints = []+ }+ ".&.")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 29+ 166+ 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 29+ 166+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 166+ 29+ 166+ 36+ , srcInfoPoints = []+ }+ "s_IXUSR")))))+ Nothing+ ])+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 167 3 167 32+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 3+ 167+ 6+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 7+ 167+ 32+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 7+ 167+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 168+ 3+ 168+ 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 7+ 167+ 32+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 7+ 167+ 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 7+ 167+ 13+ , srcInfoPoints = []+ }+ "is_dir"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 14+ 167+ 32+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 14+ 167+ 15+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 16+ 167+ 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 16+ 167+ 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 16+ 167+ 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 16+ 167+ 20+ , srcInfoPoints = []+ }+ "mode")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 21+ 167+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 21+ 167+ 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 21+ 167+ 24+ , srcInfoPoints = []+ }+ ".&.")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 25+ 167+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 25+ 167+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 167+ 25+ 167+ 32+ , srcInfoPoints = []+ }+ "s_IFDIR")))))+ Nothing+ ])+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 168 3 175 5+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 168+ 3+ 175+ 5+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 168+ 3+ 168+ 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 168+ 3+ 168+ 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 168+ 3+ 168+ 9+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 168+ 10+ 175+ 5+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 168+ 10+ 168+ 11+ , SrcSpan+ "tests/examples/Directory.hs"+ 175+ 4+ 175+ 5+ ]+ }+ (RecConstr+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 169+ 5+ 174+ 6+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 169+ 17+ 169+ 18+ , SrcSpan+ "tests/examples/Directory.hs"+ 170+ 34+ 170+ 35+ , SrcSpan+ "tests/examples/Directory.hs"+ 171+ 34+ 171+ 35+ , SrcSpan+ "tests/examples/Directory.hs"+ 172+ 48+ 172+ 49+ , SrcSpan+ "tests/examples/Directory.hs"+ 174+ 5+ 174+ 6+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 169+ 5+ 169+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 169+ 5+ 169+ 16+ , srcInfoPoints = []+ }+ "Permissions"))+ [ FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 7+ 170+ 34+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 18+ 170+ 19+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 7+ 170+ 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 7+ 170+ 15+ , srcInfoPoints = []+ }+ "readable"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 20+ 170+ 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 20+ 170+ 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 20+ 170+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 20+ 170+ 28+ , srcInfoPoints = []+ }+ "usr_read")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 30+ 170+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 30+ 170+ 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 30+ 170+ 32+ , srcInfoPoints = []+ }+ "/=")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 33+ 170+ 34+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 170+ 33+ 170+ 34+ , srcInfoPoints = []+ }+ 0+ "0")))+ , FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 7+ 171+ 34+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 18+ 171+ 19+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 7+ 171+ 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 7+ 171+ 15+ , srcInfoPoints = []+ }+ "writable"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 20+ 171+ 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 20+ 171+ 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 20+ 171+ 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 20+ 171+ 29+ , srcInfoPoints = []+ }+ "usr_write")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 30+ 171+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 30+ 171+ 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 30+ 171+ 32+ , srcInfoPoints = []+ }+ "/=")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 33+ 171+ 34+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 171+ 33+ 171+ 34+ , srcInfoPoints = []+ }+ 0+ "0")))+ , FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 7+ 172+ 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 18+ 172+ 19+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 7+ 172+ 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 7+ 172+ 17+ , srcInfoPoints = []+ }+ "executable"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 20+ 172+ 48+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 20+ 172+ 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 20+ 172+ 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 20+ 172+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 20+ 172+ 26+ , srcInfoPoints = []+ }+ "is_dir")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 27+ 172+ 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 27+ 172+ 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 27+ 172+ 29+ , srcInfoPoints = []+ }+ "==")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 30+ 172+ 31+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 30+ 172+ 31+ , srcInfoPoints = []+ }+ 0+ "0")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 32+ 172+ 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 32+ 172+ 34+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 32+ 172+ 34+ , srcInfoPoints = []+ }+ "&&")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 35+ 172+ 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 35+ 172+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 35+ 172+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 35+ 172+ 43+ , srcInfoPoints = []+ }+ "usr_exec")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 44+ 172+ 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 44+ 172+ 46+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 44+ 172+ 46+ , srcInfoPoints = []+ }+ "/=")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 47+ 172+ 48+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 172+ 47+ 172+ 48+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 7+ 173+ 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 18+ 173+ 19+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 7+ 173+ 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 7+ 173+ 17+ , srcInfoPoints = []+ }+ "searchable"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 20+ 173+ 48+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 20+ 173+ 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 20+ 173+ 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 20+ 173+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 20+ 173+ 26+ , srcInfoPoints = []+ }+ "is_dir")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 27+ 173+ 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 27+ 173+ 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 27+ 173+ 29+ , srcInfoPoints = []+ }+ "/=")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 30+ 173+ 31+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 30+ 173+ 31+ , srcInfoPoints = []+ }+ 0+ "0")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 32+ 173+ 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 32+ 173+ 34+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 32+ 173+ 34+ , srcInfoPoints = []+ }+ "&&")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 35+ 173+ 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 35+ 173+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 35+ 173+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 35+ 173+ 43+ , srcInfoPoints = []+ }+ "usr_exec")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 44+ 173+ 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 44+ 173+ 46+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 44+ 173+ 46+ , srcInfoPoints = []+ }+ "/=")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 47+ 173+ 48+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 173+ 47+ 173+ 48+ , srcInfoPoints = []+ }+ 0+ "0"))))+ ])))+ ])))+ ])))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 1 189 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 189 16 189 18 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 1 189 15+ , srcInfoPoints = []+ }+ "setPermissions"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 189 28 189 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 19 189 27+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 189 43 189 45 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 31 189 42+ , srcInfoPoints = []+ }+ "Permissions")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 51+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 46 189 48+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 49 189 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 189 49 189 50+ , SrcSpan "tests/examples/Directory.hs" 189 50 189 51+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 49 189 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 189 49 189 50+ , SrcSpan "tests/examples/Directory.hs" 189 50 189 51+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 189 49 189 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 189 49 189 50+ , SrcSpan "tests/examples/Directory.hs" 189 50 189 51+ ]+ }))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 1 203 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 200 2 200 7 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 1 203 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 200 2 200 7 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 1 190 15+ , srcInfoPoints = []+ }+ "setPermissions")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 16 190 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 16 190 20+ , srcInfoPoints = []+ }+ "name")+ , PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 21 190 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 190 21 190 22+ , SrcSpan "tests/examples/Directory.hs" 190 41 190 42+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 22 190 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 22 190 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 22 190 33+ , srcInfoPoints = []+ }+ "Permissions"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 34 190 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 34 190 35+ , srcInfoPoints = []+ }+ "r")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 36 190 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 36 190 37+ , srcInfoPoints = []+ }+ "w")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 38 190 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 38 190 39+ , srcInfoPoints = []+ }+ "e")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 40 190 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 40 190 41+ , srcInfoPoints = []+ }+ "s")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 43 199 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 190 43 190 44 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 190 45 199 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 190 45 190 47+ , SrcSpan "tests/examples/Directory.hs" 191 3 191 3+ , SrcSpan "tests/examples/Directory.hs" 200 2 200 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 3 199 28+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 3 199 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 3 191 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 3 191 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 3 191 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 3 191 14+ , srcInfoPoints = []+ }+ "allocaBytes")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 15 191 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 15 191 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 15 191 26+ , srcInfoPoints = []+ }+ "sizeof_stat"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 27 191 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 27 191 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 27 191 28+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 191 29 199 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 191 29 191 30+ , SrcSpan "tests/examples/Directory.hs" 191 38 191 40+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 31 191 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 31 191 37+ , srcInfoPoints = []+ }+ "p_stat")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 191 41 199 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 191 41 191 43+ , SrcSpan "tests/examples/Directory.hs" 192 3 192 3+ , SrcSpan "tests/examples/Directory.hs" 192 3 192 3+ , SrcSpan "tests/examples/Directory.hs" 200 2 200 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 192 3 199 28+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 192 3 199 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 192 3 192 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 3 192 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 3 192 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 192+ 3+ 192+ 15+ , srcInfoPoints = []+ }+ "withFilePath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 16 192 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 16 192 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 192+ 16+ 192+ 20+ , srcInfoPoints = []+ }+ "name"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 192 21 192 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 21 192 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 21 192 22+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 192 23 199 28+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 192 23 192 24+ , SrcSpan+ "tests/examples/Directory.hs" 192 31 192 33+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 24 192 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 192+ 24+ 192+ 30+ , srcInfoPoints = []+ }+ "p_name")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 192 34 199 28+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 192 34 192 36+ , SrcSpan+ "tests/examples/Directory.hs" 193 5 193 5+ , SrcSpan+ "tests/examples/Directory.hs" 200 2 200 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 193 5 199 28+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 5+ 199+ 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 5+ 193+ 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 5+ 193+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 5+ 193+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 5+ 193+ 24+ , srcInfoPoints = []+ }+ "throwErrnoIfMinus1_")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 25+ 193+ 41+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 25+ 193+ 41+ , srcInfoPoints = []+ }+ "setPermissions"+ "setPermissions")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 42+ 193+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 42+ 193+ 43+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 42+ 193+ 43+ , srcInfoPoints = []+ }+ "$")))+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 44+ 199+ 28+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 193+ 44+ 193+ 46+ , SrcSpan+ "tests/examples/Directory.hs"+ 194+ 7+ 194+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 195+ 7+ 195+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 196+ 7+ 196+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 197+ 7+ 197+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 198+ 7+ 198+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 7+ , SrcSpan+ "tests/examples/Directory.hs"+ 200+ 2+ 200+ 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 7+ 194+ 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 7+ 194+ 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 7+ 194+ 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 7+ 194+ 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 7+ 194+ 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 7+ 194+ 13+ , srcInfoPoints = []+ }+ "c_stat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 14+ 194+ 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 14+ 194+ 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 14+ 194+ 20+ , srcInfoPoints = []+ }+ "p_name"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 21+ 194+ 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 21+ 194+ 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 194+ 21+ 194+ 27+ , srcInfoPoints = []+ }+ "p_stat"))))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 7+ 195+ 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 12+ 195+ 14+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 7+ 195+ 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 7+ 195+ 11+ , srcInfoPoints = []+ }+ "mode"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 15+ 195+ 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 15+ 195+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 15+ 195+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 15+ 195+ 22+ , srcInfoPoints = []+ }+ "st_mode")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 23+ 195+ 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 23+ 195+ 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 195+ 23+ 195+ 29+ , srcInfoPoints = []+ }+ "p_stat"))))+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 7+ 196+ 43+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 7+ 196+ 10+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 11+ 196+ 43+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 11+ 196+ 11+ , SrcSpan+ "tests/examples/Directory.hs"+ 197+ 7+ 197+ 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 11+ 196+ 43+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 11+ 196+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 11+ 196+ 16+ , srcInfoPoints = []+ }+ "mode1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 17+ 196+ 43+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 17+ 196+ 18+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 19+ 196+ 43+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 19+ 196+ 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 19+ 196+ 30+ , srcInfoPoints =+ []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 19+ 196+ 28+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 19+ 196+ 28+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 19+ 196+ 28+ , srcInfoPoints =+ []+ }+ "modifyBit")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 29+ 196+ 30+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 29+ 196+ 30+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 29+ 196+ 30+ , srcInfoPoints =+ []+ }+ "r"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 31+ 196+ 35+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 31+ 196+ 35+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 31+ 196+ 35+ , srcInfoPoints =+ []+ }+ "mode"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 36+ 196+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 36+ 196+ 43+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 196+ 36+ 196+ 43+ , srcInfoPoints =+ []+ }+ "s_IRUSR")))))+ Nothing+ ])+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 7+ 197+ 44+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 7+ 197+ 10+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 11+ 197+ 44+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 11+ 197+ 11+ , SrcSpan+ "tests/examples/Directory.hs"+ 198+ 7+ 198+ 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 11+ 197+ 44+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 11+ 197+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 11+ 197+ 16+ , srcInfoPoints = []+ }+ "mode2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 17+ 197+ 44+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 17+ 197+ 18+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 19+ 197+ 44+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 19+ 197+ 36+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 19+ 197+ 30+ , srcInfoPoints =+ []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 19+ 197+ 28+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 19+ 197+ 28+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 19+ 197+ 28+ , srcInfoPoints =+ []+ }+ "modifyBit")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 29+ 197+ 30+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 29+ 197+ 30+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 29+ 197+ 30+ , srcInfoPoints =+ []+ }+ "w"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 31+ 197+ 36+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 31+ 197+ 36+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 31+ 197+ 36+ , srcInfoPoints =+ []+ }+ "mode1"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 37+ 197+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 37+ 197+ 44+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 197+ 37+ 197+ 44+ , srcInfoPoints =+ []+ }+ "s_IWUSR")))))+ Nothing+ ])+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 7+ 198+ 51+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 7+ 198+ 10+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 11+ 198+ 51+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 11+ 198+ 11+ , SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 11+ 198+ 51+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 11+ 198+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 11+ 198+ 16+ , srcInfoPoints = []+ }+ "mode3"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 17+ 198+ 51+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 17+ 198+ 18+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 19+ 198+ 51+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 19+ 198+ 43+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 19+ 198+ 37+ , srcInfoPoints =+ []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 19+ 198+ 28+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 19+ 198+ 28+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 19+ 198+ 28+ , srcInfoPoints =+ []+ }+ "modifyBit")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 29+ 198+ 37+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 29+ 198+ 30+ , SrcSpan+ "tests/examples/Directory.hs"+ 198+ 36+ 198+ 37+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 30+ 198+ 36+ , srcInfoPoints =+ []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 30+ 198+ 31+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 30+ 198+ 31+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 30+ 198+ 31+ , srcInfoPoints =+ []+ }+ "e")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 32+ 198+ 34+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 32+ 198+ 34+ , srcInfoPoints =+ []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 32+ 198+ 34+ , srcInfoPoints =+ []+ }+ "||")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 35+ 198+ 36+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 35+ 198+ 36+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 35+ 198+ 36+ , srcInfoPoints =+ []+ }+ "s"))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 38+ 198+ 43+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 38+ 198+ 43+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 38+ 198+ 43+ , srcInfoPoints =+ []+ }+ "mode2"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 44+ 198+ 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 44+ 198+ 51+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 198+ 44+ 198+ 51+ , srcInfoPoints =+ []+ }+ "s_IXUSR")))))+ Nothing+ ])+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 7+ 199+ 15+ , srcInfoPoints = []+ }+ "c_wchmod")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 16+ 199+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 16+ 199+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 16+ 199+ 22+ , srcInfoPoints = []+ }+ "p_name"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 23+ 199+ 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 23+ 199+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 199+ 23+ 199+ 28+ , srcInfoPoints = []+ }+ "mode3"))))+ ]))+ ])))+ ])))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 4 203 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 201 4 201 4+ , SrcSpan "tests/examples/Directory.hs" 202 4 202 4+ , SrcSpan "tests/examples/Directory.hs" 203 4 203 4+ , SrcSpan "tests/examples/Directory.hs" 205 1 205 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 4 201 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 201 14 201 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 4 201 13+ , srcInfoPoints = []+ }+ "modifyBit"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 17 201 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 201 22 201 24 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 17 201 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 17 201 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 17 201 21+ , srcInfoPoints = []+ }+ "Bool")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 201 25 201 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 201 31 201 33 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 25 201 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 25 201 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 25 201 30+ , srcInfoPoints = []+ }+ "CMode")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 34 201 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 201 40 201 42 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 34 201 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 34 201 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 34 201 39+ , srcInfoPoints = []+ }+ "CMode")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 43 201 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 43 201 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 201 43 201 48+ , srcInfoPoints = []+ }+ "CMode"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 4 203 33+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 4 202 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 4 202 13+ , srcInfoPoints = []+ }+ "modifyBit")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 14 202 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 14 202 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 14 202 19+ , srcInfoPoints = []+ }+ "False"))+ []+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 20 202 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 20 202 21+ , srcInfoPoints = []+ }+ "m")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 22 202 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 22 202 23+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 202 24 202 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 202 24 202 25 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 26 202 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 26 202 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 26 202 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 26 202 27+ , srcInfoPoints = []+ }+ "m")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 28 202 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 28 202 31+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 28 202 31+ , srcInfoPoints = []+ }+ ".&.")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 32 202 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 202 32 202 33+ , SrcSpan "tests/examples/Directory.hs" 202 45 202 46+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 33 202 45+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 33 202 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 202 33 202 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 202 33 202 43+ , srcInfoPoints = []+ }+ "complement")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 202 44 202 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 202 44 202 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 202 44 202 45+ , srcInfoPoints = []+ }+ "b")))))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 203 4 203 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 203 4 203 13+ , srcInfoPoints = []+ }+ "modifyBit")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 14 203 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 14 203 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 14 203 18+ , srcInfoPoints = []+ }+ "True"))+ []+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 20 203 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 20 203 21+ , srcInfoPoints = []+ }+ "m")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 22 203 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 22 203 23+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 203 24 203 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 203 24 203 25 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 26 203 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 26 203 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 26 203 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 26 203 27+ , srcInfoPoints = []+ }+ "m")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 28 203 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 28 203 31+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 28 203 31+ , srcInfoPoints = []+ }+ ".|.")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 32 203 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 32 203 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 203 32 203 33+ , srcInfoPoints = []+ }+ "b")))))+ Nothing+ ]+ ]))+ ]+ , ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 205 1 206 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 205 1 205 8+ , SrcSpan "tests/examples/Directory.hs" 205 9 205 15+ , SrcSpan "tests/examples/Directory.hs" 205 29 205 38+ , SrcSpan "tests/examples/Directory.hs" 206 13 206 15+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 205 16 205 21+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 205 22 205 28+ , srcInfoPoints = []+ }))+ (Just "_wchmod")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 4 206 12+ , srcInfoPoints = []+ }+ "c_wchmod")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 206 25 206 27 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 16 206 24+ , srcInfoPoints = []+ }+ "CWString")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 206 34 206 36 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 28 206 33+ , srcInfoPoints = []+ }+ "CMode")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 44+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 37 206 39+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 40 206 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 40 206 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 206 40 206 44+ , srcInfoPoints = []+ }+ "CInt"))))))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 1 208 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 208 17 208 19 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 1 208 16+ , srcInfoPoints = []+ }+ "copyPermissions"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 208 29 208 31 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 20 208 28+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 208 41 208 43 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 32 208 40+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 49+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 44 208 46+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 47 208 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 208 47 208 48+ , SrcSpan "tests/examples/Directory.hs" 208 48 208 49+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 47 208 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 208 47 208 48+ , SrcSpan "tests/examples/Directory.hs" 208 48 208 49+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 208 47 208 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 208 47 208 48+ , SrcSpan "tests/examples/Directory.hs" 208 48 208 49+ ]+ }))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 1 215 65+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 1 215 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 1 209 16+ , srcInfoPoints = []+ }+ "copyPermissions")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 17 209 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 17 209 23+ , srcInfoPoints = []+ }+ "source")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 24 209 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 24 209 28+ , srcInfoPoints = []+ }+ "dest")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 29 215 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 209 29 209 30 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 209 31 215 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 209 31 209 33+ , SrcSpan "tests/examples/Directory.hs" 210 3 210 3+ , SrcSpan "tests/examples/Directory.hs" 257 1 257 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 3 215 65+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 3 215 65+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 3 210 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 3 210 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 3 210 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 3 210 14+ , srcInfoPoints = []+ }+ "allocaBytes")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 15 210 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 15 210 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 15 210 26+ , srcInfoPoints = []+ }+ "sizeof_stat"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 27 210 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 27 210 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 27 210 28+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 210 29 215 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 210 29 210 30+ , SrcSpan "tests/examples/Directory.hs" 210 38 210 40+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 31 210 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 31 210 37+ , srcInfoPoints = []+ }+ "p_stat")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 210 41 215 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 210 41 210 43+ , SrcSpan "tests/examples/Directory.hs" 211 3 211 3+ , SrcSpan "tests/examples/Directory.hs" 211 3 211 3+ , SrcSpan "tests/examples/Directory.hs" 257 1 257 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 211 3 215 65+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 211 3 215 65+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 211 3 211 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 3 211 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 3 211 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 211+ 3+ 211+ 15+ , srcInfoPoints = []+ }+ "withFilePath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 16 211 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 16 211 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 211+ 16+ 211+ 22+ , srcInfoPoints = []+ }+ "source"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 211 23 211 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 23 211 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 23 211 24+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 211 25 215 65+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 211 25 211 26+ , SrcSpan+ "tests/examples/Directory.hs" 211 35 211 37+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 26 211 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 211+ 26+ 211+ 34+ , srcInfoPoints = []+ }+ "p_source")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 211 38 215 65+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 211 38 211 40+ , SrcSpan+ "tests/examples/Directory.hs" 212 3 212 3+ , SrcSpan+ "tests/examples/Directory.hs" 212 3 212 3+ , SrcSpan+ "tests/examples/Directory.hs" 257 1 257 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 212 3 215 65+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 3+ 215+ 65+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 3+ 212+ 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 3+ 212+ 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 3+ 212+ 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 3+ 212+ 15+ , srcInfoPoints = []+ }+ "withFilePath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 16+ 212+ 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 16+ 212+ 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 16+ 212+ 20+ , srcInfoPoints = []+ }+ "dest"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 21+ 212+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 21+ 212+ 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 21+ 212+ 22+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 23+ 215+ 65+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 23+ 212+ 24+ , SrcSpan+ "tests/examples/Directory.hs"+ 212+ 31+ 212+ 33+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 24+ 212+ 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 24+ 212+ 30+ , srcInfoPoints = []+ }+ "p_dest")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 34+ 215+ 65+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 212+ 34+ 212+ 36+ , SrcSpan+ "tests/examples/Directory.hs"+ 213+ 5+ 213+ 5+ , SrcSpan+ "tests/examples/Directory.hs"+ 214+ 5+ 214+ 5+ , SrcSpan+ "tests/examples/Directory.hs"+ 215+ 5+ 215+ 5+ , SrcSpan+ "tests/examples/Directory.hs"+ 257+ 1+ 257+ 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 5+ 213+ 67+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 5+ 213+ 67+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 5+ 213+ 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 5+ 213+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 5+ 213+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 5+ 213+ 24+ , srcInfoPoints = []+ }+ "throwErrnoIfMinus1_")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 25+ 213+ 42+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 25+ 213+ 42+ , srcInfoPoints = []+ }+ "copyPermissions"+ "copyPermissions")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 43+ 213+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 43+ 213+ 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 43+ 213+ 44+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 45+ 213+ 67+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 45+ 213+ 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 45+ 213+ 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 45+ 213+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 45+ 213+ 51+ , srcInfoPoints =+ []+ }+ "c_stat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 52+ 213+ 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 52+ 213+ 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 52+ 213+ 60+ , srcInfoPoints =+ []+ }+ "p_source"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 61+ 213+ 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 61+ 213+ 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 213+ 61+ 213+ 67+ , srcInfoPoints = []+ }+ "p_stat")))))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 5+ 214+ 27+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 10+ 214+ 12+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 5+ 214+ 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 5+ 214+ 9+ , srcInfoPoints = []+ }+ "mode"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 13+ 214+ 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 13+ 214+ 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 13+ 214+ 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 13+ 214+ 20+ , srcInfoPoints = []+ }+ "st_mode")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 21+ 214+ 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 21+ 214+ 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 214+ 21+ 214+ 27+ , srcInfoPoints = []+ }+ "p_stat"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 5+ 215+ 65+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 5+ 215+ 65+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 5+ 215+ 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 5+ 215+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 5+ 215+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 5+ 215+ 24+ , srcInfoPoints = []+ }+ "throwErrnoIfMinus1_")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 25+ 215+ 42+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 25+ 215+ 42+ , srcInfoPoints = []+ }+ "copyPermissions"+ "copyPermissions")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 43+ 215+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 43+ 215+ 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 43+ 215+ 44+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 45+ 215+ 65+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 45+ 215+ 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 45+ 215+ 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 45+ 215+ 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 45+ 215+ 53+ , srcInfoPoints =+ []+ }+ "c_wchmod")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 54+ 215+ 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 54+ 215+ 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 54+ 215+ 60+ , srcInfoPoints =+ []+ }+ "p_dest"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 61+ 215+ 65+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 61+ 215+ 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 215+ 61+ 215+ 65+ , srcInfoPoints = []+ }+ "mode")))))+ ])))+ ])))+ ])))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 1 257 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 257 17 257 19 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 1 257 16+ , srcInfoPoints = []+ }+ "createDirectory"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 257 29 257 31 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 20 257 28+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 32 257 34+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 35 257 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 257 35 257 36+ , SrcSpan "tests/examples/Directory.hs" 257 36 257 37+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 35 257 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 257 35 257 36+ , SrcSpan "tests/examples/Directory.hs" 257 36 257 37+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 257 35 257 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 257 35 257 36+ , SrcSpan "tests/examples/Directory.hs" 257 36 257 37+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 1 259 37+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 1 259 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 1 258 16+ , srcInfoPoints = []+ }+ "createDirectory")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 17 258 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 17 258 21+ , srcInfoPoints = []+ }+ "path")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 22 259 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 258 22 258 23 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 258 24 259 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 258 24 258 26+ , SrcSpan "tests/examples/Directory.hs" 259 3 259 3+ , SrcSpan "tests/examples/Directory.hs" 264 1 264 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 3 259 37+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 3 259 37+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 3 259 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 3 259 24+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 3 259 24+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 3 259 24+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 3 259 24+ , srcInfoPoints = []+ }+ "createDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 25 259 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 25 259 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 25 259 29+ , srcInfoPoints = []+ }+ "path"))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 259 30 259 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 30 259 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 259 30 259 37+ , srcInfoPoints = []+ }+ "Nothing"))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 1 266 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 264 26 264 28 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 1 264 25+ , srcInfoPoints = []+ }+ "createDirectoryIfMissing"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 266 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 265 18 265 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 264 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 264 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 264 29 264 33+ , srcInfoPoints = []+ }+ "Bool")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 266 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 266 18 266 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 265 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 265 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 265 21 265 29+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 21 266 23+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 24 266 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 266 24 266 25+ , SrcSpan "tests/examples/Directory.hs" 266 25 266 26+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 24 266 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 266 24 266 25+ , SrcSpan "tests/examples/Directory.hs" 266 25 266 26+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 266 24 266 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 266 24 266 25+ , SrcSpan "tests/examples/Directory.hs" 266 25 266 26+ ]+ }))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 1 300 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 270 3 270 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 1 300 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 270 3 270 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 1 267 25+ , srcInfoPoints = []+ }+ "createDirectoryIfMissing")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 26 267 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 26 267 40+ , srcInfoPoints = []+ }+ "create_parents")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 41 267 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 267 41 267 46+ , srcInfoPoints = []+ }+ "path0")+ ]+ (GuardedRhss+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 3 269 57+ , srcInfoPoints = []+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 3 268 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 268 3 268 4+ , SrcSpan "tests/examples/Directory.hs" 268 20 268 21+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 5 268 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 5 268 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 5 268 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 5 268 19+ , srcInfoPoints = []+ }+ "create_parents")))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 22 268 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 22 268 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 22 268 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 22 268 32+ , srcInfoPoints = []+ }+ "createDirs")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 33 268 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 268 33 268 34+ , SrcSpan "tests/examples/Directory.hs" 268 47 268 48+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 268 34 268 47+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 34 268 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 34 268 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 34 268 41+ , srcInfoPoints = []+ }+ "parents")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 42 268 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 42 268 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 268 42 268 47+ , srcInfoPoints = []+ }+ "path0"))))))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 3 269 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 269 3 269 4+ , SrcSpan "tests/examples/Directory.hs" 269 20 269 21+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 5 269 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 5 269 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 5 269 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 5 269 14+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 22 269 57+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 22 269 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 22 269 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 22 269 32+ , srcInfoPoints = []+ }+ "createDirs")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 33 269 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 269 33 269 34+ , SrcSpan "tests/examples/Directory.hs" 269 56 269 57+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 269 34 269 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 34 269 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 34 269 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 34 269 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 34 269 38+ , srcInfoPoints = []+ }+ "take")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 39 269 40+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 39 269 40+ , srcInfoPoints = []+ }+ 1+ "1")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 41 269 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 269 41 269 42+ , SrcSpan "tests/examples/Directory.hs" 269 55 269 56+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 42 269 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 42 269 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 42 269 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 269 42 269 49+ , srcInfoPoints = []+ }+ "parents")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 50 269 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 269 50 269 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 269 50 269 55+ , srcInfoPoints = []+ }+ "path0"))))))))+ ])+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 300 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 271 5 271 5+ , SrcSpan "tests/examples/Directory.hs" 273 5 273 5+ , SrcSpan "tests/examples/Directory.hs" 274 5 274 5+ , SrcSpan "tests/examples/Directory.hs" 275 5 275 5+ , SrcSpan "tests/examples/Directory.hs" 280 5 280 5+ , SrcSpan "tests/examples/Directory.hs" 281 5 281 5+ , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 271 68+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 271 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 5 271 12+ , srcInfoPoints = []+ }+ "parents"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 13 271 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 271 13 271 14 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 271 15 271 68+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 15 271 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 15 271 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 15 271 22+ , srcInfoPoints = []+ }+ "reverse")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 23 271 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 23 271 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 23 271 24+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 25 271 68+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 25 271 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 25 271 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 25 271 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 271 25 271 31+ , srcInfoPoints = []+ }+ "scanl1")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 32 271 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 271 32 271 33+ , SrcSpan "tests/examples/Directory.hs" 271 33 271 36+ , SrcSpan "tests/examples/Directory.hs" 271 36 271 37+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 32 271 37+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 271 32 271 33+ , SrcSpan+ "tests/examples/Directory.hs" 271 33 271 36+ , SrcSpan+ "tests/examples/Directory.hs" 271 36 271 37+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 271 33 271 36+ , srcInfoPoints = []+ }+ "</>"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 38 271 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 38 271 39+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 38 271 39+ , srcInfoPoints = []+ }+ ".")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 40 271 68+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 40 271 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 40 271 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 271 40 271 56+ , srcInfoPoints = []+ }+ "splitDirectories")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 57 271 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 57 271 58+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 271 57 271 58+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 59 271 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 271 59 271 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 271 59 271 68+ , srcInfoPoints = []+ }+ "normalise")))))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 5 278 28+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 5 273 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 5 273 15+ , srcInfoPoints = []+ }+ "createDirs")+ [ PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 16 273 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 273 16 273 17+ , SrcSpan "tests/examples/Directory.hs" 273 17 273 18+ ]+ }+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 273 27 273 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 273 27 273 28 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 29 273 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 29 273 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 29 273 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 29 273 35+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 36 273 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 273 36 273 37+ , SrcSpan "tests/examples/Directory.hs" 273 37 273 38+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 36 273 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 273 36 273 37+ , SrcSpan "tests/examples/Directory.hs" 273 37 273 38+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 273 36 273 38+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 273 36 273 37+ , SrcSpan+ "tests/examples/Directory.hs" 273 37 273 38+ ]+ })))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 274 5 274 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 274 5 274 15+ , srcInfoPoints = []+ }+ "createDirs")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 16 274 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 274 16 274 17+ , SrcSpan "tests/examples/Directory.hs" 274 23 274 24+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 17 274 23+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 17 274 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 17 274 20+ , srcInfoPoints = []+ }+ "dir"))+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 20 274 21+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 20 274 21+ , srcInfoPoints = []+ }))+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 21 274 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 274 21 274 22+ , SrcSpan "tests/examples/Directory.hs" 274 22 274 23+ ]+ }+ []))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 274 27 274 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 274 27 274 28 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 29 274 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 29 274 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 29 274 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 29 274 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 274 29 274 38+ , srcInfoPoints = []+ }+ "createDir")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 39 274 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 39 274 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 274 39 274 42+ , srcInfoPoints = []+ }+ "dir"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 43 274 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 43 274 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 274 43 274 48+ , srcInfoPoints = []+ }+ "throw")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 275 5 278 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 275 5 275 15+ , srcInfoPoints = []+ }+ "createDirs")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 16 275 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 275 16 275 17+ , SrcSpan "tests/examples/Directory.hs" 275 25 275 26+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 17 275 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 17 275 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 17 275 20+ , srcInfoPoints = []+ }+ "dir"))+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 20 275 21+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 20 275 21+ , srcInfoPoints = []+ }))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 21 275 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 275 21 275 25+ , srcInfoPoints = []+ }+ "dirs")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 275 27 278 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 275 27 275 28 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 7 278 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 7 276 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 7 276 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 7 276 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 276 7 276 16+ , srcInfoPoints = []+ }+ "createDir")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 17 276 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 17 276 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 276 17 276 20+ , srcInfoPoints = []+ }+ "dir"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 21 276 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 21 276 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 21 276 22+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 23 278 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 276 23 276 24+ , SrcSpan "tests/examples/Directory.hs" 276 26 276 28+ ]+ }+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 24 276 25+ , srcInfoPoints = []+ }+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 276 29 278 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 276 29 276 31+ , SrcSpan "tests/examples/Directory.hs" 277 9 277 9+ , SrcSpan "tests/examples/Directory.hs" 278 9 278 9+ , SrcSpan "tests/examples/Directory.hs" 280 5 280 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 277 9 277 24+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 277 9 277 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 277 9 277 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 277+ 9+ 277+ 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 277+ 9+ 277+ 19+ , srcInfoPoints = []+ }+ "createDirs")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 277+ 20+ 277+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 277+ 20+ 277+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 277+ 20+ 277+ 24+ , srcInfoPoints = []+ }+ "dirs"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 278 9 278 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 278 9 278 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 278 9 278 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 9+ 278+ 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 9+ 278+ 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 9+ 278+ 18+ , srcInfoPoints = []+ }+ "createDir")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 19+ 278+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 19+ 278+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 19+ 278+ 22+ , srcInfoPoints = []+ }+ "dir"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 23+ 278+ 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 23+ 278+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 278+ 23+ 278+ 28+ , srcInfoPoints = []+ }+ "throw"))))+ ]))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 5 280 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 280 15 280 17 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 5 280 14+ , srcInfoPoints = []+ }+ "createDir"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 18 280 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 280 27 280 29 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 18 280 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 18 280 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 18 280 26+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 280 30 280 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 280 53 280 55 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 30 280 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 280 30 280 31+ , SrcSpan "tests/examples/Directory.hs" 280 51 280 52+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 31 280 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 280 43 280 45 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 31 280 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 31 280 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 280 31 280 42+ , srcInfoPoints = []+ }+ "IOException")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 46 280 51+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 46 280 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 280 46 280 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 280 46 280 48+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 49 280 51+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 280 49 280 50+ , SrcSpan+ "tests/examples/Directory.hs" 280 50 280 51+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 280 49 280 51+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 280 49 280 50+ , SrcSpan+ "tests/examples/Directory.hs" 280 50 280 51+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 280 49 280 51+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 280+ 49+ 280+ 50+ , SrcSpan+ "tests/examples/Directory.hs"+ 280+ 50+ 280+ 51+ ]+ }))))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 56 280 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 56 280 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 56 280 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 56 280 58+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 59 280 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 280 59 280 60+ , SrcSpan "tests/examples/Directory.hs" 280 60 280 61+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 59 280 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 280 59 280 60+ , SrcSpan "tests/examples/Directory.hs" 280 60 280 61+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 280 59 280 61+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 280 59 280 60+ , SrcSpan+ "tests/examples/Directory.hs" 280 60 280 61+ ]+ }))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 5 300 46+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 5 300 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 5 281 14+ , srcInfoPoints = []+ }+ "createDir")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 281 15 281 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 281 15 281 18+ , srcInfoPoints = []+ }+ "dir")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 281 19 281 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 281 19 281 34+ , srcInfoPoints = []+ }+ "notExistHandler")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 281 35 300 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 281 35 281 36 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 281 37 300 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 281 37 281 39+ , SrcSpan "tests/examples/Directory.hs" 282 7 282 7+ , SrcSpan "tests/examples/Directory.hs" 283 7 283 7+ , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 282 7 282 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 282 9 282 11 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 282 7 282 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 282 7 282 8+ , srcInfoPoints = []+ }+ "r"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 282 12 282 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 282 12 282 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 282 12 282 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 282+ 12+ 282+ 15+ , srcInfoPoints = []+ }+ "try")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 282 16 282 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 282 16 282 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 282+ 16+ 282+ 17+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 282 18 282 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 282 18 282 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 282+ 18+ 282+ 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 282+ 18+ 282+ 33+ , srcInfoPoints = []+ }+ "createDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 282 34 282 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 282+ 34+ 282+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 282+ 34+ 282+ 37+ , srcInfoPoints = []+ }+ "dir")))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 283 7 300 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 283 7 283 11+ , SrcSpan "tests/examples/Directory.hs" 283 41 283 43+ , SrcSpan "tests/examples/Directory.hs" 284 9 284 9+ , SrcSpan "tests/examples/Directory.hs" 285 9 285 9+ , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+ ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 283 7 300 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 283 7 283 11+ , SrcSpan "tests/examples/Directory.hs" 283 41 283 43+ , SrcSpan "tests/examples/Directory.hs" 284 9 284 9+ , SrcSpan "tests/examples/Directory.hs" 285 9 285 9+ , SrcSpan "tests/examples/Directory.hs" 343 1 343 0+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 283 12 283 40+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 283 12 283 13+ , SrcSpan+ "tests/examples/Directory.hs" 283 39 283 40+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 283 13 283 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 283 15 283 17+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 13+ 283+ 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 13+ 283+ 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 13+ 283+ 14+ , srcInfoPoints = []+ }+ "r")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 18+ 283+ 39+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 18+ 283+ 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 18+ 283+ 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 18+ 283+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 18+ 283+ 24+ , srcInfoPoints = []+ }+ "Either")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 25+ 283+ 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 25+ 283+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 25+ 283+ 36+ , srcInfoPoints = []+ }+ "IOException"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 37+ 283+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 37+ 283+ 38+ , SrcSpan+ "tests/examples/Directory.hs"+ 283+ 38+ 283+ 39+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 37+ 283+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 37+ 283+ 38+ , SrcSpan+ "tests/examples/Directory.hs"+ 283+ 38+ 283+ 39+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 37+ 283+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 283+ 37+ 283+ 38+ , SrcSpan+ "tests/examples/Directory.hs"+ 283+ 38+ 283+ 39+ ]+ }))))))+ [ Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 284 9 284 48+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 284 9 284 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 9+ 284+ 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 9+ 284+ 14+ , srcInfoPoints = []+ }+ "Right"))+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 15+ 284+ 17+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 15+ 284+ 16+ , SrcSpan+ "tests/examples/Directory.hs"+ 284+ 16+ 284+ 17+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 15+ 284+ 17+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 15+ 284+ 16+ , SrcSpan+ "tests/examples/Directory.hs"+ 284+ 16+ 284+ 17+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 15+ 284+ 17+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 15+ 284+ 16+ , SrcSpan+ "tests/examples/Directory.hs"+ 284+ 16+ 284+ 17+ ]+ }))+ []+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 284 36 284 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 36+ 284+ 38+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 39+ 284+ 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 39+ 284+ 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 39+ 284+ 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 39+ 284+ 45+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 46+ 284+ 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 46+ 284+ 47+ , SrcSpan+ "tests/examples/Directory.hs"+ 284+ 47+ 284+ 48+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 46+ 284+ 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 46+ 284+ 47+ , SrcSpan+ "tests/examples/Directory.hs"+ 284+ 47+ 284+ 48+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 46+ 284+ 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 284+ 46+ 284+ 47+ , SrcSpan+ "tests/examples/Directory.hs"+ 284+ 47+ 284+ 48+ ]+ })))))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 285 9 300 46+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 285 9 285 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 285+ 9+ 285+ 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 285+ 9+ 285+ 13+ , srcInfoPoints = []+ }+ "Left"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 285+ 15+ 285+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 285+ 15+ 285+ 16+ , srcInfoPoints = []+ }+ "e")+ ])+ (GuardedRhss+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 286 11 300 46+ , srcInfoPoints = []+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 11+ 286+ 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 11+ 286+ 12+ , SrcSpan+ "tests/examples/Directory.hs"+ 286+ 36+ 286+ 38+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 13+ 286+ 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 13+ 286+ 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 13+ 286+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 13+ 286+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 13+ 286+ 32+ , srcInfoPoints = []+ }+ "isDoesNotExistError")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 34+ 286+ 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 34+ 286+ 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 34+ 286+ 35+ , srcInfoPoints = []+ }+ "e"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 39+ 286+ 56+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 39+ 286+ 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 39+ 286+ 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 39+ 286+ 54+ , srcInfoPoints = []+ }+ "notExistHandler")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 55+ 286+ 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 55+ 286+ 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 286+ 55+ 286+ 56+ , srcInfoPoints = []+ }+ "e"))))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 11+ 299+ 68+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 11+ 294+ 12+ , SrcSpan+ "tests/examples/Directory.hs"+ 294+ 36+ 294+ 38+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 13+ 294+ 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 13+ 294+ 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 13+ 294+ 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 13+ 294+ 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 13+ 294+ 33+ , srcInfoPoints = []+ }+ "isAlreadyExistsError")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 34+ 294+ 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 34+ 294+ 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 34+ 294+ 35+ , srcInfoPoints = []+ }+ "e"))))+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 39+ 299+ 68+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 39+ 299+ 16+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 39+ 294+ 40+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 15+ 299+ 16+ ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 40+ 298+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 294+ 40+ 294+ 42+ , SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 295+ 15+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 15+ 299+ 15+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 15+ 299+ 15+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 298+ 39+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 298+ 39+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 295+ 60+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 295+ 56+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 295+ 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 295+ 29+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 15+ 295+ 29+ , srcInfoPoints =+ []+ }+ "withFileStatus")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 30+ 295+ 56+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 30+ 295+ 56+ , srcInfoPoints =+ []+ }+ "createDirectoryIfMissing"+ "createDirectoryIfMissing")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 57+ 295+ 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 57+ 295+ 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 57+ 295+ 60+ , srcInfoPoints =+ []+ }+ "dir"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 61+ 295+ 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 61+ 295+ 62+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 61+ 295+ 62+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 63+ 298+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 63+ 295+ 64+ , SrcSpan+ "tests/examples/Directory.hs"+ 295+ 67+ 295+ 69+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 64+ 295+ 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 64+ 295+ 66+ , srcInfoPoints = []+ }+ "st")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 70+ 298+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 295+ 70+ 295+ 72+ , SrcSpan+ "tests/examples/Directory.hs"+ 296+ 18+ 296+ 18+ , SrcSpan+ "tests/examples/Directory.hs"+ 297+ 18+ 297+ 18+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 15+ 299+ 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 18+ 296+ 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 24+ 296+ 26+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 18+ 296+ 23+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 18+ 296+ 23+ , srcInfoPoints =+ []+ }+ "isDir"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 27+ 296+ 41+ , srcInfoPoints =+ []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 27+ 296+ 38+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 27+ 296+ 38+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 27+ 296+ 38+ , srcInfoPoints =+ []+ }+ "isDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 39+ 296+ 41+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 39+ 296+ 41+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 296+ 39+ 296+ 41+ , srcInfoPoints =+ []+ }+ "st"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 18+ 298+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 18+ 297+ 20+ , SrcSpan+ "tests/examples/Directory.hs"+ 297+ 27+ 297+ 31+ , SrcSpan+ "tests/examples/Directory.hs"+ 298+ 27+ 298+ 31+ ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 18+ 298+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 18+ 297+ 20+ , SrcSpan+ "tests/examples/Directory.hs"+ 297+ 27+ 297+ 31+ , SrcSpan+ "tests/examples/Directory.hs"+ 298+ 27+ 298+ 31+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 21+ 297+ 26+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 21+ 297+ 26+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 21+ 297+ 26+ , srcInfoPoints =+ []+ }+ "isDir")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 32+ 297+ 41+ , srcInfoPoints =+ []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 32+ 297+ 38+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 32+ 297+ 38+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 32+ 297+ 38+ , srcInfoPoints =+ []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 39+ 297+ 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 39+ 297+ 40+ , SrcSpan+ "tests/examples/Directory.hs"+ 297+ 40+ 297+ 41+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 39+ 297+ 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 39+ 297+ 40+ , SrcSpan+ "tests/examples/Directory.hs"+ 297+ 40+ 297+ 41+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 39+ 297+ 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 297+ 39+ 297+ 40+ , SrcSpan+ "tests/examples/Directory.hs"+ 297+ 40+ 297+ 41+ ]+ }))))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 298+ 32+ 298+ 39+ , srcInfoPoints =+ []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 298+ 32+ 298+ 37+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 298+ 32+ 298+ 37+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 298+ 32+ 298+ 37+ , srcInfoPoints =+ []+ }+ "throw")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 298+ 38+ 298+ 39+ , srcInfoPoints =+ []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 298+ 38+ 298+ 39+ , srcInfoPoints =+ []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 298+ 38+ 298+ 39+ , srcInfoPoints =+ []+ }+ "e")))))+ ])))+ ]))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 17+ 299+ 24+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 17+ 299+ 18+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 18+ 299+ 23+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 23+ 299+ 24+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 17+ 299+ 24+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 17+ 299+ 18+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 18+ 299+ 23+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 23+ 299+ 24+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 18+ 299+ 23+ , srcInfoPoints = []+ }+ "catch")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 25+ 299+ 68+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 25+ 299+ 26+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 67+ 299+ 68+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 26+ 299+ 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 44+ 299+ 46+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 26+ 299+ 43+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 26+ 299+ 27+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 42+ 299+ 43+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 27+ 299+ 42+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 27+ 299+ 28+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 30+ 299+ 32+ ]+ }+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 28+ 299+ 29+ , srcInfoPoints = []+ }+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 33+ 299+ 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 33+ 299+ 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 33+ 299+ 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 33+ 299+ 39+ , srcInfoPoints =+ []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 40+ 299+ 42+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 40+ 299+ 41+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 41+ 299+ 42+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 40+ 299+ 42+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 40+ 299+ 41+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 41+ 299+ 42+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 40+ 299+ 42+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 40+ 299+ 41+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 41+ 299+ 42+ ]+ }))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 47+ 299+ 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 59+ 299+ 61+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 47+ 299+ 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 47+ 299+ 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 47+ 299+ 58+ , srcInfoPoints = []+ }+ "IOException")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 62+ 299+ 67+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 62+ 299+ 64+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 62+ 299+ 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 62+ 299+ 64+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 65+ 299+ 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 65+ 299+ 66+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 66+ 299+ 67+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 65+ 299+ 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 65+ 299+ 66+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 66+ 299+ 67+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 65+ 299+ 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 299+ 65+ 299+ 66+ , SrcSpan+ "tests/examples/Directory.hs"+ 299+ 66+ 299+ 67+ ]+ }))))))))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 11+ 300+ 46+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 11+ 300+ 12+ , SrcSpan+ "tests/examples/Directory.hs"+ 300+ 36+ 300+ 38+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 13+ 300+ 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 13+ 300+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 13+ 300+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 13+ 300+ 22+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 39+ 300+ 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 39+ 300+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 39+ 300+ 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 39+ 300+ 44+ , srcInfoPoints = []+ }+ "throw")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 45+ 300+ 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 45+ 300+ 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 300+ 45+ 300+ 46+ , srcInfoPoints = []+ }+ "e"))))+ ])+ Nothing+ ])+ ]))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 1 343 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 343 17 343 19 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 1 343 16+ , srcInfoPoints = []+ }+ "removeDirectory"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 343 29 343 31 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 20 343 28+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 32 343 34+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 35 343 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 343 35 343 36+ , SrcSpan "tests/examples/Directory.hs" 343 36 343 37+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 35 343 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 343 35 343 36+ , SrcSpan "tests/examples/Directory.hs" 343 36 343 37+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 343 35 343 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 343 35 343 36+ , SrcSpan "tests/examples/Directory.hs" 343 36 343 37+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 1 345 29+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 1 345 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 1 344 16+ , srcInfoPoints = []+ }+ "removeDirectory")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 17 344 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 17 344 21+ , srcInfoPoints = []+ }+ "path")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 344 22 345 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 344 22 344 23 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 3 345 24+ , srcInfoPoints = []+ }+ "removeDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 25 345 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 25 345 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 345 25 345 29+ , srcInfoPoints = []+ }+ "path")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 1 350 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 350 26 350 28 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 1 350 25+ , srcInfoPoints = []+ }+ "removeDirectoryRecursive"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 350 38 350 40 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 29 350 37+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 41 350 43+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 44 350 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 350 44 350 45+ , SrcSpan "tests/examples/Directory.hs" 350 45 350 46+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 44 350 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 350 44 350 45+ , SrcSpan "tests/examples/Directory.hs" 350 45 350 46+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 350 44 350 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 350 44 350 45+ , SrcSpan "tests/examples/Directory.hs" 350 45 350 46+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 1 363 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 355 3 355 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 1 363 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 355 3 355 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 1 351 25+ , srcInfoPoints = []+ }+ "removeDirectoryRecursive")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 26 351 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 26 351 34+ , srcInfoPoints = []+ }+ "startLoc")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 35 354 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 351 35 351 36 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 351 37 354 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 351 37 351 39+ , SrcSpan "tests/examples/Directory.hs" 352 3 352 3+ , SrcSpan "tests/examples/Directory.hs" 353 3 353 3+ , SrcSpan "tests/examples/Directory.hs" 354 3 354 3+ , SrcSpan "tests/examples/Directory.hs" 355 3 355 3+ , SrcSpan "tests/examples/Directory.hs" 355 3 355 3+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 3 352 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 352 8 352 10 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 3 352 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 3 352 7+ , srcInfoPoints = []+ }+ "cont"))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 11 352 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 11 352 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 352 11 352 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 352 11 352 31+ , srcInfoPoints = []+ }+ "getDirectoryContents")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 352 32 352 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 352 32 352 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 352 32 352 40+ , srcInfoPoints = []+ }+ "startLoc"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 3 353 69+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 3 353 69+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 3 353 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 3 353 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 3 353 12+ , srcInfoPoints = []+ }+ "sequence_")))+ (ListComp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 353 13 353 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 353 13 353 14+ , SrcSpan "tests/examples/Directory.hs" 353 34 353 35+ , SrcSpan "tests/examples/Directory.hs" 353 45 353 46+ , SrcSpan "tests/examples/Directory.hs" 353 68 353 69+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 14 353 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 14 353 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 14 353 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 14 353 16+ , srcInfoPoints = []+ }+ "rm")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 17 353 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 353 17 353 18+ , SrcSpan "tests/examples/Directory.hs" 353 32 353 33+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 18 353 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 18 353 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 18 353 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 18 353 26+ , srcInfoPoints = []+ }+ "startLoc")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 27 353 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 27 353 30+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 27 353 30+ , srcInfoPoints = []+ }+ "</>")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 31 353 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 31 353 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 31 353 32+ , srcInfoPoints = []+ }+ "x"))))))+ [ QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 36 353 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 353 38 353 40 ]+ }+ (Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 36 353 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 353 38 353 40 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 36 353 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 36 353 37+ , srcInfoPoints = []+ }+ "x"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 41 353 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 41 353 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 41 353 45+ , srcInfoPoints = []+ }+ "cont"))))+ , QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 47 353 68+ , srcInfoPoints = []+ }+ (Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 47 353 68+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 47 353 68+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 47 353 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 47 353 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 47 353 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 353+ 47+ 353+ 48+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 49 353 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 49 353 51+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 353+ 49+ 353+ 51+ , srcInfoPoints = []+ }+ "/=")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 52 353 55+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 52 353 55+ , srcInfoPoints = []+ }+ "."+ ".")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 56 353 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 56 353 58+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 56 353 58+ , srcInfoPoints = []+ }+ "&&")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 353 59 353 68+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 59 353 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 59 353 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 353+ 59+ 353+ 60+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 61 353 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 61 353 63+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 353+ 61+ 353+ 63+ , srcInfoPoints = []+ }+ "/=")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 64 353 68+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 353 64 353 68+ , srcInfoPoints = []+ }+ ".."+ "..")))))+ ]))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 3 354 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 3 354 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 3 354 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 354 3 354 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 354 3 354 18+ , srcInfoPoints = []+ }+ "removeDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 354 19 354 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 354 19 354 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 354 19 354 27+ , srcInfoPoints = []+ }+ "startLoc"))))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 5 363 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 356 5 356 5+ , SrcSpan "tests/examples/Directory.hs" 357 5 357 5+ , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 5 356 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 356 8 356 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 5 356 7+ , srcInfoPoints = []+ }+ "rm"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 11 356 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 356 20 356 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 11 356 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 11 356 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 11 356 19+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 356 23 356 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 23 356 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 23 356 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 23 356 25+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 26 356 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 356 26 356 27+ , SrcSpan "tests/examples/Directory.hs" 356 27 356 28+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 26 356 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 356 26 356 27+ , SrcSpan "tests/examples/Directory.hs" 356 27 356 28+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 356 26 356 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 356 26 356 27+ , SrcSpan "tests/examples/Directory.hs" 356 27 356 28+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 5 363 37+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 5 363 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 5 357 7+ , srcInfoPoints = []+ }+ "rm")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 8 357 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 357 8 357 9+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 357 10 363 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 357 10 357 11 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 357 12 363 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 357 12 357 14+ , SrcSpan "tests/examples/Directory.hs" 357 15 357 15+ , SrcSpan "tests/examples/Directory.hs" 358 15 358 15+ , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 357 15 357 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 357 20 357 22 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 357 15 357 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 357 15 357 19+ , srcInfoPoints = []+ }+ "temp"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 357 23 357 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 357 23 357 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 357 23 357 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 357+ 23+ 357+ 26+ , srcInfoPoints = []+ }+ "try")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 357 27 357 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 357 27 357 28+ , SrcSpan+ "tests/examples/Directory.hs" 357 40 357 41+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 357 28 357 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 357+ 28+ 357+ 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 357+ 28+ 357+ 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 357+ 28+ 357+ 38+ , srcInfoPoints = []+ }+ "removeFile")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 357+ 39+ 357+ 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 357+ 39+ 357+ 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 357+ 39+ 357+ 40+ , srcInfoPoints = []+ }+ "f"))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 358 15 363 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 358 15 358 19+ , SrcSpan "tests/examples/Directory.hs" 358 25 358 27+ , SrcSpan "tests/examples/Directory.hs" 359 17 359 17+ , SrcSpan "tests/examples/Directory.hs" 363 17 363 17+ , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+ ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 358 15 363 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 358 15 358 19+ , SrcSpan "tests/examples/Directory.hs" 358 25 358 27+ , SrcSpan "tests/examples/Directory.hs" 359 17 359 17+ , SrcSpan "tests/examples/Directory.hs" 363 17 363 17+ , SrcSpan "tests/examples/Directory.hs" 399 1 399 0+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 358 20 358 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 358 20 358 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 358+ 20+ 358+ 24+ , srcInfoPoints = []+ }+ "temp")))+ [ Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 359 17 362 57+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 359 17 359 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 17+ 359+ 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 17+ 359+ 21+ , srcInfoPoints = []+ }+ "Left"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 22+ 359+ 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 22+ 359+ 23+ , srcInfoPoints = []+ }+ "e")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 359 25 362 57+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 25+ 359+ 27+ ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 28+ 362+ 57+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 28+ 359+ 30+ , SrcSpan+ "tests/examples/Directory.hs"+ 359+ 31+ 359+ 31+ , SrcSpan+ "tests/examples/Directory.hs"+ 361+ 31+ 361+ 31+ , SrcSpan+ "tests/examples/Directory.hs"+ 362+ 31+ 362+ 31+ , SrcSpan+ "tests/examples/Directory.hs"+ 363+ 17+ 363+ 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 31+ 359+ 60+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 37+ 359+ 39+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 31+ 359+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 31+ 359+ 36+ , srcInfoPoints = []+ }+ "isDir"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 40+ 359+ 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 40+ 359+ 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 40+ 359+ 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 40+ 359+ 58+ , srcInfoPoints = []+ }+ "doesDirectoryExist")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 59+ 359+ 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 59+ 359+ 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 359+ 59+ 359+ 60+ , srcInfoPoints = []+ }+ "f"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 31+ 361+ 72+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 31+ 361+ 72+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 31+ 361+ 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 31+ 361+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 31+ 361+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 31+ 361+ 37+ , srcInfoPoints = []+ }+ "unless")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 38+ 361+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 38+ 361+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 38+ 361+ 43+ , srcInfoPoints = []+ }+ "isDir"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 44+ 361+ 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 44+ 361+ 45+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 44+ 361+ 45+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 46+ 361+ 72+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 46+ 361+ 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 46+ 361+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 46+ 361+ 51+ , srcInfoPoints = []+ }+ "throw")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 52+ 361+ 72+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 52+ 361+ 53+ , SrcSpan+ "tests/examples/Directory.hs"+ 361+ 71+ 361+ 72+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 53+ 361+ 71+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 55+ 361+ 57+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 53+ 361+ 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 53+ 361+ 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 53+ 361+ 54+ , srcInfoPoints = []+ }+ "e")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 58+ 361+ 71+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 58+ 361+ 71+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 361+ 58+ 361+ 71+ , srcInfoPoints = []+ }+ "SomeException")))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 31+ 362+ 57+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 31+ 362+ 57+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 31+ 362+ 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 31+ 362+ 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 31+ 362+ 55+ , srcInfoPoints = []+ }+ "removeDirectoryRecursive")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 56+ 362+ 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 56+ 362+ 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 362+ 56+ 362+ 57+ , srcInfoPoints = []+ }+ "f"))))+ ]))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 363 17 363 37+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 363 17 363 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 17+ 363+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 17+ 363+ 22+ , srcInfoPoints = []+ }+ "Right"))+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 23+ 363+ 24+ , srcInfoPoints = []+ }+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 363 25 363 37+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 25+ 363+ 27+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 28+ 363+ 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 28+ 363+ 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 28+ 363+ 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 28+ 363+ 34+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 35+ 363+ 37+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 35+ 363+ 36+ , SrcSpan+ "tests/examples/Directory.hs"+ 363+ 36+ 363+ 37+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 35+ 363+ 37+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 35+ 363+ 36+ , SrcSpan+ "tests/examples/Directory.hs"+ 363+ 36+ 363+ 37+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 35+ 363+ 37+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 363+ 35+ 363+ 36+ , SrcSpan+ "tests/examples/Directory.hs"+ 363+ 36+ 363+ 37+ ]+ })))))+ Nothing+ ])+ ]))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 1 399 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 399 12 399 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 1 399 11+ , srcInfoPoints = []+ }+ "removeFile"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 399 24 399 26 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 15 399 23+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 27 399 29+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 30 399 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 399 30 399 31+ , SrcSpan "tests/examples/Directory.hs" 399 31 399 32+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 30 399 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 399 30 399 31+ , SrcSpan "tests/examples/Directory.hs" 399 31 399 32+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 399 30 399 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 399 30 399 31+ , SrcSpan "tests/examples/Directory.hs" 399 31 399 32+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 1 401 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 1 401 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 1 400 11+ , srcInfoPoints = []+ }+ "removeFile")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 12 400 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 12 400 16+ , srcInfoPoints = []+ }+ "path")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 400 17 401 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 400 17 400 18 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 3 401 19+ , srcInfoPoints = []+ }+ "deleteFile")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 20 401 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 20 401 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 401 20 401 24+ , srcInfoPoints = []+ }+ "path")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 1 452 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 452 17 452 19 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 1 452 16+ , srcInfoPoints = []+ }+ "renameDirectory"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 452 29 452 31 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 20 452 28+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 452 41 452 43 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 32 452 40+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 49+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 44 452 46+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 47 452 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 452 47 452 48+ , SrcSpan "tests/examples/Directory.hs" 452 48 452 49+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 47 452 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 452 47 452 48+ , SrcSpan "tests/examples/Directory.hs" 452 48 452 49+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 452 47 452 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 452 47 452 48+ , SrcSpan "tests/examples/Directory.hs" 452 48 452 49+ ]+ }))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 1 463 64+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 1 463 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 1 453 16+ , srcInfoPoints = []+ }+ "renameDirectory")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 17 453 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 17 453 22+ , srcInfoPoints = []+ }+ "opath")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 23 453 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 23 453 28+ , srcInfoPoints = []+ }+ "npath")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 29 463 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 453 29 453 30 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 453 31 463 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 453 31 453 33+ , SrcSpan "tests/examples/Directory.hs" 456 4 456 4+ , SrcSpan "tests/examples/Directory.hs" 509 1 509 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 4 463 64+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 4 463 64+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 4 456 42+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 4 456 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 4 456 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 4 456 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 4 456 18+ , srcInfoPoints = []+ }+ "withFileStatus")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 19 456 36+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 19 456 36+ , srcInfoPoints = []+ }+ "renameDirectory"+ "renameDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 37 456 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 37 456 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 37 456 42+ , srcInfoPoints = []+ }+ "opath"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 43 456 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 43 456 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 43 456 44+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 456 45 463 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 456 45 456 46+ , SrcSpan "tests/examples/Directory.hs" 456 49 456 51+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 46 456 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 46 456 48+ , srcInfoPoints = []+ }+ "st")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 456 52 463 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 456 52 456 54+ , SrcSpan "tests/examples/Directory.hs" 457 4 457 4+ , SrcSpan "tests/examples/Directory.hs" 457 4 457 4+ , SrcSpan "tests/examples/Directory.hs" 458 4 458 4+ , SrcSpan "tests/examples/Directory.hs" 509 1 509 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 457 4 457 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 457 11 457 13 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 457 4 457 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 457 4 457 10+ , srcInfoPoints = []+ }+ "is_dir"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 457 14 457 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 457 14 457 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 457 14 457 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 457 14 457 25+ , srcInfoPoints = []+ }+ "isDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 457 26 457 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 457 26 457 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 457 26 457 28+ , srcInfoPoints = []+ }+ "st"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 458 4 463 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 458 4 458 6+ , SrcSpan "tests/examples/Directory.hs" 459 5 459 9+ , SrcSpan "tests/examples/Directory.hs" 462 5 462 9+ ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 458 4 463 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 458 4 458 6+ , SrcSpan "tests/examples/Directory.hs" 459 5 459 9+ , SrcSpan "tests/examples/Directory.hs" 462 5 462 9+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 458 7 458 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 458 7 458 8+ , SrcSpan+ "tests/examples/Directory.hs" 458 18 458 19+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 458 8 458 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 458 8 458 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 458+ 8+ 458+ 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 458+ 8+ 458+ 11+ , srcInfoPoints = []+ }+ "not")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 458 12 458 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 458+ 12+ 458+ 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 458+ 12+ 458+ 18+ , srcInfoPoints = []+ }+ "is_dir")))))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 459 10 461 45+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 459 10 459 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 459 10 459 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 459+ 10+ 459+ 21+ , srcInfoPoints = []+ }+ "ioException")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 459 22 461 45+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 459 22 459 23+ , SrcSpan+ "tests/examples/Directory.hs" 461 44 461 45+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 459 23 461 44+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 459+ 23+ 460+ 95+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 459+ 23+ 459+ 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 459+ 23+ 459+ 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 459+ 23+ 459+ 40+ , srcInfoPoints = []+ }+ "ioeSetErrorString")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 27+ 460+ 95+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 27+ 460+ 28+ , SrcSpan+ "tests/examples/Directory.hs"+ 460+ 94+ 460+ 95+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 28+ 460+ 94+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 28+ 460+ 81+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 28+ 460+ 73+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 28+ 460+ 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 28+ 460+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 28+ 460+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 28+ 460+ 37+ , srcInfoPoints = []+ }+ "mkIOError")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 38+ 460+ 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 38+ 460+ 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 38+ 460+ 55+ , srcInfoPoints = []+ }+ "InappropriateType"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 56+ 460+ 73+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 56+ 460+ 73+ , srcInfoPoints = []+ }+ "renameDirectory"+ "renameDirectory")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 74+ 460+ 81+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 74+ 460+ 81+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 74+ 460+ 81+ , srcInfoPoints = []+ }+ "Nothing"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 82+ 460+ 94+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 82+ 460+ 83+ , SrcSpan+ "tests/examples/Directory.hs"+ 460+ 93+ 460+ 94+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 83+ 460+ 93+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 83+ 460+ 87+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 83+ 460+ 87+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 83+ 460+ 87+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 88+ 460+ 93+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 88+ 460+ 93+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 460+ 88+ 460+ 93+ , srcInfoPoints = []+ }+ "opath"))))))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 461+ 27+ 461+ 44+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 461+ 27+ 461+ 44+ , srcInfoPoints = []+ }+ "not a directory"+ "not a directory")))))+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 462 10 463 64+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 462 10 462 12+ , SrcSpan "tests/examples/Directory.hs" 463 4 463 4+ , SrcSpan "tests/examples/Directory.hs" 463 4 463 4+ , SrcSpan "tests/examples/Directory.hs" 509 1 509 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 463 4 463 64+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 463 4 463 64+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 4+ 463+ 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 4+ 463+ 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 4+ 463+ 20+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 4+ 463+ 20+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 4+ 463+ 20+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 4+ 463+ 20+ , srcInfoPoints = []+ }+ "moveFileEx")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 21+ 463+ 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 21+ 463+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 21+ 463+ 26+ , srcInfoPoints = []+ }+ "opath"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 27+ 463+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 27+ 463+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 27+ 463+ 32+ , srcInfoPoints = []+ }+ "npath"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 33+ 463+ 64+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 33+ 463+ 64+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 33+ 463+ 64+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 463+ 33+ 463+ 64+ , srcInfoPoints = []+ }+ "mOVEFILE_REPLACE_EXISTING"))))+ ]))+ ])))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 1 509 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 509 12 509 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 1 509 11+ , srcInfoPoints = []+ }+ "renameFile"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 509 24 509 26 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 15 509 23+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 509 36 509 38 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 27 509 35+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 44+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 39 509 41+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 42 509 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 509 42 509 43+ , SrcSpan "tests/examples/Directory.hs" 509 43 509 44+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 42 509 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 509 42 509 43+ , SrcSpan "tests/examples/Directory.hs" 509 43 509 44+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 509 42 509 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 509 42 509 43+ , SrcSpan "tests/examples/Directory.hs" 509 43 509 44+ ]+ }))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 1 520 64+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 1 520 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 1 510 11+ , srcInfoPoints = []+ }+ "renameFile")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 12 510 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 12 510 17+ , srcInfoPoints = []+ }+ "opath")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 18 510 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 18 510 23+ , srcInfoPoints = []+ }+ "npath")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 24 520 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 510 24 510 25 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 510 26 520 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 510 26 510 28+ , SrcSpan "tests/examples/Directory.hs" 513 4 513 4+ , SrcSpan "tests/examples/Directory.hs" 528 1 528 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 4 520 64+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 4 520 64+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 4 513 46+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 4 513 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 4 513 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 4 513 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 4 513 27+ , srcInfoPoints = []+ }+ "withFileOrSymlinkStatus")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 28 513 40+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 28 513 40+ , srcInfoPoints = []+ }+ "renameFile"+ "renameFile")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 41 513 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 41 513 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 41 513 46+ , srcInfoPoints = []+ }+ "opath"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 47 513 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 47 513 48+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 47 513 48+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 513 49 520 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 513 49 513 50+ , SrcSpan "tests/examples/Directory.hs" 513 53 513 55+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 50 513 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 50 513 52+ , srcInfoPoints = []+ }+ "st")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 513 56 520 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 513 56 513 58+ , SrcSpan "tests/examples/Directory.hs" 514 4 514 4+ , SrcSpan "tests/examples/Directory.hs" 514 4 514 4+ , SrcSpan "tests/examples/Directory.hs" 515 4 515 4+ , SrcSpan "tests/examples/Directory.hs" 528 1 528 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 514 4 514 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 514 11 514 13 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 514 4 514 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 514 4 514 10+ , srcInfoPoints = []+ }+ "is_dir"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 514 14 514 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 514 14 514 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 514 14 514 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 514 14 514 25+ , srcInfoPoints = []+ }+ "isDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 514 26 514 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 514 26 514 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 514 26 514 28+ , srcInfoPoints = []+ }+ "st"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 515 4 520 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 515 4 515 6+ , SrcSpan "tests/examples/Directory.hs" 516 5 516 9+ , SrcSpan "tests/examples/Directory.hs" 519 5 519 9+ ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 515 4 520 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 515 4 515 6+ , SrcSpan "tests/examples/Directory.hs" 516 5 516 9+ , SrcSpan "tests/examples/Directory.hs" 519 5 519 9+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 515 7 515 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 515 7 515 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 515 7 515 13+ , srcInfoPoints = []+ }+ "is_dir")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 516 10 518 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 516 10 516 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 516 10 516 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 516+ 10+ 516+ 21+ , srcInfoPoints = []+ }+ "ioException")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 516 22 518 32+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 516 22 516 23+ , SrcSpan+ "tests/examples/Directory.hs" 518 31 518 32+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 516 23 518 31+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 516+ 23+ 517+ 78+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 516+ 23+ 516+ 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 516+ 23+ 516+ 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 516+ 23+ 516+ 40+ , srcInfoPoints = []+ }+ "ioeSetErrorString")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 15+ 517+ 78+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 15+ 517+ 16+ , SrcSpan+ "tests/examples/Directory.hs"+ 517+ 77+ 517+ 78+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 16+ 517+ 77+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 16+ 517+ 64+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 16+ 517+ 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 16+ 517+ 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 16+ 517+ 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 16+ 517+ 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 16+ 517+ 25+ , srcInfoPoints = []+ }+ "mkIOError")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 26+ 517+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 26+ 517+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 26+ 517+ 43+ , srcInfoPoints = []+ }+ "InappropriateType"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 44+ 517+ 56+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 44+ 517+ 56+ , srcInfoPoints = []+ }+ "renameFile"+ "renameFile")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 57+ 517+ 64+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 57+ 517+ 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 57+ 517+ 64+ , srcInfoPoints = []+ }+ "Nothing"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 65+ 517+ 77+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 65+ 517+ 66+ , SrcSpan+ "tests/examples/Directory.hs"+ 517+ 76+ 517+ 77+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 66+ 517+ 76+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 66+ 517+ 70+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 66+ 517+ 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 66+ 517+ 70+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 71+ 517+ 76+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 71+ 517+ 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 517+ 71+ 517+ 76+ , srcInfoPoints = []+ }+ "opath"))))))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 518+ 15+ 518+ 31+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 518+ 15+ 518+ 31+ , srcInfoPoints = []+ }+ "is a directory"+ "is a directory")))))+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 519 10 520 64+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 519 10 519 12+ , SrcSpan "tests/examples/Directory.hs" 520 4 520 4+ , SrcSpan "tests/examples/Directory.hs" 520 4 520 4+ , SrcSpan "tests/examples/Directory.hs" 528 1 528 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 520 4 520 64+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 520 4 520 64+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 4+ 520+ 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 4+ 520+ 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 4+ 520+ 20+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 4+ 520+ 20+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 4+ 520+ 20+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 4+ 520+ 20+ , srcInfoPoints = []+ }+ "moveFileEx")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 21+ 520+ 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 21+ 520+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 21+ 520+ 26+ , srcInfoPoints = []+ }+ "opath"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 27+ 520+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 27+ 520+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 27+ 520+ 32+ , srcInfoPoints = []+ }+ "npath"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 33+ 520+ 64+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 33+ 520+ 64+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 33+ 520+ 64+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 520+ 33+ 520+ 64+ , srcInfoPoints = []+ }+ "mOVEFILE_REPLACE_EXISTING"))))+ ]))+ ])))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 1 528 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 528 10 528 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 1 528 9+ , srcInfoPoints = []+ }+ "copyFile"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 528 22 528 24 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 13 528 21+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 528 34 528 36 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 25 528 33+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 37 528 39+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 40 528 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 528 40 528 41+ , SrcSpan "tests/examples/Directory.hs" 528 41 528 42+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 40 528 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 528 40 528 41+ , SrcSpan "tests/examples/Directory.hs" 528 41 528 42+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 528 40 528 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 528 40 528 41+ , SrcSpan "tests/examples/Directory.hs" 528 41 528 42+ ]+ }))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 1 551 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 531 5 531 10 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 1 551 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 531 5 531 10 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 1 529 9+ , srcInfoPoints = []+ }+ "copyFile")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 10 529 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 10 529 19+ , srcInfoPoints = []+ }+ "fromFPath")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 20 529 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 20 529 27+ , srcInfoPoints = []+ }+ "toFPath")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 529 28 530 73+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 529 28 529 29 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 73+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 5 530 9+ , srcInfoPoints = []+ }+ "copy")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 10 530 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 530 10 530 11+ , SrcSpan "tests/examples/Directory.hs" 530 11 530 24+ , SrcSpan "tests/examples/Directory.hs" 530 24 530 25+ ]+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 10 530 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 530 10 530 11+ , SrcSpan "tests/examples/Directory.hs" 530 11 530 24+ , SrcSpan "tests/examples/Directory.hs" 530 24 530 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 11 530 24+ , srcInfoPoints = []+ }+ "Prelude")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 11 530 24+ , srcInfoPoints = []+ }+ "catch")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 26 530 73+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 530 26 530 27+ , SrcSpan "tests/examples/Directory.hs" 530 72 530 73+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 27 530 72+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 530 27 530 28+ , SrcSpan "tests/examples/Directory.hs" 530 32 530 34+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 28 530 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 28 530 31+ , srcInfoPoints = []+ }+ "exc")+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 530 35 530 72+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 35 530 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 35 530 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 35 530 40+ , srcInfoPoints = []+ }+ "throw")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 41 530 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 41 530 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 41 530 42+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 43 530 72+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 43 530 61+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 43 530 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 43 530 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 530 43 530 57+ , srcInfoPoints = []+ }+ "ioeSetLocation")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 58 530 61+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 58 530 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 530 58 530 61+ , srcInfoPoints = []+ }+ "exc"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 62 530 72+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 530 62 530 72+ , srcInfoPoints = []+ }+ "copyFile"+ "copyFile"))))))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 551 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 531 11 531 11+ , SrcSpan "tests/examples/Directory.hs" 537 11 537 11+ , SrcSpan "tests/examples/Directory.hs" 538 11 538 11+ , SrcSpan "tests/examples/Directory.hs" 541 11 541 11+ , SrcSpan "tests/examples/Directory.hs" 543 11 543 11+ , SrcSpan "tests/examples/Directory.hs" 549 11 549 11+ , SrcSpan "tests/examples/Directory.hs" 550 11 550 11+ , SrcSpan "tests/examples/Directory.hs" 551 11 551 11+ , SrcSpan "tests/examples/Directory.hs" 560 1 560 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 536 48+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 531 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 11 531 15+ , srcInfoPoints = []+ }+ "copy"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 16 536 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 531 16 531 17 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 531 18 536 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 18 531 68+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 18 531 61+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 18 531 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 18 531 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 531 18 531 25+ , srcInfoPoints = []+ }+ "bracket")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 26 531 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 531 26 531 27+ , SrcSpan "tests/examples/Directory.hs" 531 60 531 61+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 27 531 60+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 531 27 531 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 531 27 531 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 531+ 27+ 531+ 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 531+ 27+ 531+ 41+ , srcInfoPoints = []+ }+ "openBinaryFile")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 531 42 531 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 531+ 42+ 531+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 531+ 42+ 531+ 51+ , srcInfoPoints = []+ }+ "fromFPath"))))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 531 52 531 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 531 52 531 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 531+ 52+ 531+ 60+ , srcInfoPoints = []+ }+ "ReadMode"))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 62 531 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 62 531 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 62 531 68+ , srcInfoPoints = []+ }+ "hClose"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 69 531 70+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 69 531 70+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 69 531 70+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 71 536 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 531 71 531 72+ , SrcSpan "tests/examples/Directory.hs" 531 78 531 80+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 72 531 77+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 531 72 531 77+ , srcInfoPoints = []+ }+ "hFrom")+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 18 536 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 18 532 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 18 532 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 18 532 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 18 532 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 532+ 18+ 532+ 32+ , srcInfoPoints = []+ }+ "bracketOnError")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 33 532 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 33 532 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 532+ 33+ 532+ 40+ , srcInfoPoints = []+ }+ "openTmp"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 41 532 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 41 532 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 41 532 49+ , srcInfoPoints = []+ }+ "cleanTmp"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 50 532 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 50 532 51+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 50 532 51+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 52 536 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 532 52 532 53+ , SrcSpan "tests/examples/Directory.hs" 532 70 532 72+ ]+ }+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 532 53 532 69+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 532 53 532 54+ , SrcSpan+ "tests/examples/Directory.hs" 532 62 532 63+ , SrcSpan+ "tests/examples/Directory.hs" 532 68 532 69+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 54 532 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 532+ 54+ 532+ 62+ , srcInfoPoints = []+ }+ "tmpFPath")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 532 64 532 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 532+ 64+ 532+ 68+ , srcInfoPoints = []+ }+ "hTmp")+ ]+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 533 18 536 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 533 18 533 20+ , SrcSpan+ "tests/examples/Directory.hs" 533 21 533 21+ , SrcSpan+ "tests/examples/Directory.hs" 534 21 534 21+ , SrcSpan+ "tests/examples/Directory.hs" 535 21 535 21+ , SrcSpan+ "tests/examples/Directory.hs" 536 21 536 21+ , SrcSpan "tests/examples/Directory.hs" 537 11 537 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 533 21 533 69+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 533 21 533 69+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 21+ 533+ 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 21+ 533+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 21+ 533+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 21+ 533+ 32+ , srcInfoPoints = []+ }+ "allocaBytes")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 33+ 533+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 33+ 533+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 33+ 533+ 43+ , srcInfoPoints = []+ }+ "bufferSize"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 44+ 533+ 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 44+ 533+ 45+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 44+ 533+ 45+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 46+ 533+ 69+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 46+ 533+ 64+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 46+ 533+ 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 46+ 533+ 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 46+ 533+ 58+ , srcInfoPoints = []+ }+ "copyContents")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 59+ 533+ 64+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 59+ 533+ 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 59+ 533+ 64+ , srcInfoPoints = []+ }+ "hFrom"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 65+ 533+ 69+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 65+ 533+ 69+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 533+ 65+ 533+ 69+ , srcInfoPoints = []+ }+ "hTmp")))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 534 21 534 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 534 21 534 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 534+ 21+ 534+ 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 534+ 21+ 534+ 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 534+ 21+ 534+ 27+ , srcInfoPoints = []+ }+ "hClose")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 534+ 28+ 534+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 534+ 28+ 534+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 534+ 28+ 534+ 32+ , srcInfoPoints = []+ }+ "hTmp"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 535 21 535 76+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 535 21 535 76+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 21+ 535+ 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 21+ 535+ 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 21+ 535+ 39+ , srcInfoPoints = []+ }+ "ignoreIOExceptions")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 40+ 535+ 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 40+ 535+ 41+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 40+ 535+ 41+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 42+ 535+ 76+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 42+ 535+ 67+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 42+ 535+ 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 42+ 535+ 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 42+ 535+ 57+ , srcInfoPoints = []+ }+ "copyPermissions")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 58+ 535+ 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 58+ 535+ 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 58+ 535+ 67+ , srcInfoPoints = []+ }+ "fromFPath"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 68+ 535+ 76+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 68+ 535+ 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 535+ 68+ 535+ 76+ , srcInfoPoints = []+ }+ "tmpFPath")))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 536 21 536 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 536 21 536 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 21+ 536+ 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 21+ 536+ 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 21+ 536+ 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 21+ 536+ 31+ , srcInfoPoints = []+ }+ "renameFile")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 32+ 536+ 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 32+ 536+ 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 32+ 536+ 40+ , srcInfoPoints = []+ }+ "tmpFPath"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 41+ 536+ 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 41+ 536+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 536+ 41+ 536+ 48+ , srcInfoPoints = []+ }+ "toFPath"))))+ ]))))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 11 537 79+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 11 537 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 11 537 18+ , srcInfoPoints = []+ }+ "openTmp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 19 537 79+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 537 19 537 20 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 537 21 537 79+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 21 537 63+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 21 537 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 21 537 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 21 537 39+ , srcInfoPoints = []+ }+ "openBinaryTempFile")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 40 537 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 537 40 537 41+ , SrcSpan "tests/examples/Directory.hs" 537 62 537 63+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 41 537 62+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 41 537 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 537 41 537 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 537 41 537 54+ , srcInfoPoints = []+ }+ "takeDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 55 537 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 537 55 537 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 537 55 537 62+ , srcInfoPoints = []+ }+ "toFPath"))))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 64 537 79+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 537 64 537 79+ , srcInfoPoints = []+ }+ ".copyFile.tmp"+ ".copyFile.tmp"))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 538 11 540 60+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 538 11 540 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 538 11 538 19+ , srcInfoPoints = []+ }+ "cleanTmp")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 538 20 538 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 538 20 538 21+ , SrcSpan "tests/examples/Directory.hs" 538 29 538 30+ , SrcSpan "tests/examples/Directory.hs" 538 35 538 36+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 538 21 538 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 538 21 538 29+ , srcInfoPoints = []+ }+ "tmpFPath")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 538 31 538 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 538 31 538 35+ , srcInfoPoints = []+ }+ "hTmp")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 539 15 540 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 539 15 539 16 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 539 17 540 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 539 17 539 19+ , SrcSpan "tests/examples/Directory.hs" 539 20 539 20+ , SrcSpan "tests/examples/Directory.hs" 540 20 540 20+ , SrcSpan "tests/examples/Directory.hs" 541 11 541 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 539 20 539 52+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 539 20 539 52+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 539 20 539 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 539 20 539 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 539+ 20+ 539+ 38+ , srcInfoPoints = []+ }+ "ignoreIOExceptions")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 539 39 539 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 539 39 539 40+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 539+ 39+ 539+ 40+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 539 41 539 52+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 539 41 539 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 539+ 41+ 539+ 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 539+ 41+ 539+ 47+ , srcInfoPoints = []+ }+ "hClose")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 539 48 539 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 539+ 48+ 539+ 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 539+ 48+ 539+ 52+ , srcInfoPoints = []+ }+ "hTmp")))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 540 20 540 60+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 540 20 540 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 540 20 540 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 540 20 540 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 540+ 20+ 540+ 38+ , srcInfoPoints = []+ }+ "ignoreIOExceptions")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 540 39 540 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 540 39 540 40+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 540+ 39+ 540+ 40+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 540 41 540 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 540 41 540 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 540+ 41+ 540+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 540+ 41+ 540+ 51+ , srcInfoPoints = []+ }+ "removeFile")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 540 52 540 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 540+ 52+ 540+ 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 540+ 52+ 540+ 60+ , srcInfoPoints = []+ }+ "tmpFPath")))))+ ]))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 11 541 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 11 541 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 11 541 21+ , srcInfoPoints = []+ }+ "bufferSize"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 22 541 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 541 22 541 23 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 541 24 541 28+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 541 24 541 28+ , srcInfoPoints = []+ }+ 1024+ "1024")))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 11 547 56+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 11 547 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 11 543 23+ , srcInfoPoints = []+ }+ "copyContents")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 543 24 543 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 543 24 543 29+ , srcInfoPoints = []+ }+ "hFrom")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 543 30 543 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 543 30 543 33+ , srcInfoPoints = []+ }+ "hTo")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 543 34 543 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 543 34 543 40+ , srcInfoPoints = []+ }+ "buffer")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 543 41 547 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 543 41 543 42 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 543 43 547 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 543 43 543 45+ , SrcSpan "tests/examples/Directory.hs" 544 19 544 19+ , SrcSpan "tests/examples/Directory.hs" 545 19 545 19+ , SrcSpan "tests/examples/Directory.hs" 549 11 549 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 544 19 544 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 544 25 544 27 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 544 19 544 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 544 19 544 24+ , srcInfoPoints = []+ }+ "count"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 544 28 544 59+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 544 28 544 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 544 28 544 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 28+ 544+ 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 28+ 544+ 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 28+ 544+ 35+ , srcInfoPoints = []+ }+ "hGetBuf")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 36+ 544+ 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 36+ 544+ 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 36+ 544+ 41+ , srcInfoPoints = []+ }+ "hFrom"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 544 42 544 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 42+ 544+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 42+ 544+ 48+ , srcInfoPoints = []+ }+ "buffer"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 544 49 544 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 544 49 544 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 544+ 49+ 544+ 59+ , srcInfoPoints = []+ }+ "bufferSize"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 545 19 547 56+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 545 19 547 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 545 19 545 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 545 19 545 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 19+ 545+ 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 19+ 545+ 23+ , srcInfoPoints = []+ }+ "when")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 545 24 545 35+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 545 24 545 25+ , SrcSpan+ "tests/examples/Directory.hs" 545 34 545 35+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 25+ 545+ 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 25+ 545+ 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 25+ 545+ 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 25+ 545+ 30+ , srcInfoPoints = []+ }+ "count")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 31+ 545+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 31+ 545+ 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 31+ 545+ 32+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 33+ 545+ 34+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 33+ 545+ 34+ , srcInfoPoints = []+ }+ 0+ "0")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 545 36 545 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 545 36 545 37+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 545+ 36+ 545+ 37+ , srcInfoPoints = []+ }+ "$")))+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 545 38 547 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 545 38 545 40+ , SrcSpan+ "tests/examples/Directory.hs" 546 27 546 27+ , SrcSpan+ "tests/examples/Directory.hs" 547 27 547 27+ , SrcSpan+ "tests/examples/Directory.hs" 549 11 549 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 546 27 546 51+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 27+ 546+ 51+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 27+ 546+ 45+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 27+ 546+ 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 27+ 546+ 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 27+ 546+ 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 27+ 546+ 34+ , srcInfoPoints = []+ }+ "hPutBuf")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 35+ 546+ 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 35+ 546+ 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 35+ 546+ 38+ , srcInfoPoints = []+ }+ "hTo"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 39+ 546+ 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 39+ 546+ 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 39+ 546+ 45+ , srcInfoPoints = []+ }+ "buffer"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 46+ 546+ 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 46+ 546+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 546+ 46+ 546+ 51+ , srcInfoPoints = []+ }+ "count"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 547 27 547 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 27+ 547+ 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 27+ 547+ 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 27+ 547+ 45+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 27+ 547+ 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 27+ 547+ 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 27+ 547+ 39+ , srcInfoPoints = []+ }+ "copyContents")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 40+ 547+ 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 40+ 547+ 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 40+ 547+ 45+ , srcInfoPoints = []+ }+ "hFrom"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 46+ 547+ 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 46+ 547+ 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 46+ 547+ 49+ , srcInfoPoints = []+ }+ "hTo"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 50+ 547+ 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 50+ 547+ 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 547+ 50+ 547+ 56+ , srcInfoPoints = []+ }+ "buffer"))))+ ]))+ ]))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 11 549 64+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 11 549 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 11 549 29+ , srcInfoPoints = []+ }+ "ignoreIOExceptions")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 30 549 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 30 549 32+ , srcInfoPoints = []+ }+ "io")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 549 33 549 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 549 33 549 34 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 35 549 64+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 35 549 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 35 549 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 35 549 37+ , srcInfoPoints = []+ }+ "io")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 38 549 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 549 38 549 39+ , SrcSpan "tests/examples/Directory.hs" 549 39 549 44+ , SrcSpan "tests/examples/Directory.hs" 549 44 549 45+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 38 549 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 549 38 549 39+ , SrcSpan "tests/examples/Directory.hs" 549 39 549 44+ , SrcSpan "tests/examples/Directory.hs" 549 44 549 45+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 39 549 44+ , srcInfoPoints = []+ }+ "catch")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 46 549 64+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 46 549 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 549 46 549 64+ , srcInfoPoints = []+ }+ "ioExceptionIgnorer")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 11 550 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 550 30 550 32 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 11 550 29+ , srcInfoPoints = []+ }+ "ioExceptionIgnorer"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 33 550 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 550 45 550 47 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 33 550 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 33 550 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 33 550 44+ , srcInfoPoints = []+ }+ "IOException")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 550 48 550 53+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 48 550 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 48 550 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 48 550 50+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 51 550 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 550 51 550 52+ , SrcSpan "tests/examples/Directory.hs" 550 52 550 53+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 51 550 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 550 51 550 52+ , SrcSpan "tests/examples/Directory.hs" 550 52 550 53+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 550 51 550 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 550 51 550 52+ , SrcSpan "tests/examples/Directory.hs" 550 52 550 53+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 11 551 43+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 11 551 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 11 551 29+ , srcInfoPoints = []+ }+ "ioExceptionIgnorer")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 30 551 31+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 551 32 551 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 551 32 551 33 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 34 551 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 34 551 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 34 551 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 34 551 40+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 41 551 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 551 41 551 42+ , SrcSpan "tests/examples/Directory.hs" 551 42 551 43+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 41 551 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 551 41 551 42+ , SrcSpan "tests/examples/Directory.hs" 551 42 551 43+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 551 41 551 43+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 551 41 551 42+ , SrcSpan+ "tests/examples/Directory.hs" 551 42 551 43+ ]+ })))))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 1 560 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 560 18 560 20 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 1 560 17+ , srcInfoPoints = []+ }+ "canonicalizePath"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 560 30 560 32 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 21 560 29+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 44+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 33 560 35+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 36 560 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 36 560 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 560 36 560 44+ , srcInfoPoints = []+ }+ "FilePath")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 1 563 31+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 1 563 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 1 561 17+ , srcInfoPoints = []+ }+ "canonicalizePath")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 18 561 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 18 561 23+ , srcInfoPoints = []+ }+ "fpath")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 561 24 563 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 561 24 561 25 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 5 563 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 562 5 562 7+ , SrcSpan "tests/examples/Directory.hs" 562 8 562 8+ , SrcSpan "tests/examples/Directory.hs" 563 8 563 8+ , SrcSpan "tests/examples/Directory.hs" 568 1 568 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 8 562 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 562 13 562 15 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 8 562 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 8 562 12+ , srcInfoPoints = []+ }+ "path"))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 16 562 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 16 562 37+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 562 16 562 37+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 562 16 562 37+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 562 16 562 37+ , srcInfoPoints = []+ }+ "getFullPathName")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 562 38 562 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 562 38 562 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 562 38 562 43+ , srcInfoPoints = []+ }+ "fpath"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 8 563 31+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 8 563 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 8 563 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 8 563 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 8 563 14+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 563 15 563 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 563 15 563 16+ , SrcSpan "tests/examples/Directory.hs" 563 30 563 31+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 16 563 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 16 563 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 16 563 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 16 563 25+ , srcInfoPoints = []+ }+ "normalise")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 26 563 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 26 563 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 563 26 563 30+ , srcInfoPoints = []+ }+ "path"))))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 1 568 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 568 32 568 34 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 1 568 31+ , srcInfoPoints = []+ }+ "makeRelativeToCurrentDirectory"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 568 44 568 46 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 35 568 43+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 58+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 47 568 49+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 50 568 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 50 568 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 568 50 568 58+ , srcInfoPoints = []+ }+ "FilePath")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 1 571 32+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 1 571 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 1 569 31+ , srcInfoPoints = []+ }+ "makeRelativeToCurrentDirectory")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 32 569 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 32 569 33+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 34 571 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 569 34 569 35 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 569 36 571 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 569 36 569 38+ , SrcSpan "tests/examples/Directory.hs" 570 5 570 5+ , SrcSpan "tests/examples/Directory.hs" 571 5 571 5+ , SrcSpan "tests/examples/Directory.hs" 591 1 591 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 5 570 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 570 9 570 11 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 5 570 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 5 570 8+ , srcInfoPoints = []+ }+ "cur"))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 12 570 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 570 12 570 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 570 12 570 31+ , srcInfoPoints = []+ }+ "getCurrentDirectory")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 5 571 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 5 571 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 5 571 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 5 571 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 5 571 11+ , srcInfoPoints = []+ }+ "return")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 12 571 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 12 571 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 12 571 13+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 571 14 571 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 14 571 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 14 571 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 14 571 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 14 571 26+ , srcInfoPoints = []+ }+ "makeRelative")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 27 571 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 27 571 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 27 571 30+ , srcInfoPoints = []+ }+ "cur"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 31 571 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 31 571 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 571 31 571 32+ , srcInfoPoints = []+ }+ "x")))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 1 591 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 591 16 591 18 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 1 591 15+ , srcInfoPoints = []+ }+ "findExecutable"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 591 26 591 28 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 19 591 25+ , srcInfoPoints = []+ }+ "String")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 48+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 29 591 31+ , srcInfoPoints = []+ }+ "IO")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 32 591 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 591 32 591 33+ , SrcSpan "tests/examples/Directory.hs" 591 47 591 48+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 47+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 33 591 38+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 39 591 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 39 591 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 591 39 591 47+ , srcInfoPoints = []+ }+ "FilePath")))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 1 593 53+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 1 593 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 1 592 15+ , srcInfoPoints = []+ }+ "findExecutable")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 16 592 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 16 592 22+ , srcInfoPoints = []+ }+ "binary")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 592 23 593 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 592 23 592 24 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 53+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 19+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 3 593 19+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 3 593 19+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 3 593 19+ , srcInfoPoints = []+ }+ "searchPath")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 20 593 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 20 593 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 20 593 27+ , srcInfoPoints = []+ }+ "Nothing"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 28 593 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 28 593 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 28 593 34+ , srcInfoPoints = []+ }+ "binary"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 35 593 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 593 35 593 36+ , SrcSpan "tests/examples/Directory.hs" 593 52 593 53+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 36 593 52+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 36 593 39+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 36 593 39+ , srcInfoPoints = []+ }+ '.'+ "."))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 39 593 40+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 39 593 40+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 39 593 40+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 593 40 593 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 40 593 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 593 40 593 52+ , srcInfoPoints = []+ }+ "exeExtension")))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 1 627 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 627 22 627 24 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 1 627 21+ , srcInfoPoints = []+ }+ "getDirectoryContents"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 627 34 627 36 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 25 627 33+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 50+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 37 627 39+ , srcInfoPoints = []+ }+ "IO")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 40 627 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 627 40 627 41+ , SrcSpan "tests/examples/Directory.hs" 627 49 627 50+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 41 627 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 41 627 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 627 41 627 49+ , srcInfoPoints = []+ }+ "FilePath"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 1 644 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 635 3 635 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 1 644 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 635 3 635 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 1 628 21+ , srcInfoPoints = []+ }+ "getDirectoryContents")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 22 628 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 22 628 26+ , srcInfoPoints = []+ }+ "path")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 628 27 634 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 628 27 628 28 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 634 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 630 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 629 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 629 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 3 629 16+ , srcInfoPoints = []+ }+ "modifyIOError")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 17 630 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 629 17 629 18+ , SrcSpan "tests/examples/Directory.hs" 630 59 630 60+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 629 18 630 59+ , srcInfoPoints = []+ }+ (RightSection+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 18 629 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 629 18 629 19+ , SrcSpan "tests/examples/Directory.hs" 629 40 629 41+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 19 629 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 629 19 629 20+ , SrcSpan "tests/examples/Directory.hs" 629 20 629 34+ , SrcSpan "tests/examples/Directory.hs" 629 34 629 35+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 19 629 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 629 19 629 20+ , SrcSpan "tests/examples/Directory.hs" 629 20 629 34+ , SrcSpan "tests/examples/Directory.hs" 629 34 629 35+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 20 629 34+ , srcInfoPoints = []+ }+ "ioeSetFileName")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 36 629 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 36 629 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 36 629 40+ , srcInfoPoints = []+ }+ "path"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 42 629 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 42 629 43+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 629 42 629 43+ , srcInfoPoints = []+ }+ ".")))+ (RightSection+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 630 18 630 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 630 18 630 19+ , SrcSpan "tests/examples/Directory.hs" 630 58 630 59+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 630 19 630 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 630 19 630 20+ , SrcSpan "tests/examples/Directory.hs" 630 20 630 34+ , SrcSpan "tests/examples/Directory.hs" 630 34 630 35+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 630 19 630 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 630 19 630 20+ , SrcSpan "tests/examples/Directory.hs" 630 20 630 34+ , SrcSpan "tests/examples/Directory.hs" 630 34 630 35+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 630 20 630 34+ , srcInfoPoints = []+ }+ "ioeSetLocation")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 630 36 630 58+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 630 36 630 58+ , srcInfoPoints = []+ }+ "getDirectoryContents"+ "getDirectoryContents"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 61 630 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 61 630 62+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 61 630 62+ , srcInfoPoints = []+ }+ "$")))+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 630 63 634 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 630 63 630 65+ , SrcSpan "tests/examples/Directory.hs" 631 3 631 3+ , SrcSpan "tests/examples/Directory.hs" 635 3 635 3+ , SrcSpan "tests/examples/Directory.hs" 635 3 635 3+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 631 3 634 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 631 3 634 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 631 3 633 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 631 3 632 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 631 3 631 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 631 3 631 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 631 3 631 10+ , srcInfoPoints = []+ }+ "bracket")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 632 6 632 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 632 6 632 7+ , SrcSpan "tests/examples/Directory.hs" 632 41 632 42+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 632 7 632 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 632 7 632 26+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 632 7 632 26+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 7+ 632+ 26+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 7+ 632+ 26+ , srcInfoPoints = []+ }+ "findFirstFile")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 632 27 632 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 632 27 632 28+ , SrcSpan+ "tests/examples/Directory.hs" 632 40 632 41+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 632 28 632 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 28+ 632+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 28+ 632+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 28+ 632+ 32+ , srcInfoPoints = []+ }+ "path")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 33+ 632+ 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 33+ 632+ 36+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 33+ 632+ 36+ , srcInfoPoints = []+ }+ "</>")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 37+ 632+ 40+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 632+ 37+ 632+ 40+ , srcInfoPoints = []+ }+ "*"+ "*")))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 633 6 633 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 633 6 633 7+ , SrcSpan "tests/examples/Directory.hs" 633 34 633 35+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 633 7 633 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 633 7 633 8+ , SrcSpan "tests/examples/Directory.hs" 633 14 633 16+ ]+ }+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 633 8 633 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 633 8 633 9+ , SrcSpan+ "tests/examples/Directory.hs" 633 10 633 11+ , SrcSpan+ "tests/examples/Directory.hs" 633 12 633 13+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 633 9 633 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 633 9 633 10+ , srcInfoPoints = []+ }+ "h")+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 633 11 633 12+ , srcInfoPoints = []+ }+ ]+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 633 17 633 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 633 17 633 32+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 633 17 633 32+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 633+ 17+ 633+ 32+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 633+ 17+ 633+ 32+ , srcInfoPoints = []+ }+ "findClose")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 633 33 633 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 633 33 633 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 633+ 33+ 633+ 34+ , srcInfoPoints = []+ }+ "h")))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 634 6 634 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 634 6 634 7+ , SrcSpan "tests/examples/Directory.hs" 634 34 634 35+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 634 7 634 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 634 7 634 8+ , SrcSpan "tests/examples/Directory.hs" 634 17 634 19+ ]+ }+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 634 8 634 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 634 8 634 9+ , SrcSpan "tests/examples/Directory.hs" 634 10 634 11+ , SrcSpan "tests/examples/Directory.hs" 634 15 634 16+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 634 9 634 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 9 634 10+ , srcInfoPoints = []+ }+ "h")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 11 634 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 11 634 15+ , srcInfoPoints = []+ }+ "fdat")+ ]+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 634 20 634 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 634 20 634 31+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 20 634 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 20 634 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 634+ 20+ 634+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 634+ 20+ 634+ 24+ , srcInfoPoints = []+ }+ "loop")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 25 634 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 634+ 25+ 634+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 634+ 25+ 634+ 26+ , srcInfoPoints = []+ }+ "h"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 27 634 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 634 27 634 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 634+ 27+ 634+ 31+ , srcInfoPoints = []+ }+ "fdat"))))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 634 32 634 34+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 634 32 634 33+ , SrcSpan+ "tests/examples/Directory.hs" 634 33 634 34+ ]+ }+ [])))))+ ])))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 5 644 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 638 5 638 5+ , SrcSpan "tests/examples/Directory.hs" 639 5 639 5+ , SrcSpan "tests/examples/Directory.hs" 672 1 672 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 5 638 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 638 10 638 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 5 638 9+ , srcInfoPoints = []+ }+ "loop"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 13 638 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 638 26 638 28 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 13 638 25+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 13 638 25+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 13 638 25+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 13 638 25+ , srcInfoPoints = []+ }+ "HANDLE")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 638 29 638 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 638 44 638 46 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 29 638 43+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 29 638 43+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 29 638 43+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 29 638 43+ , srcInfoPoints = []+ }+ "FindData")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 47 638 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 638 58 638 60 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 47 638 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 638 47 638 48+ , SrcSpan "tests/examples/Directory.hs" 638 56 638 57+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 48 638 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 48 638 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 638 48 638 56+ , srcInfoPoints = []+ }+ "FilePath"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 61 638 74+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 61 638 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 61 638 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 638 61 638 63+ , srcInfoPoints = []+ }+ "IO")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 64 638 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 638 64 638 65+ , SrcSpan "tests/examples/Directory.hs" 638 73 638 74+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 638 65 638 73+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 638 65 638 73+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 638 65 638 73+ , srcInfoPoints = []+ }+ "FilePath"))))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 5 644 37+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 5 644 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 5 639 9+ , srcInfoPoints = []+ }+ "loop")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 639 10 639 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 639 10 639 11+ , srcInfoPoints = []+ }+ "h")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 639 12 639 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 639 12 639 16+ , srcInfoPoints = []+ }+ "fdat")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 639 17 639 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 639 17 639 20+ , srcInfoPoints = []+ }+ "acc")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 639 21 644 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 639 21 639 22 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 639 23 644 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 639 23 639 25+ , SrcSpan "tests/examples/Directory.hs" 640 8 640 8+ , SrcSpan "tests/examples/Directory.hs" 641 8 641 8+ , SrcSpan "tests/examples/Directory.hs" 642 8 642 8+ , SrcSpan "tests/examples/Directory.hs" 672 1 672 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 640 8 640 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 640 17 640 19 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 640 8 640 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 640 8 640 16+ , srcInfoPoints = []+ }+ "filename"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 640 20 640 50+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 640 20 640 45+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 640 20 640 45+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 640+ 20+ 640+ 45+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 640+ 20+ 640+ 45+ , srcInfoPoints = []+ }+ "getFindDataFileName")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 640 46 640 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 640 46 640 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 640+ 46+ 640+ 50+ , srcInfoPoints = []+ }+ "fdat"))))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 641 8 641 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 641 13 641 15 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 641 8 641 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 641 8 641 12+ , srcInfoPoints = []+ }+ "more"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 641 16 641 41+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 641 16 641 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 641 16 641 34+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 641+ 16+ 641+ 34+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 641+ 16+ 641+ 34+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 641+ 16+ 641+ 34+ , srcInfoPoints = []+ }+ "findNextFile")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 641 35 641 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 641+ 35+ 641+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 641+ 35+ 641+ 36+ , srcInfoPoints = []+ }+ "h"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 641 37 641 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 641 37 641 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 641+ 37+ 641+ 41+ , srcInfoPoints = []+ }+ "fdat"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 642 8 644 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 642 8 642 10+ , SrcSpan "tests/examples/Directory.hs" 643 11 643 15+ , SrcSpan "tests/examples/Directory.hs" 644 11 644 15+ ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 642 8 644 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 642 8 642 10+ , SrcSpan "tests/examples/Directory.hs" 643 11 643 15+ , SrcSpan "tests/examples/Directory.hs" 644 11 644 15+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 642 11 642 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 642 11 642 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 642+ 11+ 642+ 15+ , srcInfoPoints = []+ }+ "more")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 643 16 643 42+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 643 16 643 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 16+ 643+ 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 16+ 643+ 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 16+ 643+ 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 16+ 643+ 20+ , srcInfoPoints = []+ }+ "loop")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 21+ 643+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 21+ 643+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 21+ 643+ 22+ , srcInfoPoints = []+ }+ "h"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 23+ 643+ 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 23+ 643+ 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 23+ 643+ 27+ , srcInfoPoints = []+ }+ "fdat"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 643 28 643 42+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 643 28 643 29+ , SrcSpan+ "tests/examples/Directory.hs" 643 41 643 42+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 29+ 643+ 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 29+ 643+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 29+ 643+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 29+ 643+ 37+ , srcInfoPoints = []+ }+ "filename")))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 37+ 643+ 38+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 37+ 643+ 38+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 37+ 643+ 38+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 38+ 643+ 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 38+ 643+ 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 643+ 38+ 643+ 41+ , srcInfoPoints = []+ }+ "acc"))))))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 644 16 644 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 644 16 644 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 16+ 644+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 16+ 644+ 22+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 644 23 644 37+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 644 23 644 24+ , SrcSpan+ "tests/examples/Directory.hs" 644 36 644 37+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 24+ 644+ 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 24+ 644+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 24+ 644+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 24+ 644+ 32+ , srcInfoPoints = []+ }+ "filename")))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 32+ 644+ 33+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 32+ 644+ 33+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 32+ 644+ 33+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 33+ 644+ 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 33+ 644+ 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 644+ 33+ 644+ 36+ , srcInfoPoints = []+ }+ "acc")))))))+ ]))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 1 672 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 672 21 672 23 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 1 672 20+ , srcInfoPoints = []+ }+ "getCurrentDirectory"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 24 672 26+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 27 672 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 27 672 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 672 27 672 35+ , srcInfoPoints = []+ }+ "FilePath"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 1 674 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 1 673 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 1 673 20+ , srcInfoPoints = []+ }+ "getCurrentDirectory"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 21 674 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 673 21 673 22 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 673 23 674 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 673 23 673 25+ , SrcSpan "tests/examples/Directory.hs" 674 3 674 3+ , SrcSpan "tests/examples/Directory.hs" 708 1 708 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 674 3 674 28+ , srcInfoPoints = []+ }+ "getCurrentDirectory")))+ ]))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 1 708 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 708 21 708 23 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 1 708 20+ , srcInfoPoints = []+ }+ "setCurrentDirectory"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 708 33 708 35 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 24 708 32+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 36 708 38+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 39 708 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 708 39 708 40+ , SrcSpan "tests/examples/Directory.hs" 708 40 708 41+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 39 708 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 708 39 708 40+ , SrcSpan "tests/examples/Directory.hs" 708 40 708 41+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 708 39 708 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 708 39 708 40+ , SrcSpan "tests/examples/Directory.hs" 708 40 708 41+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 1 710 33+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 1 710 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 1 709 20+ , srcInfoPoints = []+ }+ "setCurrentDirectory")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 21 709 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 21 709 25+ , srcInfoPoints = []+ }+ "path")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 709 26 710 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 709 26 709 27 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 3 710 28+ , srcInfoPoints = []+ }+ "setCurrentDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 29 710 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 29 710 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 710 29 710 33+ , srcInfoPoints = []+ }+ "path")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 1 716 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 716 20 716 22 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 1 716 19+ , srcInfoPoints = []+ }+ "doesDirectoryExist"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 716 32 716 34 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 23 716 31+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 35 716 37+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 38 716 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 38 716 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 716 38 716 42+ , srcInfoPoints = []+ }+ "Bool")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 1 719 61+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 1 719 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 1 717 19+ , srcInfoPoints = []+ }+ "doesDirectoryExist")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 20 717 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 20 717 24+ , srcInfoPoints = []+ }+ "name")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 717 25 719 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 717 25 717 26 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 4 719 61+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 4 718 70+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 718 4 718 5+ , SrcSpan "tests/examples/Directory.hs" 718 69 718 70+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 5 718 69+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 5 718 45+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 5 718 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 5 718 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 5 718 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 5 718 19+ , srcInfoPoints = []+ }+ "withFileStatus")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 20 718 40+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 20 718 40+ , srcInfoPoints = []+ }+ "doesDirectoryExist"+ "doesDirectoryExist")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 41 718 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 41 718 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 41 718 45+ , srcInfoPoints = []+ }+ "name"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 46 718 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 46 718 47+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 46 718 47+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 718 48 718 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 718 48 718 49+ , SrcSpan "tests/examples/Directory.hs" 718 52 718 54+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 49 718 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 49 718 51+ , srcInfoPoints = []+ }+ "st")+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 55 718 69+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 55 718 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 55 718 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 55 718 66+ , srcInfoPoints = []+ }+ "isDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 67 718 69+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 67 718 69+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 718 67 718 69+ , srcInfoPoints = []+ }+ "st")))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 4 719 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 719 4 719 5+ , SrcSpan "tests/examples/Directory.hs" 719 5 719 10+ , SrcSpan "tests/examples/Directory.hs" 719 10 719 11+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 4 719 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 719 4 719 5+ , SrcSpan "tests/examples/Directory.hs" 719 5 719 10+ , SrcSpan "tests/examples/Directory.hs" 719 10 719 11+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 5 719 10+ , srcInfoPoints = []+ }+ "catch")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 12 719 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 719 12 719 13+ , SrcSpan "tests/examples/Directory.hs" 719 60 719 61+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 13 719 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 719 35 719 37 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 13 719 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 719 13 719 14+ , SrcSpan "tests/examples/Directory.hs" 719 33 719 34+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 14 719 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 719 14 719 15+ , SrcSpan "tests/examples/Directory.hs" 719 18 719 20+ ]+ }+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 16 719 17+ , srcInfoPoints = []+ }+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 21 719 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 21 719 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 21 719 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 719 21 719 27+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 28 719 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 28 719 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 719 28 719 33+ , srcInfoPoints = []+ }+ "False"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 719 38 719 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 719 50 719 52 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 38 719 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 38 719 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 38 719 49+ , srcInfoPoints = []+ }+ "IOException")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 53 719 60+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 53 719 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 53 719 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 53 719 55+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 56 719 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 56 719 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 719 56 719 60+ , srcInfoPoints = []+ }+ "Bool")))))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 1 725 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 725 15 725 17 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 1 725 14+ , srcInfoPoints = []+ }+ "doesFileExist"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 725 27 725 29 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 18 725 26+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 30 725 32+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 33 725 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 33 725 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 725 33 725 37+ , srcInfoPoints = []+ }+ "Bool")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 1 728 61+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 1 728 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 1 726 14+ , srcInfoPoints = []+ }+ "doesFileExist")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 15 726 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 15 726 19+ , srcInfoPoints = []+ }+ "name")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 726 20 728 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 726 20 726 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 4 728 61+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 4 727 89+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 727 4 727 5+ , SrcSpan "tests/examples/Directory.hs" 727 88 727 89+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 5 727 88+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 5 727 40+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 5 727 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 5 727 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 5 727 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 5 727 19+ , srcInfoPoints = []+ }+ "withFileStatus")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 20 727 35+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 20 727 35+ , srcInfoPoints = []+ }+ "doesFileExist"+ "doesFileExist")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 36 727 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 36 727 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 36 727 40+ , srcInfoPoints = []+ }+ "name"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 41 727 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 41 727 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 41 727 42+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 727 43 727 88+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 727 43 727 44+ , SrcSpan "tests/examples/Directory.hs" 727 47 727 49+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 44 727 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 44 727 46+ , srcInfoPoints = []+ }+ "st")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 50 727 88+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 727 50 727 52+ , SrcSpan "tests/examples/Directory.hs" 727 53 727 53+ , SrcSpan "tests/examples/Directory.hs" 727 72 727 73+ , SrcSpan "tests/examples/Directory.hs" 727 88 727 88+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 53 727 72+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 727 55 727 57 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 53 727 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 53 727 54+ , srcInfoPoints = []+ }+ "b"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 58 727 72+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 58 727 69+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 58 727 69+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 58 727 69+ , srcInfoPoints = []+ }+ "isDirectory")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 70 727 72+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 70 727 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 70 727 72+ , srcInfoPoints = []+ }+ "st"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 74 727 88+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 74 727 88+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 74 727 80+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 74 727 80+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 74 727 80+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 727 81 727 88+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 727 81 727 82+ , SrcSpan+ "tests/examples/Directory.hs" 727 87 727 88+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 82 727 87+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 82 727 85+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 727+ 82+ 727+ 85+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 727+ 82+ 727+ 85+ , srcInfoPoints = []+ }+ "not")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 727 86 727 87+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 727+ 86+ 727+ 87+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 727+ 86+ 727+ 87+ , srcInfoPoints = []+ }+ "b"))))))+ ]))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 4 728 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 728 4 728 5+ , SrcSpan "tests/examples/Directory.hs" 728 5 728 10+ , SrcSpan "tests/examples/Directory.hs" 728 10 728 11+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 4 728 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 728 4 728 5+ , SrcSpan "tests/examples/Directory.hs" 728 5 728 10+ , SrcSpan "tests/examples/Directory.hs" 728 10 728 11+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 5 728 10+ , srcInfoPoints = []+ }+ "catch")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 12 728 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 728 12 728 13+ , SrcSpan "tests/examples/Directory.hs" 728 60 728 61+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 13 728 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 728 35 728 37 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 13 728 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 728 13 728 14+ , SrcSpan "tests/examples/Directory.hs" 728 33 728 34+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 14 728 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 728 14 728 15+ , SrcSpan "tests/examples/Directory.hs" 728 18 728 20+ ]+ }+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 16 728 17+ , srcInfoPoints = []+ }+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 21 728 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 21 728 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 21 728 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 728 21 728 27+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 28 728 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 28 728 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 728 28 728 33+ , srcInfoPoints = []+ }+ "False"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 728 38 728 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 728 50 728 52 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 38 728 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 38 728 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 38 728 49+ , srcInfoPoints = []+ }+ "IOException")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 53 728 60+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 53 728 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 53 728 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 53 728 55+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 56 728 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 56 728 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 728 56 728 60+ , srcInfoPoints = []+ }+ "Bool")))))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 1 742 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 742 21 742 23 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 1 742 20+ , srcInfoPoints = []+ }+ "getModificationTime"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 742 33 742 35 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 24 742 32+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 48+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 36 742 38+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 39 742 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 39 742 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 742 39 742 48+ , srcInfoPoints = []+ }+ "ClockTime")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 1 746 21+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 1 746 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 1 743 20+ , srcInfoPoints = []+ }+ "getModificationTime")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 21 743 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 21 743 25+ , srcInfoPoints = []+ }+ "name")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 26 746 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 743 26 743 27 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 743 28 746 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 743 28 743 30+ , SrcSpan "tests/examples/Directory.hs" 745 2 745 2+ , SrcSpan "tests/examples/Directory.hs" 749 1 749 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 2 746 21+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 2 746 21+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 2 745 43+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 2 745 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 2 745 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 2 745 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 2 745 16+ , srcInfoPoints = []+ }+ "withFileStatus")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 17 745 38+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 17 745 38+ , srcInfoPoints = []+ }+ "getModificationTime"+ "getModificationTime")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 39 745 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 39 745 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 39 745 43+ , srcInfoPoints = []+ }+ "name"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 44 745 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 44 745 45+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 44 745 45+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 745 46 746 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 745 46 745 47+ , SrcSpan "tests/examples/Directory.hs" 745 51 745 53+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 48 745 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 48 745 50+ , srcInfoPoints = []+ }+ "st")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 745 54 746 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 745 54 745 56+ , SrcSpan "tests/examples/Directory.hs" 746 2 746 2+ , SrcSpan "tests/examples/Directory.hs" 746 2 746 2+ , SrcSpan "tests/examples/Directory.hs" 749 1 749 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 746 2 746 21+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 746 2 746 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 746 2 746 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 746 2 746 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 746 2 746 18+ , srcInfoPoints = []+ }+ "modificationTime")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 746 19 746 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 746 19 746 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 746 19 746 21+ , srcInfoPoints = []+ }+ "st"))))+ ])))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 1 749 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 749 16 749 18 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 1 749 15+ , srcInfoPoints = []+ }+ "withFileStatus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 749 26 749 28 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 19 749 25+ , srcInfoPoints = []+ }+ "String")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 749 38 749 40 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 29 749 37+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 41 749 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 749 61 749 63 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 41 749 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 749 41 749 42+ , SrcSpan "tests/examples/Directory.hs" 749 59 749 60+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 42 749 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 749 52 749 54 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 42 749 51+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 42 749 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 749 42 749 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 749 42 749 45+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 46 749 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 749 46 749 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 749 46 749 51+ , srcInfoPoints = []+ }+ "CStat"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 55 749 59+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 55 749 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 749 55 749 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 749 55 749 57+ , srcInfoPoints = []+ }+ "IO")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 58 749 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 749 58 749 59+ , srcInfoPoints = []+ }+ "a")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 64 749 66+ , srcInfoPoints = []+ }+ "IO")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 67 749 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 749 67 749 68+ , srcInfoPoints = []+ }+ "a"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 1 754 50+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 1 754 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 1 750 15+ , srcInfoPoints = []+ }+ "withFileStatus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 16 750 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 16 750 19+ , srcInfoPoints = []+ }+ "loc")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 20 750 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 20 750 24+ , srcInfoPoints = []+ }+ "name")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 25 750 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 25 750 26+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 27 754 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 750 27 750 28 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 750 29 754 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 750 29 750 31+ , SrcSpan "tests/examples/Directory.hs" 751 3 751 3+ , SrcSpan "tests/examples/Directory.hs" 756 1 756 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 3 754 50+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 3 754 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 3 751 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 3 751 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 3 751 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 3 751 16+ , srcInfoPoints = []+ }+ "modifyIOError")))+ (RightSection+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 17 751 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 751 17 751 18+ , SrcSpan "tests/examples/Directory.hs" 751 39 751 40+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 18 751 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 751 18 751 19+ , SrcSpan "tests/examples/Directory.hs" 751 19 751 33+ , SrcSpan "tests/examples/Directory.hs" 751 33 751 34+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 18 751 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 751 18 751 19+ , SrcSpan "tests/examples/Directory.hs" 751 19 751 33+ , SrcSpan "tests/examples/Directory.hs" 751 33 751 34+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 19 751 33+ , srcInfoPoints = []+ }+ "ioeSetFileName")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 35 751 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 35 751 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 35 751 39+ , srcInfoPoints = []+ }+ "name")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 751 41 751 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 41 751 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 751 41 751 42+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 752 5 754 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 5 752 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 5 752 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 5 752 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 5 752 16+ , srcInfoPoints = []+ }+ "allocaBytes")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 17 752 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 17 752 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 17 752 28+ , srcInfoPoints = []+ }+ "sizeof_stat"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 29 752 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 29 752 30+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 29 752 30+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 31 754 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 752 31 752 32+ , SrcSpan "tests/examples/Directory.hs" 752 34 752 36+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 32 752 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 752 32 752 33+ , srcInfoPoints = []+ }+ "p")+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 7 754 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 7 753 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 7 753 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 753 7 753 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 753 7 753 19+ , srcInfoPoints = []+ }+ "withFilePath")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 20 753 43+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 753 20 753 21+ , SrcSpan+ "tests/examples/Directory.hs" 753 42 753 43+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 753 21 753 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 753 21 753 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 753+ 21+ 753+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 753+ 21+ 753+ 37+ , srcInfoPoints = []+ }+ "fileNameEndClean")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 753 38 753 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 753+ 38+ 753+ 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 753+ 38+ 753+ 42+ , srcInfoPoints = []+ }+ "name"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 44 753 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 44 753 45+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 753 44 753 45+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 46 754 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 753 46 753 47+ , SrcSpan "tests/examples/Directory.hs" 753 49 753 51+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 47 753 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 753 47 753 48+ , srcInfoPoints = []+ }+ "s")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 753 52 754 50+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 753 52 753 54+ , SrcSpan "tests/examples/Directory.hs" 754 9 754 9+ , SrcSpan "tests/examples/Directory.hs" 756 1 756 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 754 9 754 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 754 9 754 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 9+ 754+ 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 9+ 754+ 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 9+ 754+ 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 9+ 754+ 33+ , srcInfoPoints = []+ }+ "throwErrnoIfMinus1Retry_")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 34+ 754+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 34+ 754+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 34+ 754+ 37+ , srcInfoPoints = []+ }+ "loc"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 38+ 754+ 50+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 38+ 754+ 39+ , SrcSpan+ "tests/examples/Directory.hs"+ 754+ 49+ 754+ 50+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 39+ 754+ 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 39+ 754+ 47+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 39+ 754+ 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 39+ 754+ 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 39+ 754+ 45+ , srcInfoPoints = []+ }+ "c_stat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 46+ 754+ 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 46+ 754+ 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 46+ 754+ 47+ , srcInfoPoints = []+ }+ "s"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 48+ 754+ 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 48+ 754+ 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 754+ 48+ 754+ 49+ , srcInfoPoints = []+ }+ "p"))))))+ ]))))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 1 756 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 756 25 756 27 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 1 756 24+ , srcInfoPoints = []+ }+ "withFileOrSymlinkStatus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 756 35 756 37 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 28 756 34+ , srcInfoPoints = []+ }+ "String")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 756 47 756 49 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 38 756 46+ , srcInfoPoints = []+ }+ "FilePath")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 50 756 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 756 70 756 72 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 50 756 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 756 50 756 51+ , SrcSpan "tests/examples/Directory.hs" 756 68 756 69+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 51 756 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 756 61 756 63 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 51 756 60+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 51 756 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 756 51 756 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 756 51 756 54+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 55 756 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 756 55 756 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 756 55 756 60+ , srcInfoPoints = []+ }+ "CStat"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 64 756 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 64 756 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 756 64 756 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 756 64 756 66+ , srcInfoPoints = []+ }+ "IO")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 67 756 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 756 67 756 68+ , srcInfoPoints = []+ }+ "a")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 77+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 75+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 73 756 75+ , srcInfoPoints = []+ }+ "IO")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 76 756 77+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 756 76 756 77+ , srcInfoPoints = []+ }+ "a"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 1 761 49+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 1 761 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 1 757 24+ , srcInfoPoints = []+ }+ "withFileOrSymlinkStatus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 25 757 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 25 757 28+ , srcInfoPoints = []+ }+ "loc")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 29 757 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 29 757 33+ , srcInfoPoints = []+ }+ "name")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 34 757 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 34 757 35+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 36 761 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 757 36 757 37 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 757 38 761 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 757 38 757 40+ , SrcSpan "tests/examples/Directory.hs" 758 3 758 3+ , SrcSpan "tests/examples/Directory.hs" 763 1 763 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 3 761 49+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 3 761 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 3 758 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 3 758 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 3 758 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 3 758 16+ , srcInfoPoints = []+ }+ "modifyIOError")))+ (RightSection+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 17 758 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 758 17 758 18+ , SrcSpan "tests/examples/Directory.hs" 758 39 758 40+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 18 758 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 758 18 758 19+ , SrcSpan "tests/examples/Directory.hs" 758 19 758 33+ , SrcSpan "tests/examples/Directory.hs" 758 33 758 34+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 18 758 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 758 18 758 19+ , SrcSpan "tests/examples/Directory.hs" 758 19 758 33+ , SrcSpan "tests/examples/Directory.hs" 758 33 758 34+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 19 758 33+ , srcInfoPoints = []+ }+ "ioeSetFileName")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 35 758 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 35 758 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 35 758 39+ , srcInfoPoints = []+ }+ "name")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 758 41 758 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 41 758 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 758 41 758 42+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 759 5 761 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 5 759 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 5 759 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 5 759 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 5 759 16+ , srcInfoPoints = []+ }+ "allocaBytes")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 17 759 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 17 759 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 17 759 28+ , srcInfoPoints = []+ }+ "sizeof_stat"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 29 759 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 29 759 30+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 29 759 30+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 31 761 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 759 31 759 32+ , SrcSpan "tests/examples/Directory.hs" 759 34 759 36+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 32 759 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 759 32 759 33+ , srcInfoPoints = []+ }+ "p")+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 7 761 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 7 760 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 7 760 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 760 7 760 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 760 7 760 19+ , srcInfoPoints = []+ }+ "withFilePath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 20 760 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 760 20 760 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 760 20 760 24+ , srcInfoPoints = []+ }+ "name"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 25 760 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 25 760 26+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 760 25 760 26+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 27 761 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 760 27 760 28+ , SrcSpan "tests/examples/Directory.hs" 760 30 760 32+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 28 760 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 760 28 760 29+ , srcInfoPoints = []+ }+ "s")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 760 33 761 49+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 760 33 760 35+ , SrcSpan "tests/examples/Directory.hs" 761 9 761 9+ , SrcSpan "tests/examples/Directory.hs" 763 1 763 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 761 9 761 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 761 9 761 49+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 9+ 761+ 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 9+ 761+ 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 9+ 761+ 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 9+ 761+ 33+ , srcInfoPoints = []+ }+ "throwErrnoIfMinus1Retry_")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 34+ 761+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 34+ 761+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 34+ 761+ 37+ , srcInfoPoints = []+ }+ "loc"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 38+ 761+ 49+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 38+ 761+ 39+ , SrcSpan+ "tests/examples/Directory.hs"+ 761+ 48+ 761+ 49+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 39+ 761+ 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 39+ 761+ 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 39+ 761+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 39+ 761+ 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 39+ 761+ 44+ , srcInfoPoints = []+ }+ "lstat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 45+ 761+ 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 45+ 761+ 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 45+ 761+ 46+ , srcInfoPoints = []+ }+ "s"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 47+ 761+ 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 47+ 761+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 761+ 47+ 761+ 48+ , srcInfoPoints = []+ }+ "p"))))))+ ]))))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 1 763 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 763 18 763 20 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 1 763 17+ , srcInfoPoints = []+ }+ "modificationTime"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 763 31 763 33 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 21 763 24+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 25 763 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 25 763 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 25 763 30+ , srcInfoPoints = []+ }+ "CStat"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 34 763 36+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 37 763 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 37 763 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 763 37 763 46+ , srcInfoPoints = []+ }+ "ClockTime")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 1 767 52+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 1 767 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 1 764 17+ , srcInfoPoints = []+ }+ "modificationTime")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 18 764 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 18 764 22+ , srcInfoPoints = []+ }+ "stat")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 23 767 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 764 23 764 24 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 764 25 767 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 764 25 764 27+ , SrcSpan "tests/examples/Directory.hs" 765 5 765 5+ , SrcSpan "tests/examples/Directory.hs" 766 5 766 5+ , SrcSpan "tests/examples/Directory.hs" 767 5 767 5+ , SrcSpan "tests/examples/Directory.hs" 769 1 769 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 5 765 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 765 11 765 13 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 5 765 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 5 765 10+ , srcInfoPoints = []+ }+ "mtime"))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 14 765 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 14 765 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 765 14 765 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 765 14 765 22+ , srcInfoPoints = []+ }+ "st_mtime")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 765 23 765 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 765 23 765 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 765 23 765 27+ , srcInfoPoints = []+ }+ "stat"))))+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 766 5 766 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 766 5 766 8 ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 766 9 766 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 766 9 766 9+ , SrcSpan "tests/examples/Directory.hs" 767 5 767 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 766 9 766 69+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 9 766 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 9 766 22+ , srcInfoPoints = []+ }+ "realToInteger"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 23 766 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 766 23 766 24 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 25 766 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 766 44 766 46 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 25 766 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 25 766 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 25 766 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 25 766 30+ , srcInfoPoints = []+ }+ "round")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 31 766 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 31 766 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 31 766 32+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 33 766 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 33 766 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 33 766 43+ , srcInfoPoints = []+ }+ "realToFrac"))))+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 47 766 69+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 47 766 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 766 54 766 56+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 47 766 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 54+ 766+ 56+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 47+ 766+ 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 54+ 766+ 56+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 47+ 766+ 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 54+ 766+ 56+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 47+ 766+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 47+ 766+ 51+ , srcInfoPoints = []+ }+ "Real")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 52+ 766+ 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 52+ 766+ 53+ , srcInfoPoints = []+ }+ "a"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 766 57 766 69+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 766 59 766 61+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 57 766 58+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 57 766 58+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 62 766 69+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 766 62 766 69+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 766+ 62+ 766+ 69+ , srcInfoPoints = []+ }+ "Integer")))))))+ Nothing+ ])+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 5 767 52+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 5 767 52+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 5 767 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 5 767 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 5 767 11+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 767 12 767 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 767 12 767 13+ , SrcSpan "tests/examples/Directory.hs" 767 51 767 52+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 13 767 51+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 13 767 49+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 13 767 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 13 767 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 767 13 767 16+ , srcInfoPoints = []+ }+ "TOD")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 17 767 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 767 17 767 18+ , SrcSpan "tests/examples/Directory.hs" 767 48 767 49+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 18 767 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 767 18 767 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 767 18 767 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 18+ 767+ 31+ , srcInfoPoints = []+ }+ "realToInteger")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 767 32 767 48+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 767 32 767 33+ , SrcSpan+ "tests/examples/Directory.hs" 767 47 767 48+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 767 33 767 47+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 39+ 767+ 41+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 33+ 767+ 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 33+ 767+ 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 33+ 767+ 38+ , srcInfoPoints = []+ }+ "mtime")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 42+ 767+ 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 42+ 767+ 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 767+ 42+ 767+ 47+ , srcInfoPoints = []+ }+ "CTime"))))))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 50 767 51+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 767 50 767 51+ , srcInfoPoints = []+ }+ 0+ "0")))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 1 769 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 769 13 769 15 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 1 769 12+ , srcInfoPoints = []+ }+ "isDirectory"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 769 26 769 28 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 16 769 19+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 20 769 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 20 769 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 20 769 25+ , srcInfoPoints = []+ }+ "CStat"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 36+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 29 769 31+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 32 769 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 32 769 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 769 32 769 36+ , srcInfoPoints = []+ }+ "Bool")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 1 772 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 1 772 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 1 770 12+ , srcInfoPoints = []+ }+ "isDirectory")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 13 770 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 13 770 17+ , srcInfoPoints = []+ }+ "stat")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 18 772 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 770 18 770 19 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 770 20 772 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 770 20 770 22+ , SrcSpan "tests/examples/Directory.hs" 771 3 771 3+ , SrcSpan "tests/examples/Directory.hs" 772 3 772 3+ , SrcSpan "tests/examples/Directory.hs" 774 1 774 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 3 771 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 771 8 771 10 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 3 771 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 3 771 7+ , srcInfoPoints = []+ }+ "mode"))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 11 771 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 11 771 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 771 11 771 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 771 11 771 18+ , srcInfoPoints = []+ }+ "st_mode")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 771 19 771 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 771 19 771 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 771 19 771 23+ , srcInfoPoints = []+ }+ "stat"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 24+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 3 772 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 3 772 9+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 772 10 772 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 772 10 772 11+ , SrcSpan "tests/examples/Directory.hs" 772 23 772 24+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 11 772 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 11 772 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 11 772 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 11 772 18+ , srcInfoPoints = []+ }+ "s_isdir")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 19 772 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 19 772 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 772 19 772 23+ , srcInfoPoints = []+ }+ "mode"))))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 1 774 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 774 18 774 20 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 1 774 17+ , srcInfoPoints = []+ }+ "fileNameEndClean"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 774 28 774 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 21 774 27+ , srcInfoPoints = []+ }+ "String")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 31 774 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 31 774 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 774 31 774 37+ , srcInfoPoints = []+ }+ "String"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 1 776 76+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 1 776 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 1 775 17+ , srcInfoPoints = []+ }+ "fileNameEndClean")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 18 775 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 18 775 22+ , srcInfoPoints = []+ }+ "name")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 23 776 76+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 775 23 775 24 ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 25 776 76+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 775 25 775 27+ , SrcSpan "tests/examples/Directory.hs" 775 41 775 45+ , SrcSpan "tests/examples/Directory.hs" 776 41 776 45+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 28 775 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 28 775 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 28 775 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 775 28 775 35+ , srcInfoPoints = []+ }+ "isDrive")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 36 775 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 36 775 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 775 36 775 40+ , srcInfoPoints = []+ }+ "name"))))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 46 775 75+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 46 775 70+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 46 775 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 775 46 775 70+ , srcInfoPoints = []+ }+ "addTrailingPathSeparator")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 71 775 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 775 71 775 75+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 775 71 775 75+ , srcInfoPoints = []+ }+ "name"))))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 46 776 76+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 46 776 71+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 46 776 71+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 776 46 776 71+ , srcInfoPoints = []+ }+ "dropTrailingPathSeparator")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 72 776 76+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 776 72 776 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 776 72 776 76+ , srcInfoPoints = []+ }+ "name"))))))+ Nothing+ ]+ , ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 1 778 78+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 778 1 778 8+ , SrcSpan "tests/examples/Directory.hs" 778 9 778 15+ , SrcSpan "tests/examples/Directory.hs" 778 29 778 61+ , SrcSpan "tests/examples/Directory.hs" 778 70 778 72+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 16 778 21+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 22 778 28+ , srcInfoPoints = []+ }))+ (Just "HsDirectory.h __hscore_S_IRUSR")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 62 778 69+ , srcInfoPoints = []+ }+ "s_IRUSR")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 73 778 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 73 778 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 778 73 778 78+ , srcInfoPoints = []+ }+ "CMode")))+ , ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 1 779 78+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 779 1 779 8+ , SrcSpan "tests/examples/Directory.hs" 779 9 779 15+ , SrcSpan "tests/examples/Directory.hs" 779 29 779 61+ , SrcSpan "tests/examples/Directory.hs" 779 70 779 72+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 16 779 21+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 22 779 28+ , srcInfoPoints = []+ }))+ (Just "HsDirectory.h __hscore_S_IWUSR")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 62 779 69+ , srcInfoPoints = []+ }+ "s_IWUSR")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 73 779 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 73 779 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 779 73 779 78+ , srcInfoPoints = []+ }+ "CMode")))+ , ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 1 780 78+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 780 1 780 8+ , SrcSpan "tests/examples/Directory.hs" 780 9 780 15+ , SrcSpan "tests/examples/Directory.hs" 780 29 780 61+ , SrcSpan "tests/examples/Directory.hs" 780 70 780 72+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 16 780 21+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 22 780 28+ , srcInfoPoints = []+ }))+ (Just "HsDirectory.h __hscore_S_IXUSR")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 62 780 69+ , srcInfoPoints = []+ }+ "s_IXUSR")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 73 780 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 73 780 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 780 73 780 78+ , srcInfoPoints = []+ }+ "CMode")))+ , ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 1 781 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 781 1 781 8+ , SrcSpan "tests/examples/Directory.hs" 781 9 781 15+ , SrcSpan "tests/examples/Directory.hs" 781 29 781 47+ , SrcSpan "tests/examples/Directory.hs" 781 56 781 58+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 16 781 21+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 22 781 28+ , srcInfoPoints = []+ }))+ (Just "__hscore_S_IFDIR")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 48 781 55+ , srcInfoPoints = []+ }+ "s_IFDIR")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 59 781 64+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 59 781 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 781 59 781 64+ , srcInfoPoints = []+ }+ "CMode")))+ , ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 784 1 785 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 784 1 784 8+ , SrcSpan "tests/examples/Directory.hs" 784 9 784 15+ , SrcSpan "tests/examples/Directory.hs" 784 29 784 54+ , SrcSpan "tests/examples/Directory.hs" 785 18 785 20+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 784 16 784 21+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 784 22 784 28+ , srcInfoPoints = []+ }))+ (Just "__hscore_long_path_size")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 3 785 17+ , srcInfoPoints = []+ }+ "long_path_size")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 21 785 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 21 785 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 785 21 785 24+ , srcInfoPoints = []+ }+ "Int")))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 1 808 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 808 18 808 20 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 1 808 17+ , srcInfoPoints = []+ }+ "getHomeDirectory"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 21 808 23+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 24 808 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 24 808 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 808 24 808 32+ , srcInfoPoints = []+ }+ "FilePath"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 1 818 46+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 1 809 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 1 809 17+ , srcInfoPoints = []+ }+ "getHomeDirectory"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 809 18 818 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 809 18 809 19 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 818 46+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 56+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 3 810 16+ , srcInfoPoints = []+ }+ "modifyIOError")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 17 810 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 810 17 810 18+ , SrcSpan "tests/examples/Directory.hs" 810 55 810 56+ ]+ }+ (RightSection+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 18 810 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 810 18 810 19+ , SrcSpan "tests/examples/Directory.hs" 810 54 810 55+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 19 810 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 810 19 810 20+ , SrcSpan "tests/examples/Directory.hs" 810 20 810 34+ , SrcSpan "tests/examples/Directory.hs" 810 34 810 35+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 19 810 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 810 19 810 20+ , SrcSpan "tests/examples/Directory.hs" 810 20 810 34+ , SrcSpan "tests/examples/Directory.hs" 810 34 810 35+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 810 20 810 34+ , srcInfoPoints = []+ }+ "ioeSetLocation")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 36 810 54+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 36 810 54+ , srcInfoPoints = []+ }+ "getHomeDirectory"+ "getHomeDirectory")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 57 810 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 57 810 58+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 57 810 58+ , srcInfoPoints = []+ }+ "$")))+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 810 59 818 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 810 59 810 61+ , SrcSpan "tests/examples/Directory.hs" 811 3 811 3+ , SrcSpan "tests/examples/Directory.hs" 812 3 812 3+ , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 3 811 73+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 811 5 811 7 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 3 811 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 3 811 4+ , srcInfoPoints = []+ }+ "r"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 8 811 73+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 8 811 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 8 811 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 8 811 11+ , srcInfoPoints = []+ }+ "try")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 12 811 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 12 811 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 12 811 13+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 811 14 811 73+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 14 811 71+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 14 811 63+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 14 811 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 14 811 35+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 811 14 811 35+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 811 14 811 35+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 811 14 811 35+ , srcInfoPoints = []+ }+ "sHGetFolderPath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 36 811 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 811 36 811 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 811 36 811 43+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 44 811 63+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 44 811 63+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 811 44 811 63+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 811 44 811 63+ , srcInfoPoints = []+ }+ "cSIDL_PROFILE"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 64 811 71+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 64 811 71+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 64 811 71+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 72 811 73+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 811 72 811 73+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 3 818 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 812 3 812 7+ , SrcSpan "tests/examples/Directory.hs" 812 41 812 43+ , SrcSpan "tests/examples/Directory.hs" 813 5 813 5+ , SrcSpan "tests/examples/Directory.hs" 814 5 814 5+ , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+ ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 3 818 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 812 3 812 7+ , SrcSpan "tests/examples/Directory.hs" 812 41 812 43+ , SrcSpan "tests/examples/Directory.hs" 813 5 813 5+ , SrcSpan "tests/examples/Directory.hs" 814 5 814 5+ , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 8 812 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 812 8 812 9+ , SrcSpan "tests/examples/Directory.hs" 812 39 812 40+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 812 9 812 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 812 11 812 13 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 9 812 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 9 812 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 9 812 10+ , srcInfoPoints = []+ }+ "r")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 14 812 39+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 14 812 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 14 812 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 812 14 812 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 812 14 812 20+ , srcInfoPoints = []+ }+ "Either")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 21 812 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 812 21 812 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 812 21 812 32+ , srcInfoPoints = []+ }+ "IOException"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 33 812 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 812 33 812 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 812 33 812 39+ , srcInfoPoints = []+ }+ "String"))))))+ [ Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 813 5 813 24+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 5 813 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 5 813 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 5 813 10+ , srcInfoPoints = []+ }+ "Right"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 11 813 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 11 813 12+ , srcInfoPoints = []+ }+ "s")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 13 813 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 813 13 813 15 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 16 813 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 16 813 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 16 813 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 813 16 813 22+ , srcInfoPoints = []+ }+ "return")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 23 813 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 813 23 813 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 813 23 813 24+ , srcInfoPoints = []+ }+ "s")))))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 814 5 818 46+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 814 5 814 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 814 5 814 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 814 5 814 9+ , srcInfoPoints = []+ }+ "Left"))+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 814 11 814 12+ , srcInfoPoints = []+ }+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 814 13 818 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 814 13 814 15 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 814 16 818 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 814 16 814 18+ , SrcSpan "tests/examples/Directory.hs" 815 7 815 7+ , SrcSpan "tests/examples/Directory.hs" 816 7 816 7+ , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 815 7 815 78+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 815 10 815 12+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 815 7 815 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 7 815 9+ , srcInfoPoints = []+ }+ "r1"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 815 13 815 78+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 13 815 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 13 815 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 13+ 815+ 16+ , srcInfoPoints = []+ }+ "try")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 17 815 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 17 815 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 17+ 815+ 18+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 19 815 78+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 19 815 76+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 19+ 815+ 68+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 19+ 815+ 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 19+ 815+ 40+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 19+ 815+ 40+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 19+ 815+ 40+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 19+ 815+ 40+ , srcInfoPoints = []+ }+ "sHGetFolderPath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 41+ 815+ 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 41+ 815+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 41+ 815+ 48+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 49+ 815+ 68+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 49+ 815+ 68+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 49+ 815+ 68+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 49+ 815+ 68+ , srcInfoPoints = []+ }+ "cSIDL_WINDOWS"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 69+ 815+ 76+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 69+ 815+ 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 69+ 815+ 76+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 815 77 815 78+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 815+ 77+ 815+ 78+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 816 7 818 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 816 7 816 11+ , SrcSpan "tests/examples/Directory.hs" 816 15 816 17+ , SrcSpan "tests/examples/Directory.hs" 817 9 817 9+ , SrcSpan "tests/examples/Directory.hs" 818 9 818 9+ , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+ ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 816 7 818 46+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 816 7 816 11+ , SrcSpan+ "tests/examples/Directory.hs" 816 15 816 17+ , SrcSpan "tests/examples/Directory.hs" 817 9 817 9+ , SrcSpan "tests/examples/Directory.hs" 818 9 818 9+ , SrcSpan "tests/examples/Directory.hs" 847 1 847 0+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 816 12 816 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 816 12 816 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 816+ 12+ 816+ 14+ , srcInfoPoints = []+ }+ "r1")))+ [ Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 817 9 817 28+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 817 9 817 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 9+ 817+ 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 9+ 817+ 14+ , srcInfoPoints = []+ }+ "Right"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 15+ 817+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 15+ 817+ 16+ , srcInfoPoints = []+ }+ "s")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 17+ 817+ 28+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 17+ 817+ 19+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 20+ 817+ 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 20+ 817+ 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 20+ 817+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 20+ 817+ 26+ , srcInfoPoints = []+ }+ "return")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 27+ 817+ 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 27+ 817+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 817+ 27+ 817+ 28+ , srcInfoPoints = []+ }+ "s")))))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 818 9 818 46+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 818 9 818 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 9+ 818+ 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 9+ 818+ 13+ , srcInfoPoints = []+ }+ "Left"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 15+ 818+ 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 15+ 818+ 16+ , srcInfoPoints = []+ }+ "e")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 17+ 818+ 46+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 17+ 818+ 19+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 20+ 818+ 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 20+ 818+ 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 20+ 818+ 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 20+ 818+ 27+ , srcInfoPoints = []+ }+ "ioError")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 28+ 818+ 46+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 28+ 818+ 29+ , SrcSpan+ "tests/examples/Directory.hs"+ 818+ 45+ 818+ 46+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 29+ 818+ 45+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 31+ 818+ 33+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 29+ 818+ 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 29+ 818+ 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 29+ 818+ 30+ , srcInfoPoints = []+ }+ "e")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 34+ 818+ 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 34+ 818+ 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 818+ 34+ 818+ 45+ , srcInfoPoints = []+ }+ "IOException")))))))+ Nothing+ ])+ ]))+ Nothing+ ])+ ])))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 1 847 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 847 25 847 27 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 1 847 24+ , srcInfoPoints = []+ }+ "getAppUserDataDirectory"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 847 35 847 37 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 28 847 34+ , srcInfoPoints = []+ }+ "String")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 49+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 38 847 40+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 41 847 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 41 847 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 847 41 847 49+ , srcInfoPoints = []+ }+ "FilePath")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 1 851 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 1 851 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 1 848 24+ , srcInfoPoints = []+ }+ "getAppUserDataDirectory")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 25 848 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 25 848 32+ , srcInfoPoints = []+ }+ "appName")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 33 851 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 848 33 848 34 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 848 35 851 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 848 35 848 37+ , SrcSpan "tests/examples/Directory.hs" 849 3 849 3+ , SrcSpan "tests/examples/Directory.hs" 874 1 874 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 3 851 27+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 3 851 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 3 849 63+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 3 849 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 3 849 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 3 849 16+ , srcInfoPoints = []+ }+ "modifyIOError")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 17 849 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 849 17 849 18+ , SrcSpan "tests/examples/Directory.hs" 849 62 849 63+ ]+ }+ (RightSection+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 18 849 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 849 18 849 19+ , SrcSpan "tests/examples/Directory.hs" 849 61 849 62+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 19 849 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 849 19 849 20+ , SrcSpan "tests/examples/Directory.hs" 849 20 849 34+ , SrcSpan "tests/examples/Directory.hs" 849 34 849 35+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 19 849 35+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/Directory.hs" 849 19 849 20+ , SrcSpan+ "tests/examples/Directory.hs" 849 20 849 34+ , SrcSpan+ "tests/examples/Directory.hs" 849 34 849 35+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 849 20 849 34+ , srcInfoPoints = []+ }+ "ioeSetLocation")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 36 849 61+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 36 849 61+ , srcInfoPoints = []+ }+ "getAppUserDataDirectory"+ "getAppUserDataDirectory")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 64 849 65+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 64 849 65+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 849 64 849 65+ , srcInfoPoints = []+ }+ "$")))+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 849 66 851 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 849 66 849 68+ , SrcSpan "tests/examples/Directory.hs" 850 3 850 3+ , SrcSpan "tests/examples/Directory.hs" 850 3 850 3+ , SrcSpan "tests/examples/Directory.hs" 851 3 851 3+ , SrcSpan "tests/examples/Directory.hs" 874 1 874 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 3 850 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 850 5 850 7 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 3 850 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 3 850 4+ , srcInfoPoints = []+ }+ "s"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 8 850 67+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 8 850 65+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 8 850 57+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 850 8 850 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 850 8 850 29+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 850+ 8+ 850+ 29+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 850+ 8+ 850+ 29+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 850+ 8+ 850+ 29+ , srcInfoPoints = []+ }+ "sHGetFolderPath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 850 30 850 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 850+ 30+ 850+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 850+ 30+ 850+ 37+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 850 38 850 57+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 850 38 850 57+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 850+ 38+ 850+ 57+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 850+ 38+ 850+ 57+ , srcInfoPoints = []+ }+ "cSIDL_APPDATA"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 58 850 65+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 850 58 850 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 850 58 850 65+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 66 850 67+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 850 66 850 67+ , srcInfoPoints = []+ }+ 0+ "0")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 851 3 851 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 851 3 851 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 851 3 851 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 851 3 851 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 3 851 9+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 851 10 851 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 851 10 851 11+ , SrcSpan "tests/examples/Directory.hs" 851 26 851 27+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 851 11 851 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 11 851 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 11 851 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 851+ 11+ 851+ 12+ , srcInfoPoints = []+ }+ "s")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 12 851 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 12 851 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 851+ 12+ 851+ 14+ , srcInfoPoints = []+ }+ "++")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 14 851 26+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 14 851 18+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 851+ 14+ 851+ 18+ , srcInfoPoints = []+ }+ '\\'+ "\\\\"))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 18 851 19+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 851+ 18+ 851+ 19+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 851+ 18+ 851+ 19+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 851 19 851 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 851+ 19+ 851+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 851+ 19+ 851+ 26+ , srcInfoPoints = []+ }+ "appName")))))))+ ]))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 1 874 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 874 27 874 29 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 1 874 26+ , srcInfoPoints = []+ }+ "getUserDocumentsDirectory"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 30 874 32+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 33 874 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 33 874 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 874 33 874 41+ , srcInfoPoints = []+ }+ "FilePath"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 1 877 63+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 1 875 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 1 875 26+ , srcInfoPoints = []+ }+ "getUserDocumentsDirectory"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 27 877 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 875 27 875 28 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 875 29 877 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 875 29 875 31+ , SrcSpan "tests/examples/Directory.hs" 876 3 876 3+ , SrcSpan "tests/examples/Directory.hs" 905 1 905 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 877 63+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 877 63+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 876 65+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 876 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 3 876 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 3 876 16+ , srcInfoPoints = []+ }+ "modifyIOError")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 17 876 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 876 17 876 18+ , SrcSpan "tests/examples/Directory.hs" 876 64 876 65+ ]+ }+ (RightSection+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 18 876 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 876 18 876 19+ , SrcSpan "tests/examples/Directory.hs" 876 63 876 64+ ]+ }+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 19 876 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 876 19 876 20+ , SrcSpan "tests/examples/Directory.hs" 876 20 876 34+ , SrcSpan "tests/examples/Directory.hs" 876 34 876 35+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 19 876 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 876 19 876 20+ , SrcSpan "tests/examples/Directory.hs" 876 20 876 34+ , SrcSpan "tests/examples/Directory.hs" 876 34 876 35+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 20 876 34+ , srcInfoPoints = []+ }+ "ioeSetLocation")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 36 876 63+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 36 876 63+ , srcInfoPoints = []+ }+ "getUserDocumentsDirectory"+ "getUserDocumentsDirectory")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 66 876 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 66 876 67+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 876 66 876 67+ , srcInfoPoints = []+ }+ "$")))+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 876 68 877 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 876 68 876 70+ , SrcSpan "tests/examples/Directory.hs" 877 3 877 3+ , SrcSpan "tests/examples/Directory.hs" 877 3 877 3+ , SrcSpan "tests/examples/Directory.hs" 905 1 905 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 877 3 877 63+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 3 877 63+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 3 877 61+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 3 877 53+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 3 877 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 3 877 24+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 3 877 24+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 877+ 3+ 877+ 24+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 877+ 3+ 877+ 24+ , srcInfoPoints = []+ }+ "sHGetFolderPath")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 25 877 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 25 877 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs"+ 877+ 25+ 877+ 32+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 33 877 53+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 33 877 53+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 33 877 53+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 33 877 53+ , srcInfoPoints = []+ }+ "cSIDL_PERSONAL"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 54 877 61+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 54 877 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Directory.hs" 877 54 877 61+ , srcInfoPoints = []+ }+ "nullPtr"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 62 877 63+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Directory.hs" 877 62 877 63+ , srcInfoPoints = []+ }+ 0+ "0")))+ ]))+ ]))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 1 905 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 905 23 905 25 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 1 905 22+ , srcInfoPoints = []+ }+ "getTemporaryDirectory"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 26 905 28+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 29 905 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 29 905 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 905 29 905 37+ , srcInfoPoints = []+ }+ "FilePath"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 1 907 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 1 906 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 1 906 22+ , srcInfoPoints = []+ }+ "getTemporaryDirectory"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 23 907 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 906 23 906 24 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 906 25 907 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 906 25 906 27+ , SrcSpan "tests/examples/Directory.hs" 907 3 907 3+ , SrcSpan "tests/examples/Directory.hs" 912 1 912 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+ , srcInfoPoints = []+ }+ "Win32")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 907 3 907 30+ , srcInfoPoints = []+ }+ "getTemporaryDirectory")))+ ]))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 1 912 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 912 14 912 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 1 912 13+ , srcInfoPoints = []+ }+ "exeExtension"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 17 912 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 17 912 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 912 17 912 23+ , srcInfoPoints = []+ }+ "String")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 1 913 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 1 913 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 1 913 13+ , srcInfoPoints = []+ }+ "exeExtension"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 14 913 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Directory.hs" 913 14 913 15 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 16 913 21+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Directory.hs" 913 16 913 21+ , srcInfoPoints = []+ }+ "exe"+ "exe")))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 3 1 3 78)+ "---------------------------------------------------------------------------"+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 4 1 4 5) " |"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 5 1 5 35)+ " Module : System.Directory"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 6 1 6 53)+ " Copyright : (c) The University of Glasgow 2001"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 7 1 7 66)+ " License : BSD-style (see the file libraries/base/LICENSE)"+ , Comment False (SrcSpan "tests/examples/Directory.hs" 8 1 8 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 9 1 9 40)+ " Maintainer : libraries@haskell.org"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 10 1 10 25)+ " Stability : stable"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 11 1 11 27)+ " Portability : portable"+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 12 1 12 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 13 1 13 59)+ " System-independent interface to directory manipulation."+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 14 1 14 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 15 1 15 78)+ "---------------------------------------------------------------------------"+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 19 5 19 14) " $intro"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 21 5 21 32)+ " * Actions on directories"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 22 29 22 52)+ " :: FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 23 33 23 64)+ " :: Bool -> FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 24 29 24 52)+ " :: FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 25 33 25 56)+ " :: FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 26 29 26 64)+ " :: FilePath -> FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 28 33 28 64)+ " :: FilePath -> IO [FilePath]"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 29 33 29 50)+ " :: IO FilePath"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 30 33 30 56)+ " :: FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 32 5 32 33)+ " * Pre-defined directories"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 38 5 38 26)+ " * Actions on files"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 39 25 39 48)+ " :: FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 40 33 40 68)+ " :: FilePath -> FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 41 33 41 68)+ " :: FilePath -> FilePath -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 47 5 47 25)+ " * Existence tests"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 48 25 48 50)+ " :: FilePath -> IO Bool"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 49 33 49 58)+ " :: FilePath -> IO Bool"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 51 5 51 21)+ " * Permissions"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 53 5 53 20)+ " $permissions"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 57 21 57 46)+ " :: Permissions -> Bool"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 58 21 58 46)+ " :: Permissions -> Bool"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 59 21 59 46)+ " :: Permissions -> Bool"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 60 21 60 46)+ " :: Permissions -> Bool"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 63 33 63 65)+ " :: FilePath -> IO Permissions"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 64 33 64 71)+ " :: FilePath -> Permissions -> IO ()"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 67 5 67 20)+ " * Timestamps"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 69 33 69 63)+ " :: FilePath -> IO ClockTime"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 86 1 86 33)+ "# CFILES cbits/directory.c #"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 96 1 110 3)+ " $intro\nA directory contains a series of entries, each of which is a named\nreference to a file system object (file, directory etc.). Some\nentries may be hidden, inaccessible, or have some administrative\nfunction (e.g. `.' or `..' under POSIX\n<http://www.opengroup.org/onlinepubs/009695399/>), but in\nthis standard all such entries are considered to form part of the\ndirectory contents. Entries in sub-directories are not, however,\nconsidered to form part of the directory contents.\n\nEach file system object is referenced by a /path/. There is\nnormally at least one absolute path to each file system object. In\nsome operating systems, it may also be possible to have paths which\nare relative to the current directory.\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 112 1 112 78)+ "---------------------------------------------------------------------------"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 113 1 113 15)+ " Permissions"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 115 1 132 3)+ " $permissions\n\n The 'Permissions' type is used to record whether certain operations are\n permissible on a file\\/directory. 'getPermissions' and 'setPermissions'\n get and set these permissions, respectively. Permissions apply both to\n files and directories. For directories, the executable field will be\n 'False', and for files the searchable field will be 'False'. Note that\n directories may be searchable without being readable, if permission has\n been given to use them as part of a path, but not to examine the\n directory contents.\n\nNote that to change some, but not all permissions, a construct on the following lines must be used.\n\n> makeReadable f = do\n> p <- getPermissions f\n> setPermissions f (p {readable = True})\n\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 140 1 150 3)+ " |The 'getPermissions' operation returns the\npermissions for the file or directory.\n\nThe operation may fail with:\n\n* 'isPermissionError' if the user is not permitted to access\n the permissions; or\n\n* 'isDoesNotExistError' if the file or directory does not exist.\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 155 3 155 69)+ " stat() does a better job of guessing the permissions on Windows"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 156 3 156 71)+ " than access() does. e.g. for execute permission, it looks at the"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 157 3 157 28)+ " filename extension :-)"+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 158 3 158 5) ""+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 159 3 159 78)+ " I tried for a while to do this properly, using the Windows security API,"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 160 3 160 79)+ " and eventually gave up. getPermissions is a flawed API anyway. -- SimonM"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 177 1 187 3)+ " |The 'setPermissions' operation sets the\npermissions for the file or directory.\n\nThe operation may fail with:\n\n* 'isPermissionError' if the user is not permitted to set\n the permissions; or\n\n* 'isDoesNotExistError' if the file or directory does not exist.\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 217 1 217 78)+ "---------------------------------------------------------------------------"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 218 1 218 18)+ " Implementation"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 220 1 255 3)+ " |@'createDirectory' dir@ creates a new directory @dir@ which is\ninitially empty, or as near to empty as the operating system\nallows.\n\nThe operation may fail with:\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES]@\n\n* 'isAlreadyExistsError' \\/ 'AlreadyExists'\nThe operand refers to a directory that already exists.\n@ [EEXIST]@\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'NoSuchThing'\nThere is no path to the directory.\n@[ENOENT, ENOTDIR]@\n\n* 'ResourceExhausted'\nInsufficient resources (virtual memory, process file descriptors,\nphysical disk space, etc.) are available to perform the operation.\n@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@\n\n* 'InappropriateType'\nThe path refers to an existing non-directory object.\n@[EEXIST]@\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 261 1 261 70)+ " | @'createDirectoryIfMissing' parents dir@ creates a new directory"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 262 1 262 63)+ " @dir@ if it doesn\\'t exist. If the first argument is 'True'"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 263 1 263 77)+ " the function will also create all parent directories if they are missing."+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 264 38 264 66)+ " ^ Create its parents too?"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 265 30 265 77)+ " ^ The path to the directory you want to make"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 287 11 287 75)+ " createDirectory (and indeed POSIX mkdir) does not distinguish"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 288 11 288 79)+ " between a dir already existing and a file already existing. So we"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 289 11 289 79)+ " check for it here. Unfortunately there is a slight race condition"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 290 11 290 77)+ " here, but we think it is benign. It could report an exeption in"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 291 11 291 77)+ " the case that the dir did exist but another process deletes the"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 292 11 292 75)+ " directory and creates a file in its place before we can check"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 293 11 293 50)+ " that the directory did indeed exist."+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 302 1 341 3)+ " | @'removeDirectory' dir@ removes an existing directory /dir/. The\nimplementation may specify additional constraints which must be\nsatisfied before a directory can be removed (e.g. the directory has to\nbe empty, or may not be in use by other processes). It is not legal\nfor an implementation to partially remove a directory unless the\nentire directory is removed. A conformant implementation need not\nsupport directory removal in all situations (e.g. removal of the root\ndirectory).\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\nEIO\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n[ENAMETOOLONG, ELOOP]\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe directory does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY, ENOTEMPTY, EEXIST]@\n\n* 'UnsupportedOperation'\nThe implementation does not support removal in this situation.\n@[EINVAL]@\n\n* 'InappropriateType'\nThe operand refers to an existing non-directory object.\n@[ENOTDIR]@\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 347 1 347 75)+ " | @'removeDirectoryRecursive' dir@ removes an existing directory /dir/"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 348 1 348 65)+ " together with its content and all subdirectories. Be careful,"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 349 1 349 70)+ " if the directory contains symlinks, the function will follow them."+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 360 31 360 77)+ " If f is not a directory, re-throw the error"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 365 1 397 3)+ " |'removeFile' /file/ removes the directory entry for an existing file\n/file/, where /file/ is not itself a directory. The\nimplementation may specify additional constraints which must be\nsatisfied before a file can be removed (e.g. the file may not be in\nuse by other processes).\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid file name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe file does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY]@\n\n* 'InappropriateType'\nThe operand refers to an existing directory.\n@[EPERM, EINVAL]@\n\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 403 1 450 3)+ " |@'renameDirectory' old new@ changes the name of an existing\ndirectory from /old/ to /new/. If the /new/ directory\nalready exists, it is atomically replaced by the /old/ directory.\nIf the /new/ directory is neither the /old/ directory nor an\nalias of the /old/ directory, it is removed as if by\n'removeDirectory'. A conformant implementation need not support\nrenaming directories in all situations (e.g. renaming to an existing\ndirectory, or across different physical devices), but the constraints\nmust be documented.\n\nOn Win32 platforms, @renameDirectory@ fails if the /new/ directory already\nexists.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nEither operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe original directory does not exist, or there is no path to the target.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY, ENOTEMPTY, EEXIST]@\n\n* 'UnsupportedOperation'\nThe implementation does not support renaming in this situation.\n@[EINVAL, EXDEV]@\n\n* 'InappropriateType'\nEither path refers to an existing non-directory object.\n@[ENOTDIR, EISDIR]@\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 454 4 454 73)+ " XXX this test isn't performed atomically with the following rename"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 455 4 455 26)+ " ToDo: use Win32 API"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 465 1 507 3)+ " |@'renameFile' old new@ changes the name of an existing file system\nobject from /old/ to /new/. If the /new/ object already\nexists, it is atomically replaced by the /old/ object. Neither\npath may refer to an existing directory. A conformant implementation\nneed not support renaming files in all situations (e.g. renaming\nacross different physical devices), but the constraints must be\ndocumented.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nEither operand is not a valid file name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe original file does not exist, or there is no path to the target.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EROFS, EACCES, EPERM]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n@[EDQUOT, ENOSPC, ENOMEM, EMLINK]@\n\n* 'UnsatisfiedConstraints'\nImplementation-dependent constraints are not satisfied.\n@[EBUSY]@\n\n* 'UnsupportedOperation'\nThe implementation does not support renaming in this situation.\n@[EXDEV]@\n\n* 'InappropriateType'\nEither path refers to an existing directory.\n@[ENOTDIR, EISDIR, EINVAL, EEXIST, ENOTEMPTY]@\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 511 4 511 73)+ " XXX this test isn't performed atomically with the following rename"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 512 4 512 26)+ " ToDo: use Win32 API"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 522 1 526 3)+ " |@'copyFile' old new@ copies the existing file from /old/ to /new/.\nIf the /new/ file already exists, it is atomically replaced by the /old/ file.\nNeither path may refer to an existing directory. The permissions of /old/ are\ncopied to /new/, if possible.\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 553 1 553 60)+ " | Given path referring to a file or directory, returns a"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 554 1 554 64)+ " canonicalized path, with the intent that two paths referring"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 555 1 555 66)+ " to the same file\\/directory will map to the same canonicalized"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 556 1 556 58)+ " path. Note that it is impossible to guarantee that the"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 557 1 557 67)+ " implication (same file\\/dir \\<=\\> same canonicalizedPath) holds"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 558 1 558 66)+ " in either direction: this function can make only a best-effort"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 559 1 559 12)+ " attempt."+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 564 9 564 73)+ " normalise does more stuff, like upper-casing the drive letter"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 567 1 567 43)+ " | 'makeRelative' the current directory."+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 573 1 573 66)+ " | Given an executable file name, searches for such file in the"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 574 1 574 69)+ " directories listed in system PATH. The returned value is the path"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 575 1 575 70)+ " to the found executable or Nothing if an executable with the given"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 576 1 576 70)+ " name was not found. For example (findExecutable \\\"ghc\\\") gives you"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 577 1 577 20)+ " the path to GHC."+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 578 1 578 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 579 1 579 60)+ " The path returned by 'findExecutable' corresponds to the"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 580 1 580 68)+ " program that would be executed by 'System.Process.createProcess'"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 581 1 581 70)+ " when passed the same string (as a RawCommand, not a ShellCommand)."+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 582 1 582 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 583 1 583 71)+ " On Windows, 'findExecutable' calls the Win32 function 'SearchPath',"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 584 1 584 68)+ " which may search other places before checking the directories in"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 585 1 585 69)+ " @PATH@. Where it actually searches depends on registry settings,"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 586 1 586 61)+ " but notably includes the directory containing the current"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 587 1 587 19)+ " executable. See"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 588 1 588 68)+ " <http://msdn.microsoft.com/en-us/library/aa365527.aspx> for more"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 589 1 589 12)+ " details."+ , Comment+ False (SrcSpan "tests/examples/Directory.hs" 590 1 590 3) ""+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 596 1 625 3)+ " |@'getDirectoryContents' dir@ returns a list of /all/ entries\nin /dir/.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe directory does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EACCES]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n@[EMFILE, ENFILE]@\n\n* 'InappropriateType'\nThe path refers to an existing non-directory object.\n@[ENOTDIR]@\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 636 9 636 71)+ " we needn't worry about empty directories: adirectory always"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 637 9 637 45)+ " has at least \".\" and \"..\" entries"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 645 18 645 62)+ " no need to reverse, ordering is undefined"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 647 1 671 3)+ " |If the operating system has a notion of current directories,\n'getCurrentDirectory' returns an absolute path to the\ncurrent directory of the calling process.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThere is no path referring to the current directory.\n@[EPERM, ENOENT, ESTALE...]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EACCES]@\n\n* 'ResourceExhausted'\nInsufficient resources are available to perform the operation.\n\n* 'UnsupportedOperation'\nThe operating system has no notion of current directory.\n\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 676 1 706 3)+ " |If the operating system has a notion of current directories,\n@'setCurrentDirectory' dir@ changes the current\ndirectory of the calling process to /dir/.\n\nThe operation may fail with:\n\n* 'HardwareFault'\nA physical I\\/O error has occurred.\n@[EIO]@\n\n* 'InvalidArgument'\nThe operand is not a valid directory name.\n@[ENAMETOOLONG, ELOOP]@\n\n* 'isDoesNotExistError' \\/ 'NoSuchThing'\nThe directory does not exist.\n@[ENOENT, ENOTDIR]@\n\n* 'isPermissionError' \\/ 'PermissionDenied'\nThe process has insufficient privileges to perform the operation.\n@[EACCES]@\n\n* 'UnsupportedOperation'\nThe operating system has no notion of current directory, or the\ncurrent directory cannot be dynamically changed.\n\n* 'InappropriateType'\nThe path refers to an existing non-directory object.\n@[ENOTDIR]@\n\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 712 1 714 3)+ " |The operation 'doesDirectoryExist' returns 'True' if the argument file\nexists and is a directory, and 'False' otherwise.\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 721 1 723 3)+ " |The operation 'doesFileExist' returns 'True'\nif the argument file exists and is not a directory, and 'False' otherwise.\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 730 1 740 3)+ " |The 'getModificationTime' operation returns the\nclock time at which the file or directory was last modified.\n\nThe operation may fail with:\n\n* 'isPermissionError' if the user is not permitted to access\n the modification time; or\n\n* 'isDoesNotExistError' if the file or directory does not exist.\n\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 744 2 744 24)+ " ToDo: use Win32 API"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 787 1 807 3)+ " | Returns the current user's home directory.\n\nThe directory returned is expected to be writable by the current user,\nbut note that it isn't generally considered good practice to store\napplication-specific data here; use 'getAppUserDataDirectory'\ninstead.\n\nOn Unix, 'getHomeDirectory' returns the value of the @HOME@\nenvironment variable. On Windows, the system is queried for a\nsuitable path; a typical path might be\n@C:/Documents And Settings/user@.\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of home directory.\n\n* 'isDoesNotExistError'\nThe home directory for the current user does not exist, or\ncannot be found.\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 820 1 846 3)+ " | Returns the pathname of a directory in which application-specific\ndata for the current user can be stored. The result of\n'getAppUserDataDirectory' for a given application is specific to\nthe current user.\n\nThe argument should be the name of the application, which will be used\nto construct the pathname (so avoid using unusual characters that\nmight result in an invalid pathname).\n\nNote: the directory may not actually exist, and may need to be created\nfirst. It is expected that the parent directory exists and is\nwritable.\n\nOn Unix, this function returns @$HOME\\/.appName@. On Windows, a\ntypical path might be\n\n> C:/Documents And Settings/user/Application Data/appName\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of application-specific data directory.\n\n* 'isDoesNotExistError'\nThe home directory for the current user does not exist, or\ncannot be found.\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 853 1 873 3)+ " | Returns the current user's document directory.\n\nThe directory returned is expected to be writable by the current user,\nbut note that it isn't generally considered good practice to store\napplication-specific data here; use 'getAppUserDataDirectory'\ninstead.\n\nOn Unix, 'getUserDocumentsDirectory' returns the value of the @HOME@\nenvironment variable. On Windows, the system is queried for a\nsuitable path; a typical path might be\n@C:\\/Documents and Settings\\/user\\/My Documents@.\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of document directory.\n\n* 'isDoesNotExistError'\nThe document directory for the current user does not exist, or\ncannot be found.\n"+ , Comment+ True+ (SrcSpan "tests/examples/Directory.hs" 879 1 904 3)+ " | Returns the current directory for temporary files.\n\nOn Unix, 'getTemporaryDirectory' returns the value of the @TMPDIR@\nenvironment variable or \\\"\\/tmp\\\" if the variable isn\\'t defined.\nOn Windows, the function checks for the existence of environment variables in\nthe following order and uses the first path found:\n\n*\nTMP environment variable.\n\n*\nTEMP environment variable.\n\n*\nUSERPROFILE environment variable.\n\n*\nThe Windows directory\n\nThe operation may fail with:\n\n* 'UnsupportedOperation'\nThe operating system has no notion of temporary directory.\n\nThe function doesn\\'t verify whether the path exists.\n"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 909 1 909 60)+ " ToDo: This should be determined via autoconf (AC_EXEEXT)"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 910 1 910 36)+ " | Extension for executable files"+ , Comment+ False+ (SrcSpan "tests/examples/Directory.hs" 911 1 911 64)+ " (typically @\\\"\\\"@ on Unix and @\\\"exe\\\"@ on Windows or OS\\/2)"+ ]+ )
+ tests/examples/Directory.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Directory.hs.prettyprinter.golden view
@@ -0,0 +1,324 @@+{-# LANGUAGE ForeignFunctionInterface, NondecreasingIndentation #-}+module System.Directory+ (createDirectory, createDirectoryIfMissing, removeDirectory,+ removeDirectoryRecursive, renameDirectory, getDirectoryContents,+ getCurrentDirectory, setCurrentDirectory, getHomeDirectory,+ getAppUserDataDirectory, getUserDocumentsDirectory,+ getTemporaryDirectory, removeFile, renameFile, copyFile,+ canonicalizePath, makeRelativeToCurrentDirectory, findExecutable,+ doesFileExist, doesDirectoryExist,+ Permissions(Permissions, readable, writable, executable,+ searchable),+ getPermissions, setPermissions, copyPermissions,+ getModificationTime)+ where+import Prelude hiding (catch)+import qualified Prelude+import Control.Monad (guard)+import System.Environment (getEnv)+import System.FilePath+import System.IO+import System.IO.Error hiding (catch, try)+import Control.Monad (when, unless)+import Control.Exception.Base+import Foreign+import Foreign.C+import System.Time (ClockTime(..))+import GHC.IO.Exception+ (IOException(..), IOErrorType(..), ioException)+import System.Posix.Types+import System.Posix.Internals+import qualified System.Win32 as Win32++data Permissions = Permissions{readable, writable, executable,+ searchable :: Bool}+ deriving (Eq, Ord, Read, Show)++getPermissions :: FilePath -> IO Permissions+getPermissions name+ = do withFilePath name $+ \ s ->+ do allocaBytes sizeof_stat $+ \ p_stat ->+ do throwErrnoIfMinus1_ "getPermissions" $ c_stat s p_stat+ mode <- st_mode p_stat+ let usr_read = mode .&. s_IRUSR+ let usr_write = mode .&. s_IWUSR+ let usr_exec = mode .&. s_IXUSR+ let is_dir = mode .&. s_IFDIR+ return+ (Permissions{readable = usr_read /= 0, writable = usr_write /= 0,+ executable = is_dir == 0 && usr_exec /= 0,+ searchable = is_dir /= 0 && usr_exec /= 0})++setPermissions :: FilePath -> Permissions -> IO ()+setPermissions name (Permissions r w e s)+ = do allocaBytes sizeof_stat $+ \ p_stat ->+ do withFilePath name $+ \ p_name ->+ do throwErrnoIfMinus1_ "setPermissions" $+ do c_stat p_name p_stat+ mode <- st_mode p_stat+ let mode1 = modifyBit r mode s_IRUSR+ let mode2 = modifyBit w mode1 s_IWUSR+ let mode3 = modifyBit (e || s) mode2 s_IXUSR+ c_wchmod p_name mode3+ where modifyBit :: Bool -> CMode -> CMode -> CMode+ modifyBit False m b = m .&. (complement b)+ modifyBit True m b = m .|. b++foreign import ccall unsafe "_wchmod" c_wchmod ::+ CWString -> CMode -> IO CInt++copyPermissions :: FilePath -> FilePath -> IO ()+copyPermissions source dest+ = do allocaBytes sizeof_stat $+ \ p_stat ->+ do withFilePath source $+ \ p_source ->+ do withFilePath dest $+ \ p_dest ->+ do throwErrnoIfMinus1_ "copyPermissions" $ c_stat p_source p_stat+ mode <- st_mode p_stat+ throwErrnoIfMinus1_ "copyPermissions" $ c_wchmod p_dest mode++createDirectory :: FilePath -> IO ()+createDirectory path = do Win32.createDirectory path Nothing++createDirectoryIfMissing :: Bool -> FilePath -> IO ()+createDirectoryIfMissing create_parents path0+ | create_parents = createDirs (parents path0)+ | otherwise = createDirs (take 1 (parents path0))+ where parents+ = reverse . scanl1 (</>) . splitDirectories . normalise+ createDirs [] = return ()+ createDirs (dir : []) = createDir dir throw+ createDirs (dir : dirs)+ = createDir dir $+ \ _ ->+ do createDirs dirs+ createDir dir throw+ + createDir :: FilePath -> (IOException -> IO ()) -> IO ()+ createDir dir notExistHandler+ = do r <- try $ createDirectory dir+ case (r :: Either IOException ()) of+ Right () -> return ()+ Left e | isDoesNotExistError e -> notExistHandler e+ | isAlreadyExistsError e ->+ (do withFileStatus "createDirectoryIfMissing" dir $+ \ st ->+ do isDir <- isDirectory st+ if isDir then return () else throw e)+ `catch` ((\ _ -> return ()) :: IOException -> IO ())+ | otherwise -> throw e++removeDirectory :: FilePath -> IO ()+removeDirectory path = Win32.removeDirectory path++removeDirectoryRecursive :: FilePath -> IO ()+removeDirectoryRecursive startLoc+ = do cont <- getDirectoryContents startLoc+ sequence_ [rm (startLoc </> x) | x <- cont, x /= "." && x /= ".."]+ removeDirectory startLoc+ where rm :: FilePath -> IO ()+ rm f+ = do temp <- try (removeFile f)+ case temp of+ Left e -> do isDir <- doesDirectoryExist f+ unless isDir $ throw (e :: SomeException)+ removeDirectoryRecursive f+ Right _ -> return ()++removeFile :: FilePath -> IO ()+removeFile path = Win32.deleteFile path++renameDirectory :: FilePath -> FilePath -> IO ()+renameDirectory opath npath+ = do withFileStatus "renameDirectory" opath $+ \ st ->+ do is_dir <- isDirectory st+ if (not is_dir) then+ ioException+ (ioeSetErrorString+ (mkIOError InappropriateType "renameDirectory" Nothing+ (Just opath))+ "not a directory")+ else+ do Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++renameFile :: FilePath -> FilePath -> IO ()+renameFile opath npath+ = do withFileOrSymlinkStatus "renameFile" opath $+ \ st ->+ do is_dir <- isDirectory st+ if is_dir then+ ioException+ (ioeSetErrorString+ (mkIOError InappropriateType "renameFile" Nothing (Just opath))+ "is a directory")+ else+ do Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING++copyFile :: FilePath -> FilePath -> IO ()+copyFile fromFPath toFPath+ = copy `Prelude.catch`+ (\ exc -> throw $ ioeSetLocation exc "copyFile")+ where copy+ = bracket (openBinaryFile fromFPath ReadMode) hClose $+ \ hFrom ->+ bracketOnError openTmp cleanTmp $+ \ (tmpFPath, hTmp) ->+ do allocaBytes bufferSize $ copyContents hFrom hTmp+ hClose hTmp+ ignoreIOExceptions $ copyPermissions fromFPath tmpFPath+ renameFile tmpFPath toFPath+ openTmp+ = openBinaryTempFile (takeDirectory toFPath) ".copyFile.tmp"+ cleanTmp (tmpFPath, hTmp)+ = do ignoreIOExceptions $ hClose hTmp+ ignoreIOExceptions $ removeFile tmpFPath+ bufferSize = 1024+ copyContents hFrom hTo buffer+ = do count <- hGetBuf hFrom buffer bufferSize+ when (count > 0) $+ do hPutBuf hTo buffer count+ copyContents hFrom hTo buffer+ ignoreIOExceptions io = io `catch` ioExceptionIgnorer+ + ioExceptionIgnorer :: IOException -> IO ()+ ioExceptionIgnorer _ = return ()++canonicalizePath :: FilePath -> IO FilePath+canonicalizePath fpath+ = do path <- Win32.getFullPathName fpath+ return (normalise path)++makeRelativeToCurrentDirectory :: FilePath -> IO FilePath+makeRelativeToCurrentDirectory x+ = do cur <- getCurrentDirectory+ return $ makeRelative cur x++findExecutable :: String -> IO (Maybe FilePath)+findExecutable binary+ = Win32.searchPath Nothing binary ('.' : exeExtension)++getDirectoryContents :: FilePath -> IO [FilePath]+getDirectoryContents path+ = modifyIOError+ ((`ioeSetFileName` path) .+ (`ioeSetLocation` "getDirectoryContents"))+ $+ do bracket (Win32.findFirstFile (path </> "*"))+ (\ (h, _) -> Win32.findClose h)+ (\ (h, fdat) -> loop h fdat [])+ where loop ::+ Win32.HANDLE -> Win32.FindData -> [FilePath] -> IO [FilePath]+ loop h fdat acc+ = do filename <- Win32.getFindDataFileName fdat+ more <- Win32.findNextFile h fdat+ if more then loop h fdat (filename : acc) else+ return (filename : acc)++getCurrentDirectory :: IO FilePath+getCurrentDirectory = do Win32.getCurrentDirectory++setCurrentDirectory :: FilePath -> IO ()+setCurrentDirectory path = Win32.setCurrentDirectory path++doesDirectoryExist :: FilePath -> IO Bool+doesDirectoryExist name+ = (withFileStatus "doesDirectoryExist" name $+ \ st -> isDirectory st)+ `catch` ((\ _ -> return False) :: IOException -> IO Bool)++doesFileExist :: FilePath -> IO Bool+doesFileExist name+ = (withFileStatus "doesFileExist" name $+ \ st ->+ do b <- isDirectory st+ return (not b))+ `catch` ((\ _ -> return False) :: IOException -> IO Bool)++getModificationTime :: FilePath -> IO ClockTime+getModificationTime name+ = do withFileStatus "getModificationTime" name $+ \ st -> do modificationTime st++withFileStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileStatus loc name f+ = do modifyIOError (`ioeSetFileName` name) $+ allocaBytes sizeof_stat $+ \ p ->+ withFilePath (fileNameEndClean name) $+ \ s -> do throwErrnoIfMinus1Retry_ loc (c_stat s p)++withFileOrSymlinkStatus ::+ String -> FilePath -> (Ptr CStat -> IO a) -> IO a+withFileOrSymlinkStatus loc name f+ = do modifyIOError (`ioeSetFileName` name) $+ allocaBytes sizeof_stat $+ \ p ->+ withFilePath name $+ \ s -> do throwErrnoIfMinus1Retry_ loc (lstat s p)++modificationTime :: Ptr CStat -> IO ClockTime+modificationTime stat+ = do mtime <- st_mtime stat+ let realToInteger = round . realToFrac :: Real a => a -> Integer+ return (TOD (realToInteger (mtime :: CTime)) 0)++isDirectory :: Ptr CStat -> IO Bool+isDirectory stat+ = do mode <- st_mode stat+ return (s_isdir mode)++fileNameEndClean :: String -> String+fileNameEndClean name+ = if isDrive name then addTrailingPathSeparator name else+ dropTrailingPathSeparator name++foreign import ccall unsafe "HsDirectory.h __hscore_S_IRUSR"+ s_IRUSR :: CMode++foreign import ccall unsafe "HsDirectory.h __hscore_S_IWUSR"+ s_IWUSR :: CMode++foreign import ccall unsafe "HsDirectory.h __hscore_S_IXUSR"+ s_IXUSR :: CMode++foreign import ccall unsafe "__hscore_S_IFDIR" s_IFDIR :: CMode++foreign import ccall unsafe "__hscore_long_path_size"+ long_path_size :: Int++getHomeDirectory :: IO FilePath+getHomeDirectory+ = modifyIOError ((`ioeSetLocation` "getHomeDirectory")) $+ do r <- try $+ Win32.sHGetFolderPath nullPtr Win32.cSIDL_PROFILE nullPtr 0+ case (r :: Either IOException String) of+ Right s -> return s+ Left _ -> do r1 <- try $+ Win32.sHGetFolderPath nullPtr Win32.cSIDL_WINDOWS nullPtr 0+ case r1 of+ Right s -> return s+ Left e -> ioError (e :: IOException)++getAppUserDataDirectory :: String -> IO FilePath+getAppUserDataDirectory appName+ = do modifyIOError ((`ioeSetLocation` "getAppUserDataDirectory")) $+ do s <- Win32.sHGetFolderPath nullPtr Win32.cSIDL_APPDATA nullPtr 0+ return (s ++ '\\' : appName)++getUserDocumentsDirectory :: IO FilePath+getUserDocumentsDirectory+ = do modifyIOError ((`ioeSetLocation` "getUserDocumentsDirectory"))+ $ do Win32.sHGetFolderPath nullPtr Win32.cSIDL_PERSONAL nullPtr 0++getTemporaryDirectory :: IO FilePath+getTemporaryDirectory = do Win32.getTemporaryDirectory++exeExtension :: String+exeExtension = "exe"
+ tests/examples/DoRec.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE DoRec #-}++main = do rec let x = 1+ return ()
+ tests/examples/DoRec.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoRec.hs.parser.golden view
@@ -0,0 +1,177 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 1 1 1 1+ , SrcSpan "tests/examples/DoRec.hs" 3 1 3 1+ , SrcSpan "tests/examples/DoRec.hs" 3 1 3 1+ , SrcSpan "tests/examples/DoRec.hs" 3 1 3 1+ , SrcSpan "tests/examples/DoRec.hs" 5 1 5 1+ , SrcSpan "tests/examples/DoRec.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 1 1 1 13+ , SrcSpan "tests/examples/DoRec.hs" 1 20 1 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "DoRec"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 1 4 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 6 4 20+ , srcInfoPoints = [ SrcSpan "tests/examples/DoRec.hs" 3 6 3 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 8 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 3 8 3 10+ , SrcSpan "tests/examples/DoRec.hs" 3 11 3 11+ , SrcSpan "tests/examples/DoRec.hs" 4 11 4 11+ , SrcSpan "tests/examples/DoRec.hs" 5 1 5 0+ ]+ }+ [ RecStmt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 11 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 3 11 3 14+ , SrcSpan "tests/examples/DoRec.hs" 3 15 3 15+ , SrcSpan "tests/examples/DoRec.hs" 4 11 4 0+ ]+ }+ [ LetStmt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 15 3 24+ , srcInfoPoints = [ SrcSpan "tests/examples/DoRec.hs" 3 15 3 18 ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 3 19 3 19+ , SrcSpan "tests/examples/DoRec.hs" 4 11 4 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 24+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 21 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 3 21 3 22 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DoRec.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ ])+ ]+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 20+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 11 4 17+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 4 18 4 19+ , SrcSpan "tests/examples/DoRec.hs" 4 19 4 20+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 4 18 4 19+ , SrcSpan "tests/examples/DoRec.hs" 4 19 4 20+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoRec.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoRec.hs" 4 18 4 19+ , SrcSpan "tests/examples/DoRec.hs" 4 19 4 20+ ]+ }))))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/DoRec.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoRec.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE DoRec #-}+main+ = do rec let x = 1+ return ()
+ tests/examples/DoubleHashOp.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE UnboxedTuples #-}+module DoubleHashOp where++(##) :: a -> b -> Int+a ## b = 0++(#*) :: a -> b -> Int+a #* b = 1++-- This still does not work though:+-- (#) :: a -> b -> Int+-- a # b = 2
+ tests/examples/DoubleHashOp.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoubleHashOp.hs.parser.golden view
@@ -0,0 +1,317 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 13 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 1 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 13 1 13 1+ , SrcSpan "tests/examples/DoubleHashOp.hs" 13 1 13 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 2 1 2 7+ , SrcSpan "tests/examples/DoubleHashOp.hs" 2 21 2 26+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 2 8 2 20+ , srcInfoPoints = []+ }+ "DoubleHashOp")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 1 1 1 13+ , SrcSpan "tests/examples/DoubleHashOp.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnboxedTuples"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 6 4 8 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 1 4 2+ , SrcSpan "tests/examples/DoubleHashOp.hs" 4 2 4 4+ , SrcSpan "tests/examples/DoubleHashOp.hs" 4 4 4 5+ ]+ }+ "##"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 9 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 11 4 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 14 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 4 16 4 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ "b"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 11+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ "a"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 3 5 5+ , srcInfoPoints = []+ }+ "##")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 6 5 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 6 5 7+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 8 5 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 5 8 5 9 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 10 5 11+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 5 10 5 11+ , srcInfoPoints = []+ }+ 0+ "0")))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 6 7 8 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 1 7 2+ , SrcSpan "tests/examples/DoubleHashOp.hs" 7 2 7 4+ , SrcSpan "tests/examples/DoubleHashOp.hs" 7 4 7 5+ ]+ }+ "#*"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 9 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 11 7 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 14 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 7 16 7 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ "b"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 11+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 1 8 2+ , srcInfoPoints = []+ }+ "a"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 3 8 5+ , srcInfoPoints = []+ }+ "#*")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 8 8 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DoubleHashOp.hs" 8 8 8 9 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 10 8 11+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DoubleHashOp.hs" 8 10 8 11+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/DoubleHashOp.hs" 10 1 10 36)+ " This still does not work though:"+ , Comment+ False+ (SrcSpan "tests/examples/DoubleHashOp.hs" 11 1 11 24)+ " (#) :: a -> b -> Int"+ , Comment+ False+ (SrcSpan "tests/examples/DoubleHashOp.hs" 12 1 12 13)+ " a # b = 2"+ ]+ )
+ tests/examples/DoubleHashOp.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DoubleHashOp.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnboxedTuples #-}+module DoubleHashOp where++( ## ) :: a -> b -> Int+a ## b = 0++( #* ) :: a -> b -> Int+a #* b = 1
+ tests/examples/DsStrictData.hs view
@@ -0,0 +1,48 @@+{-# LANGUAGE ScopedTypeVariables, StrictData, GADTs #-}++-- | Tests the StrictData LANGUAGE pragma.+module Main where++import qualified Control.Exception as E+import System.IO.Unsafe (unsafePerformIO)++data Strict a = S a+data Strict2 b = S2 !b+data Strict3 c where+ S3 :: c -> Strict3 c++data UStrict = US {-# UNPACK #-} Int++data Lazy d = L ~d+data Lazy2 e where+ L2 :: ~e -> Lazy2 e++main :: IO ()+main =+ do print (isBottom (S bottom))+ print (isBottom (S2 bottom))+ print (isBottom (US bottom))+ print (isBottom (S3 bottom))+ putStrLn ""+ print (not (isBottom (L bottom)))+ print (not (isBottom (L2 bottom)))+ print (not (isBottom (Just bottom))) -- sanity check++------------------------------------------------------------------------+-- Support for testing for bottom++bottom :: a+bottom = error "_|_"++isBottom :: a -> Bool+isBottom f = unsafePerformIO $+ (E.evaluate f >> return False) `E.catches`+ [ E.Handler (\(_ :: E.ArrayException) -> return True)+ , E.Handler (\(_ :: E.ErrorCall) -> return True)+ , E.Handler (\(_ :: E.NoMethodError) -> return True)+ , E.Handler (\(_ :: E.NonTermination) -> return True)+ , E.Handler (\(_ :: E.PatternMatchFail) -> return True)+ , E.Handler (\(_ :: E.RecConError) -> return True)+ , E.Handler (\(_ :: E.RecSelError) -> return True)+ , E.Handler (\(_ :: E.RecUpdError) -> return True)+ ]
+ tests/examples/DsStrictData.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DsStrictData.hs.parser.golden view
@@ -0,0 +1,3591 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 1 49 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 1 1 1 1+ , SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 1+ , SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 1+ , SrcSpan "tests/examples/DsStrictData.hs" 6 1 6 1+ , SrcSpan "tests/examples/DsStrictData.hs" 7 1 7 1+ , SrcSpan "tests/examples/DsStrictData.hs" 9 1 9 1+ , SrcSpan "tests/examples/DsStrictData.hs" 10 1 10 1+ , SrcSpan "tests/examples/DsStrictData.hs" 11 1 11 1+ , SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 1+ , SrcSpan "tests/examples/DsStrictData.hs" 16 1 16 1+ , SrcSpan "tests/examples/DsStrictData.hs" 17 1 17 1+ , SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 1+ , SrcSpan "tests/examples/DsStrictData.hs" 21 1 21 1+ , SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 1+ , SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 1+ , SrcSpan "tests/examples/DsStrictData.hs" 37 1 37 1+ , SrcSpan "tests/examples/DsStrictData.hs" 38 1 38 1+ , SrcSpan "tests/examples/DsStrictData.hs" 49 1 49 1+ , SrcSpan "tests/examples/DsStrictData.hs" 49 1 49 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 4 1 4 7+ , SrcSpan "tests/examples/DsStrictData.hs" 4 13 4 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ "Main")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 1 1 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 1 1 1 13+ , SrcSpan "tests/examples/DsStrictData.hs" 1 33 1 34+ , SrcSpan "tests/examples/DsStrictData.hs" 1 45 1 46+ , SrcSpan "tests/examples/DsStrictData.hs" 1 53 1 56+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 14 1 33+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 35 1 45+ , srcInfoPoints = []+ }+ "StrictData"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 1 47 1 52+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 6 1 6 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 6 1 6 7+ , SrcSpan "tests/examples/DsStrictData.hs" 6 8 6 17+ , SrcSpan "tests/examples/DsStrictData.hs" 6 36 6 38+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 6 18 6 35+ , srcInfoPoints = []+ }+ "Control.Exception"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 6 39 6 40+ , srcInfoPoints = []+ }+ "E")+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 1 7 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 7 1 7 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 8 7 24+ , srcInfoPoints = []+ }+ "System.IO.Unsafe"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 25 7 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 7 25 7 26+ , SrcSpan "tests/examples/DsStrictData.hs" 7 41 7 42+ ]+ }+ False+ [ IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 26 7 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 7 26 7 41+ , srcInfoPoints = []+ }+ "unsafePerformIO")+ ])+ }+ ]+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 1 9 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 9 15 9 16 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 1 9 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 6 9 14+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 6 9 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 6 9 12+ , srcInfoPoints = []+ }+ "Strict"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 13 9 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 13 9 14+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 17 9 20+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 17 9 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 17 9 18+ , srcInfoPoints = []+ }+ "S")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 19 9 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 9 19 9 20+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 1 10 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 10 16 10 17 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 1 10 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 6 10 15+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 6 10 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 10 6 10 13+ , srcInfoPoints = []+ }+ "Strict2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 14 10 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 14 10 15+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 18 10 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 18 10 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 18 10 20+ , srcInfoPoints = []+ }+ "S2")+ [ TyBang+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 21 10 23+ , srcInfoPoints = []+ }+ (BangedTy+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 21 10 22+ , srcInfoPoints = []+ })+ (NoUnpackPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+ , srcInfoPoints = []+ })+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 22 10 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 10 22 10 23+ , srcInfoPoints = []+ }+ "b"))+ ])+ ]+ []+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 1 14 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 11 16 11 21+ , SrcSpan "tests/examples/DsStrictData.hs" 12 3 12 3+ , SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 1 11 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 6 11 15+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 6 11 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 11 6 11 13+ , srcInfoPoints = []+ }+ "Strict3"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 11 14 11 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 11 14 11 15+ , srcInfoPoints = []+ }+ "c")))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 3 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 12 6 12 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 3 12 5+ , srcInfoPoints = []+ }+ "S3")+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 9 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 12 11 12 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 9 12 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 9 12 10+ , srcInfoPoints = []+ }+ "c"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 12 14 12 21+ , srcInfoPoints = []+ }+ "Strict3")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 12 22 12 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 12 22 12 23+ , srcInfoPoints = []+ }+ "c"))))+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 14 14 14 15 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 1 14 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 6 14 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 14 6 14 13+ , srcInfoPoints = []+ }+ "UStrict"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 16 14 37+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 16 14 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 16 14 18+ , srcInfoPoints = []+ }+ "US")+ [ TyBang+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 19 14 37+ , srcInfoPoints = []+ }+ (NoStrictAnnot+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+ , srcInfoPoints = []+ })+ (Unpack+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 19 14 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 14 19 14 29+ , SrcSpan "tests/examples/DsStrictData.hs" 14 30 14 33+ ]+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 34 14 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 34 14 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 14 34 14 37+ , srcInfoPoints = []+ }+ "Int")))+ ])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 1 16 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 16 13 16 14 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 1 16 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 6 16 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 6 16 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 16 6 16 10+ , srcInfoPoints = []+ }+ "Lazy"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 11 16 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 11 16 12+ , srcInfoPoints = []+ }+ "d")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 15 16 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 15 16 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 15 16 16+ , srcInfoPoints = []+ }+ "L")+ [ TyBang+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 17 16 19+ , srcInfoPoints = []+ }+ (LazyTy+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 17 16 18+ , srcInfoPoints = []+ })+ (NoUnpackPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+ , srcInfoPoints = []+ })+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 18 16 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 16 18 16 19+ , srcInfoPoints = []+ }+ "d"))+ ])+ ]+ []+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 1 20 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 17 14 17 19+ , SrcSpan "tests/examples/DsStrictData.hs" 18 3 18 3+ , SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 1 17 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 6 17 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 6 17 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 17 6 17 11+ , srcInfoPoints = []+ }+ "Lazy2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 17 12 17 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 17 12 17 13+ , srcInfoPoints = []+ }+ "e")))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 3 18 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 18 6 18 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 3 18 5+ , srcInfoPoints = []+ }+ "L2")+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 9 18 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 18 12 18 14 ]+ }+ (TyBang+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 9 18 11+ , srcInfoPoints = []+ }+ (LazyTy+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 18 9 18 10+ , srcInfoPoints = []+ })+ (NoUnpackPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+ , srcInfoPoints = []+ })+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 10 18 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 10 18 11+ , srcInfoPoints = []+ }+ "e")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 15 18 20+ , srcInfoPoints = []+ }+ "Lazy2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 21 18 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 18 21 18 22+ , srcInfoPoints = []+ }+ "e"))))+ ]+ []+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 20 6 20 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 1 20 5+ , srcInfoPoints = []+ }+ "main"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 14+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 20 9 20 11+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 13+ , SrcSpan "tests/examples/DsStrictData.hs" 20 13 20 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 13+ , SrcSpan "tests/examples/DsStrictData.hs" 20 13 20 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 20 12 20 13+ , SrcSpan "tests/examples/DsStrictData.hs" 20 13 20 14+ ]+ }))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 1 29 42+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 1 21 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 1 21 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 21 6 29 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 21 6 21 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 3 29 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 22 3 22 5+ , SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 6+ , SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 6+ , SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 6+ , SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 6+ , SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 6+ , SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 6+ , SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 6+ , SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 6+ , SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 33+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 6 22 11+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 12 22 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 22 12 22 13+ , SrcSpan "tests/examples/DsStrictData.hs" 22 32 22 33+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 13 22 21+ , srcInfoPoints = []+ }+ "isBottom")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 22 22 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 22 22 22 23+ , SrcSpan "tests/examples/DsStrictData.hs" 22 31 22 32+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 23 22 31+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 23 22 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 23 22 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 22 23 22 24+ , srcInfoPoints = []+ }+ "S")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 25 22 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 22 25 22 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 22 25 22 31+ , srcInfoPoints = []+ }+ "bottom"))))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 6 23 11+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 12 23 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 23 12 23 13+ , SrcSpan "tests/examples/DsStrictData.hs" 23 33 23 34+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 13 23 21+ , srcInfoPoints = []+ }+ "isBottom")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 22 23 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 23 22 23 23+ , SrcSpan "tests/examples/DsStrictData.hs" 23 32 23 33+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 23 23 32+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 23 23 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 23 23 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 23 23 23 25+ , srcInfoPoints = []+ }+ "S2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 26 23 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 23 26 23 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 23 26 23 32+ , srcInfoPoints = []+ }+ "bottom"))))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 6 24 11+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 12 24 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 24 12 24 13+ , SrcSpan "tests/examples/DsStrictData.hs" 24 33 24 34+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 13 24 21+ , srcInfoPoints = []+ }+ "isBottom")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 22 24 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 24 22 24 23+ , SrcSpan "tests/examples/DsStrictData.hs" 24 32 24 33+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 23 24 32+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 23 24 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 23 24 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 24 23 24 25+ , srcInfoPoints = []+ }+ "US")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 26 24 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 24 26 24 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 24 26 24 32+ , srcInfoPoints = []+ }+ "bottom"))))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 6 25 11+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 12 25 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 25 12 25 13+ , SrcSpan "tests/examples/DsStrictData.hs" 25 33 25 34+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 13 25 21+ , srcInfoPoints = []+ }+ "isBottom")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 22 25 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 25 22 25 23+ , SrcSpan "tests/examples/DsStrictData.hs" 25 32 25 33+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 23 25 32+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 23 25 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 23 25 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 25 23 25 25+ , srcInfoPoints = []+ }+ "S3")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 26 25 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 25 26 25 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 25 26 25 32+ , srcInfoPoints = []+ }+ "bottom"))))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 17+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 26 6 26 14+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 26 15 26 17+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 26 15 26 17+ , srcInfoPoints = []+ }+ ""+ "")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 39+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 6 27 11+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 12 27 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 27 12 27 13+ , SrcSpan "tests/examples/DsStrictData.hs" 27 38 27 39+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 13 27 16+ , srcInfoPoints = []+ }+ "not")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 17 27 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 27 17 27 18+ , SrcSpan "tests/examples/DsStrictData.hs" 27 37 27 38+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 18 27 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 18 27 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 18 27 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 27 18 27 26+ , srcInfoPoints = []+ }+ "isBottom")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 27 27 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 27 27 27 28+ , SrcSpan "tests/examples/DsStrictData.hs" 27 36 27 37+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 27 28 27 36+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 27 28 27 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 27 28 27 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 27+ 28+ 27+ 29+ , srcInfoPoints = []+ }+ "L")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 27 30 27 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 27 30 27 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 27+ 30+ 27+ 36+ , srcInfoPoints = []+ }+ "bottom"))))))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 40+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 6 28 11+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 12 28 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 28 12 28 13+ , SrcSpan "tests/examples/DsStrictData.hs" 28 39 28 40+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 13 28 16+ , srcInfoPoints = []+ }+ "not")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 17 28 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 28 17 28 18+ , SrcSpan "tests/examples/DsStrictData.hs" 28 38 28 39+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 18 28 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 18 28 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 18 28 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 28 18 28 26+ , srcInfoPoints = []+ }+ "isBottom")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 27 28 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 28 27 28 28+ , SrcSpan "tests/examples/DsStrictData.hs" 28 37 28 38+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 28 28 28 37+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 28 28 28 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 28 28 28 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 28+ 28+ 28+ 30+ , srcInfoPoints = []+ }+ "L2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 28 31 28 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 28 31 28 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 28+ 31+ 28+ 37+ , srcInfoPoints = []+ }+ "bottom"))))))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 42+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 6 29 11+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 12 29 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 29 12 29 13+ , SrcSpan "tests/examples/DsStrictData.hs" 29 41 29 42+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 13 29 16+ , srcInfoPoints = []+ }+ "not")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 17 29 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 29 17 29 18+ , SrcSpan "tests/examples/DsStrictData.hs" 29 40 29 41+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 18 29 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 18 29 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 18 29 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 29 18 29 26+ , srcInfoPoints = []+ }+ "isBottom")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 27 29 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 29 27 29 28+ , SrcSpan "tests/examples/DsStrictData.hs" 29 39 29 40+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 29 28 29 39+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 29 28 29 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 29 28 29 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 29+ 28+ 29+ 32+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 29 33 29 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 29 33 29 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 29+ 33+ 29+ 39+ , srcInfoPoints = []+ }+ "bottom"))))))))))+ ]))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 34 8 34 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 34 1 34 7+ , srcInfoPoints = []+ }+ "bottom"+ ]+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 34 11 34 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 34 11 34 12+ , srcInfoPoints = []+ }+ "a"))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 1 35 7+ , srcInfoPoints = []+ }+ "bottom"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 35 8 35 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 35 8 35 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 35 10 35 15+ , srcInfoPoints = []+ }+ "error")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 35 16 35 21+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 35 16 35 21+ , srcInfoPoints = []+ }+ "_|_"+ "_|_"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 37 1 37 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 37 10 37 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 37 1 37 9+ , srcInfoPoints = []+ }+ "isBottom"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 37 13 37 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 37 15 37 17 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 37 13 37 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 37 13 37 14+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 37 18 37 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 37 18 37 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 37 18 37 22+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 1 48 6+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 1 48 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 1 38 9+ , srcInfoPoints = []+ }+ "isBottom")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 10 38 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 10 38 11+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 12 48 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 38 12 38 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 38 14 48 6+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 14 38 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 14 38 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 14 38 29+ , srcInfoPoints = []+ }+ "unsafePerformIO")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 30 38 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 30 38 31+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 38 30 38 31+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 39 3 48 6+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 39 3 39 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 39 3 39 4+ , SrcSpan "tests/examples/DsStrictData.hs" 39 32 39 33+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 4 39 14+ , srcInfoPoints = []+ }+ "evaluate")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 15 39 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 15 39 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 15 39 16+ , srcInfoPoints = []+ }+ "f"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 17 39 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 17 39 19+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 17 39 19+ , srcInfoPoints = []+ }+ ">>")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 20 39 26+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 27 39 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 27 39 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 27 39 32+ , srcInfoPoints = []+ }+ "False"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 35+ , SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+ , SrcSpan "tests/examples/DsStrictData.hs" 39 44 39 45+ ]+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 39 34 39 35+ , SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+ , SrcSpan "tests/examples/DsStrictData.hs" 39 44 39 45+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 39 35 39 44+ , srcInfoPoints = []+ }+ "catches")))+ (List+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 40 5 48 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 40 5 40 6+ , SrcSpan "tests/examples/DsStrictData.hs" 41 5 41 6+ , SrcSpan "tests/examples/DsStrictData.hs" 42 5 42 6+ , SrcSpan "tests/examples/DsStrictData.hs" 43 5 43 6+ , SrcSpan "tests/examples/DsStrictData.hs" 44 5 44 6+ , SrcSpan "tests/examples/DsStrictData.hs" 45 5 45 6+ , SrcSpan "tests/examples/DsStrictData.hs" 46 5 46 6+ , SrcSpan "tests/examples/DsStrictData.hs" 47 5 47 6+ , SrcSpan "tests/examples/DsStrictData.hs" 48 5 48 6+ ]+ }+ [ App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 7 40 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 17 40 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 40 17 40 18+ , SrcSpan "tests/examples/DsStrictData.hs" 40 59 40 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 18 40 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 40 18 40 19+ , SrcSpan "tests/examples/DsStrictData.hs" 40 45 40 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 19 40 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 40 19 40 20+ , SrcSpan "tests/examples/DsStrictData.hs" 40 41 40 42+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 40 20 40 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 40 22 40 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 40 20 40 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 40 25 40 41+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 40+ 25+ 40+ 41+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 40+ 25+ 40+ 41+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 40+ 25+ 40+ 41+ , srcInfoPoints = []+ }+ "ArrayException"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 48 40 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 48 40 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 40 48 40 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 40 48 40 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 40 55 40 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 40 55 40 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 40 55 40 59+ , srcInfoPoints = []+ }+ "True"))))))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 7 41 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 17 41 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 41 17 41 18+ , SrcSpan "tests/examples/DsStrictData.hs" 41 59 41 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 18 41 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 41 18 41 19+ , SrcSpan "tests/examples/DsStrictData.hs" 41 45 41 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 19 41 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 41 19 41 20+ , SrcSpan "tests/examples/DsStrictData.hs" 41 36 41 37+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 41 20 41 36+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 41 22 41 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 41 20 41 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 41 25 41 36+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 41+ 25+ 41+ 36+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 41+ 25+ 41+ 36+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 41+ 25+ 41+ 36+ , srcInfoPoints = []+ }+ "ErrorCall"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 48 41 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 48 41 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 41 48 41 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 41 48 41 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 41 55 41 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 41 55 41 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 41 55 41 59+ , srcInfoPoints = []+ }+ "True"))))))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 7 42 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 17 42 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 42 17 42 18+ , SrcSpan "tests/examples/DsStrictData.hs" 42 59 42 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 18 42 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 42 18 42 19+ , SrcSpan "tests/examples/DsStrictData.hs" 42 45 42 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 19 42 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 42 19 42 20+ , SrcSpan "tests/examples/DsStrictData.hs" 42 40 42 41+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 42 20 42 40+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 42 22 42 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 42 20 42 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 42 25 42 40+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 42+ 25+ 42+ 40+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 42+ 25+ 42+ 40+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 42+ 25+ 42+ 40+ , srcInfoPoints = []+ }+ "NoMethodError"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 48 42 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 48 42 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 42 48 42 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 42 48 42 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 42 55 42 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 42 55 42 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 42 55 42 59+ , srcInfoPoints = []+ }+ "True"))))))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 7 43 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 17 43 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 43 17 43 18+ , SrcSpan "tests/examples/DsStrictData.hs" 43 59 43 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 18 43 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 43 18 43 19+ , SrcSpan "tests/examples/DsStrictData.hs" 43 45 43 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 19 43 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 43 19 43 20+ , SrcSpan "tests/examples/DsStrictData.hs" 43 41 43 42+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 43 20 43 41+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 43 22 43 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 43 20 43 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 43 25 43 41+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 43+ 25+ 43+ 41+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 43+ 25+ 43+ 41+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 43+ 25+ 43+ 41+ , srcInfoPoints = []+ }+ "NonTermination"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 48 43 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 48 43 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 43 48 43 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 43 48 43 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 43 55 43 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 43 55 43 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 43 55 43 59+ , srcInfoPoints = []+ }+ "True"))))))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 7 44 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 17 44 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 44 17 44 18+ , SrcSpan "tests/examples/DsStrictData.hs" 44 59 44 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 18 44 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 44 18 44 19+ , SrcSpan "tests/examples/DsStrictData.hs" 44 45 44 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 19 44 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 44 19 44 20+ , SrcSpan "tests/examples/DsStrictData.hs" 44 43 44 44+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 44 20 44 43+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 44 22 44 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 44 20 44 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 44 25 44 43+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 44+ 25+ 44+ 43+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 44+ 25+ 44+ 43+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 44+ 25+ 44+ 43+ , srcInfoPoints = []+ }+ "PatternMatchFail"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 48 44 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 48 44 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 44 48 44 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 44 48 44 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 44 55 44 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 44 55 44 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 44 55 44 59+ , srcInfoPoints = []+ }+ "True"))))))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 7 45 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 17 45 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 45 17 45 18+ , SrcSpan "tests/examples/DsStrictData.hs" 45 59 45 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 18 45 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 45 18 45 19+ , SrcSpan "tests/examples/DsStrictData.hs" 45 45 45 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 19 45 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 45 19 45 20+ , SrcSpan "tests/examples/DsStrictData.hs" 45 38 45 39+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 45 20 45 38+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 45 22 45 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 45 20 45 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 45 25 45 38+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 45+ 25+ 45+ 38+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 45+ 25+ 45+ 38+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 45+ 25+ 45+ 38+ , srcInfoPoints = []+ }+ "RecConError"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 48 45 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 48 45 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 45 48 45 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 45 48 45 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 45 55 45 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 45 55 45 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 45 55 45 59+ , srcInfoPoints = []+ }+ "True"))))))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 7 46 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 17 46 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 46 17 46 18+ , SrcSpan "tests/examples/DsStrictData.hs" 46 59 46 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 18 46 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 46 18 46 19+ , SrcSpan "tests/examples/DsStrictData.hs" 46 45 46 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 19 46 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 46 19 46 20+ , SrcSpan "tests/examples/DsStrictData.hs" 46 38 46 39+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 46 20 46 38+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 46 22 46 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 46 20 46 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 46 25 46 38+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 46+ 25+ 46+ 38+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 46+ 25+ 46+ 38+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 46+ 25+ 46+ 38+ , srcInfoPoints = []+ }+ "RecSelError"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 48 46 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 48 46 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 46 48 46 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 46 48 46 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 46 55 46 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 46 55 46 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 46 55 46 59+ , srcInfoPoints = []+ }+ "True"))))))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 60+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 7 47 16+ , srcInfoPoints = []+ }+ "Handler")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 17 47 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 47 17 47 18+ , SrcSpan "tests/examples/DsStrictData.hs" 47 59 47 60+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 18 47 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 47 18 47 19+ , SrcSpan "tests/examples/DsStrictData.hs" 47 45 47 47+ ]+ }+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 19 47 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/DsStrictData.hs" 47 19 47 20+ , SrcSpan "tests/examples/DsStrictData.hs" 47 38 47 39+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 47 20 47 38+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/DsStrictData.hs" 47 22 47 24+ ]+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 47 20 47 21+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 47 25 47 38+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 47+ 25+ 47+ 38+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 47+ 25+ 47+ 38+ , srcInfoPoints = []+ }+ "E")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs"+ 47+ 25+ 47+ 38+ , srcInfoPoints = []+ }+ "RecUpdError"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 48 47 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 48 47 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 47 48 47 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 47 48 47 54+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/DsStrictData.hs" 47 55 47 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 47 55 47 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/DsStrictData.hs" 47 55 47 59+ , srcInfoPoints = []+ }+ "True"))))))+ ]))))+ Nothing+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/DsStrictData.hs" 3 1 3 43)+ " | Tests the StrictData LANGUAGE pragma."+ , Comment+ False+ (SrcSpan "tests/examples/DsStrictData.hs" 29 43 29 58)+ " sanity check"+ , Comment+ False+ (SrcSpan "tests/examples/DsStrictData.hs" 31 1 31 73)+ "----------------------------------------------------------------------"+ , Comment+ False+ (SrcSpan "tests/examples/DsStrictData.hs" 32 1 32 34)+ " Support for testing for bottom"+ ]+ )
+ tests/examples/DsStrictData.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/DsStrictData.hs.prettyprinter.golden view
@@ -0,0 +1,45 @@+{-# LANGUAGE ScopedTypeVariables, StrictData, GADTs #-}+module Main where+import qualified Control.Exception as E+import System.IO.Unsafe (unsafePerformIO)++data Strict a = S a++data Strict2 b = S2 !b++data Strict3 c where+ S3 :: c -> Strict3 c++data UStrict = US {-# UNPACK #-} Int++data Lazy d = L ~d++data Lazy2 e where+ L2 :: ~e -> Lazy2 e++main :: IO ()+main+ = do print (isBottom (S bottom))+ print (isBottom (S2 bottom))+ print (isBottom (US bottom))+ print (isBottom (S3 bottom))+ putStrLn ""+ print (not (isBottom (L bottom)))+ print (not (isBottom (L2 bottom)))+ print (not (isBottom (Just bottom)))++bottom :: a+bottom = error "_|_"++isBottom :: a -> Bool+isBottom f+ = unsafePerformIO $+ (E.evaluate f >> return False) `E.catches`+ [E.Handler (\ (_ :: E.ArrayException) -> return True),+ E.Handler (\ (_ :: E.ErrorCall) -> return True),+ E.Handler (\ (_ :: E.NoMethodError) -> return True),+ E.Handler (\ (_ :: E.NonTermination) -> return True),+ E.Handler (\ (_ :: E.PatternMatchFail) -> return True),+ E.Handler (\ (_ :: E.RecConError) -> return True),+ E.Handler (\ (_ :: E.RecSelError) -> return True),+ E.Handler (\ (_ :: E.RecUpdError) -> return True)]
+ tests/examples/EmptyAnn.hs view
@@ -0,0 +1,1 @@+{-# ANN foo "Hlint: ignore Test4" #-}
+ tests/examples/EmptyAnn.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyAnn.hs.parser.golden view
@@ -0,0 +1,49 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyAnn.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyAnn.hs" 2 1 2 1+ ]+ }+ Nothing+ [ AnnModulePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 1 1 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyAnn.hs" 1 1 1 8+ , SrcSpan "tests/examples/EmptyAnn.hs" 1 35 1 38+ ]+ }+ (Ann+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 9 1 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 9 1 12+ , srcInfoPoints = []+ }+ "foo")+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 13 1 34+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyAnn.hs" 1 13 1 34+ , srcInfoPoints = []+ }+ "Hlint: ignore Test4"+ "Hlint: ignore Test4")))+ ]+ []+ []+ , []+ )
+ tests/examples/EmptyAnn.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyAnn.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+{-# ANN foo "Hlint: ignore Test4" #-}
+ tests/examples/EmptyCase.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE EmptyCase #-}+{-# LANGUAGE LambdaCase #-}++f x = case x of {}++g x = \case {}
+ tests/examples/EmptyCase.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyCase.hs.parser.golden view
@@ -0,0 +1,159 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyCase.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyCase.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 1+ , SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 1+ , SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 1+ , SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 1+ , SrcSpan "tests/examples/EmptyCase.hs" 7 1 7 1+ , SrcSpan "tests/examples/EmptyCase.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyCase.hs" 1 1 1 13+ , SrcSpan "tests/examples/EmptyCase.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "EmptyCase"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 2 1 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyCase.hs" 2 1 2 13+ , SrcSpan "tests/examples/EmptyCase.hs" 2 25 2 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 2 14 2 24+ , srcInfoPoints = []+ }+ "LambdaCase"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 3 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 3 4 4+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 5 4 19+ , srcInfoPoints = [ SrcSpan "tests/examples/EmptyCase.hs" 4 5 4 6 ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 7 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyCase.hs" 4 7 4 11+ , SrcSpan "tests/examples/EmptyCase.hs" 4 14 4 16+ , SrcSpan "tests/examples/EmptyCase.hs" 4 17 4 18+ , SrcSpan "tests/examples/EmptyCase.hs" 4 18 4 19+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ "x")))+ []))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 1 6 2+ , srcInfoPoints = []+ }+ "g")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 3 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 3 6 4+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 5 6 15+ , srcInfoPoints = [ SrcSpan "tests/examples/EmptyCase.hs" 6 5 6 6 ]+ }+ (LCase+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyCase.hs" 6 7 6 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyCase.hs" 6 7 6 8+ , SrcSpan "tests/examples/EmptyCase.hs" 6 8 6 12+ , SrcSpan "tests/examples/EmptyCase.hs" 6 13 6 14+ , SrcSpan "tests/examples/EmptyCase.hs" 6 14 6 15+ ]+ }+ []))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/EmptyCase.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyCase.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE EmptyCase #-}+{-# LANGUAGE LambdaCase #-}+f x = case x of { }+g x = \case { }
+ tests/examples/EmptyContext.hs view
@@ -0,0 +1,1 @@+happyThen :: () => P a
+ tests/examples/EmptyContext.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyContext.hs.parser.golden view
@@ -0,0 +1,79 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyContext.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyContext.hs" 2 1 2 1+ ]+ }+ Nothing+ []+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyContext.hs" 1 11 1 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 1 1 10+ , srcInfoPoints = []+ }+ "happyThen"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 14 1 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyContext.hs" 1 14 1 15+ , SrcSpan "tests/examples/EmptyContext.hs" 1 15 1 16+ , SrcSpan "tests/examples/EmptyContext.hs" 1 17 1 19+ ]+ }))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 20 1 21+ , srcInfoPoints = []+ }+ "P")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 22 1 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyContext.hs" 1 22 1 23+ , srcInfoPoints = []+ }+ "a"))))+ ]+ , []+ )
+ tests/examples/EmptyContext.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyContext.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+happyThen :: () => P a
+ tests/examples/EmptyFunDepPremise.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE FunctionalDependencies #-}+module EmptyFunDepPremise where++class C a | -> a
+ tests/examples/EmptyFunDepPremise.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyFunDepPremise.hs.parser.golden view
@@ -0,0 +1,115 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 1 4 1+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 5 1 5 1+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 1 2 7+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 27 2 32+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 2 8 2 26+ , srcInfoPoints = []+ }+ "EmptyFunDepPremise")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 1 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 1 1 13+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 37 1 40+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 1 14 1 36+ , srcInfoPoints = []+ }+ "FunctionalDependencies"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 1 4 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 1 4 6+ , SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 11 4 12+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 7 4 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 7 4 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 7 4 8+ , srcInfoPoints = []+ }+ "C"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ "a")))+ [ FunDep+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 13 4 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 13 4 15 ]+ }+ []+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EmptyFunDepPremise.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ "a"+ ]+ ]+ Nothing+ ]+ , []+ )
+ tests/examples/EmptyFunDepPremise.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyFunDepPremise.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE FunctionalDependencies #-}+module EmptyFunDepPremise where++class C a | -> a
+ tests/examples/EmptyInstance.hs view
@@ -0,0 +1,4 @@+instance Traversable Tree where++x :: Int+x = 1
+ tests/examples/EmptyInstance.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyInstance.hs.parser.golden view
@@ -0,0 +1,141 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 5 1 5 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 5 1 5 1+ ]+ }+ Nothing+ []+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 1 3 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyInstance.hs" 1 1 1 9+ , SrcSpan "tests/examples/EmptyInstance.hs" 1 27 1 32+ , SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 1+ , SrcSpan "tests/examples/EmptyInstance.hs" 3 0 3 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 26+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 26+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 10 1 21+ , srcInfoPoints = []+ }+ "Traversable")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 22 1 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 22 1 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 1 22 1 26+ , srcInfoPoints = []+ }+ "Tree")))))+ (Just [])+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyInstance.hs" 3 3 3 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ "Int")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 6+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 3 4 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyInstance.hs" 4 3 4 4 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyInstance.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ ]+ , []+ )
+ tests/examples/EmptyInstance.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyInstance.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+instance Traversable Tree where++x :: Int+x = 1
+ tests/examples/EmptyList.hs view
@@ -0,0 +1,3 @@+module EmptyList where++eAttrs = []
+ tests/examples/EmptyList.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyList.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyList.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyList.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyList.hs" 3 1 3 1+ , SrcSpan "tests/examples/EmptyList.hs" 4 1 4 1+ , SrcSpan "tests/examples/EmptyList.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyList.hs" 1 1 1 7+ , SrcSpan "tests/examples/EmptyList.hs" 1 18 1 23+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 1 8 1 17+ , srcInfoPoints = []+ }+ "EmptyList")+ Nothing+ Nothing))+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 1 3 12+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 1 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 1 3 7+ , srcInfoPoints = []+ }+ "eAttrs"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 8 3 12+ , srcInfoPoints = [ SrcSpan "tests/examples/EmptyList.hs" 3 8 3 9 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyList.hs" 3 10 3 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyList.hs" 3 10 3 11+ , SrcSpan "tests/examples/EmptyList.hs" 3 11 3 12+ ]+ }+ []))+ Nothing+ ]+ , []+ )
+ tests/examples/EmptyList.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyList.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module EmptyList where+eAttrs = []
+ tests/examples/EmptyWhere.hs view
@@ -0,0 +1,1 @@+foo = 5 where
+ tests/examples/EmptyWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyWhere.hs.parser.golden view
@@ -0,0 +1,64 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 1+ , SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyWhere.hs" 1 9 1 14 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 1 1 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 5 1 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyWhere.hs" 1 5 1 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ 5+ "5")))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/EmptyWhere.hs" 2 0 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyWhere.hs" 2 1 2 1+ , SrcSpan "tests/examples/EmptyWhere.hs" 2 0 2 0+ ]+ }+ []))+ ]+ , []+ )
+ tests/examples/EmptyWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EmptyWhere.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+foo = 5+ where
+ tests/examples/EqualityConstraints1.hs view
@@ -0,0 +1,5 @@+-- https://github.com/haskell-suite/haskell-src-exts/issues/91+{-# LANGUAGE GADTs #-}++one :: a ~ Int => a+one = 1
+ tests/examples/EqualityConstraints1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EqualityConstraints1.hs.parser.golden view
@@ -0,0 +1,178 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 2 1+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 1+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 1+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 1+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 1+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 6 1 6 1+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 2 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EqualityConstraints1.hs" 2 1 2 13+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 2 20 2 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 2 14 2 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 5 4 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "one"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 20+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18+ ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11+ , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15+ , srcInfoPoints = []+ }+ "Int")))))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 19 4 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 19 4 20+ , srcInfoPoints = []+ }+ "a")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ "one"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 5 5 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 5 5 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/EqualityConstraints1.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/EqualityConstraints1.hs" 1 1 1 63)+ " https://github.com/haskell-suite/haskell-src-exts/issues/91"+ ]+ )
+ tests/examples/EqualityConstraints1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/EqualityConstraints1.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++one :: a ~ Int => a+one = 1
+ tests/examples/EqualityConstraints2.hs view
@@ -0,0 +1,2 @@+one :: a ~ Int => a+one = 1
+ tests/examples/EqualityConstraints2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19) "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/EqualityConstraints2.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19)+ "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/EqualityConstraints2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19) "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/EqualityConstraints2.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/EqualityConstraints2.hs" 1 19) "At least one of TypeFamilies or GADTs language extensions needs to be enabled. Please add: {-# LANGUAGE TypeFamilies #-} or {-# LANGUAGE GADTs #-} language pragma at the top of your module."
+ tests/examples/ExplicitNamespaces1.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+import Data.Array.Repa ( type (++) )+import Data.Array.Repa ( type {- comment here -} (++) )+import Data.Array.Repa ( type {- comment2 here -} (++) {- and here -} )
+ tests/examples/ExplicitNamespaces1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces1.hs.parser.golden view
@@ -0,0 +1,237 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 1 1+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 1 3 1+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 1 4 1+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 5 1 5 1+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 1 1 13+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 33 1 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 1 14 1 32+ , srcInfoPoints = []+ }+ "ExplicitNamespaces"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 1 2 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 8 2 23+ , srcInfoPoints = []+ }+ "Data.Array.Repa"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 24 2 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 24 2 25+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 36 2 37+ ]+ }+ False+ [ IAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 30+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 31 2 35+ ]+ }+ (TypeNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 26 2 30 ]+ })+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 31 2 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 31 2 32+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 32 2 34+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 2 34 2 35+ ]+ }+ "++")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 1 3 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 1 3 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 8 3 23+ , srcInfoPoints = []+ }+ "Data.Array.Repa"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 24 3 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 24 3 25+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 55 3 56+ ]+ }+ False+ [ IAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 30+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 50 3 54+ ]+ }+ (TypeNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 26 3 30 ]+ })+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 50 3 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 50 3 51+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 51 3 53+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 53 3 54+ ]+ }+ "++")+ ])+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 1 4 76+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 8 4 23+ , srcInfoPoints = []+ }+ "Data.Array.Repa"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 24 4 76+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 24 4 25+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 75 4 76+ ]+ }+ False+ [ IAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 33+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 54 4 58+ ]+ }+ (TypeNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 29 4 33 ]+ })+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 54 4 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 54 4 55+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 55 4 57+ , SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 57 4 58+ ]+ }+ "++")+ ])+ }+ ]+ []+ , [ Comment+ True+ (SrcSpan "tests/examples/ExplicitNamespaces1.hs" 3 31 3 49)+ " comment here "+ , Comment+ True+ (SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 34 4 53)+ " comment2 here "+ , Comment+ True+ (SrcSpan "tests/examples/ExplicitNamespaces1.hs" 4 60 4 74)+ " and here "+ ]+ )
+ tests/examples/ExplicitNamespaces1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces1.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+import Data.Array.Repa (type (++))+import Data.Array.Repa (type (++))+import Data.Array.Repa (type (++))
+ tests/examples/ExplicitNamespaces2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+module ExplicitNamespaces2 ( f, type (++) ) where++f = undefined
+ tests/examples/ExplicitNamespaces2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces2.hs.parser.golden view
@@ -0,0 +1,164 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 1 1+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 1+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 5 1 5 1+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 1 2 7+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 45 2 50+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 8 2 27+ , srcInfoPoints = []+ }+ "ExplicitNamespaces2")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 28 2 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 28 2 29+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 31 2 32+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 43 2 44+ ]+ }+ [ EVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 30 2 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 30 2 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 30 2 31+ , srcInfoPoints = []+ }+ "f"))+ , EAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 37+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 38 2 42+ ]+ }+ (TypeNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 33 2 37 ]+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 38 2 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 38 2 39+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 39 2 41+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 41 2 42+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 2 39 2 41+ , srcInfoPoints = []+ }+ "++"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 1 1 13+ , SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 33 1 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 1 14 1 32+ , srcInfoPoints = []+ }+ "ExplicitNamespaces"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 3 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 3 4 4 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 5 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 5 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces2.hs" 4 5 4 14+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ , []+ )
+ tests/examples/ExplicitNamespaces2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces2.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE ExplicitNamespaces #-}+module ExplicitNamespaces2 (f, type (++)) where+f = undefined
+ tests/examples/ExplicitNamespaces3.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}++module Foo(type Str) where++data Str = Str
+ tests/examples/ExplicitNamespaces3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces3.hs.parser.golden view
@@ -0,0 +1,145 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 1 1+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 1+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 1+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 1 5 1+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 6 1 6 1+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 6 1 6 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 1 3 7+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 22 3 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 8 3 11+ , srcInfoPoints = []+ }+ "Foo")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 11 3 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 11 3 12+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 20 3 21+ ]+ }+ [ EAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 16+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 17 3 20+ ]+ }+ (TypeNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 12 3 16 ]+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 17 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 3 17 3 20+ , srcInfoPoints = []+ }+ "Str"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 1 1 13+ , SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 33 1 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 1 14 1 32+ , srcInfoPoints = []+ }+ "ExplicitNamespaces"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 1 5 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 10 5 11 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 1 5 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ "Str"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 12 5 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 12 5 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces3.hs" 5 12 5 15+ , srcInfoPoints = []+ }+ "Str")+ [])+ ]+ []+ ]+ , []+ )
+ tests/examples/ExplicitNamespaces3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces3.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitNamespaces #-}+module Foo (type Str) where++data Str = Str
+ tests/examples/ExplicitNamespaces4.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE TypeOperators #-}+module Foo (type (:-)) where++data (:-) = Foo
+ tests/examples/ExplicitNamespaces4.hs.exactprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE TypeOperators #-}+module Foo (type (:-)) where++data :- = Foo+
+ tests/examples/ExplicitNamespaces4.hs.parser.golden view
@@ -0,0 +1,171 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 1 1+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 1+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 1+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 1 5 1+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 6 1 6 1+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 6 1 6 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 1 3 7+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 24 3 29+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 8 3 11+ , srcInfoPoints = []+ }+ "Foo")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 12 3 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 12 3 13+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 22 3 23+ ]+ }+ [ EAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 17+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 18 3 22+ ]+ }+ (TypeNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 13 3 17 ]+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 18 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 18 3 19+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 19 3 21+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 21 3 22+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 3 19 3 21+ , srcInfoPoints = []+ }+ ":-"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 1 1 13+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 33 1 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 1 14 1 32+ , srcInfoPoints = []+ }+ "ExplicitNamespaces"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 1 2 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 1 2 13+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 28 2 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 2 14 2 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 1 5 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 11 5 12 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 1 5 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 6 5 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 6 5 7+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 7 5 9+ , SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 9 5 10+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 7 5 9+ , srcInfoPoints = []+ }+ ":-"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExplicitNamespaces4.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ "Foo")+ [])+ ]+ []+ ]+ , []+ )
+ tests/examples/ExplicitNamespaces4.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExplicitNamespaces4.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE TypeOperators #-}+module Foo (type (:-)) where++data (:-) = Foo
+ tests/examples/ExprHole.hs view
@@ -0,0 +1,10 @@++foo = _++foo = _ x++foo = _++foo x = baz+ where+ foo _ = _
+ tests/examples/ExprHole.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExprHole.hs.parser.golden view
@@ -0,0 +1,260 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 11 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExprHole.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExprHole.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExprHole.hs" 2 1 2 1+ , SrcSpan "tests/examples/ExprHole.hs" 4 1 4 1+ , SrcSpan "tests/examples/ExprHole.hs" 6 1 6 1+ , SrcSpan "tests/examples/ExprHole.hs" 8 1 8 1+ , SrcSpan "tests/examples/ExprHole.hs" 11 1 11 1+ , SrcSpan "tests/examples/ExprHole.hs" 11 1 11 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 2 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 2 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 1 2 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 5 2 8+ , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 2 5 2 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 7 2 8+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 7 2 8+ , srcInfoPoints = []+ }+ (ExprHole+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 2 7 2 8+ , srcInfoPoints = []+ }))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 1 4 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 5 4 10+ , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 4 5 4 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 10+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 8+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 8+ , srcInfoPoints = []+ }+ (ExprHole+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 7 4 8+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 1 6 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 5 6 11+ , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 6 5 6 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 10 6 11+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 10 6 11+ , srcInfoPoints = []+ }+ (ExprHole+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 6 10 6 11+ , srcInfoPoints = []+ }))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 1 10 14+ , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 9 3 9 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 1 10 14+ , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 9 3 9 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 5 8 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 5 8 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 7 8 12+ , srcInfoPoints = [ SrcSpan "tests/examples/ExprHole.hs" 8 7 8 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 9 8 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 9 8 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 8 9 8 12+ , srcInfoPoints = []+ }+ "baz"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExprHole.hs" 10 5 10 5+ , SrcSpan "tests/examples/ExprHole.hs" 11 1 11 0+ ]+ }+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 14+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 5 10 8+ , srcInfoPoints = []+ }+ "foo")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 11 10 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExprHole.hs" 10 11 10 12 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ExprHole.hs" 10 13 10 14+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExprHole.hs" 10 13 10 14+ , srcInfoPoints = []+ }+ (ExprHole+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExprHole.hs" 10 13 10 14+ , srcInfoPoints = []+ }))))+ Nothing+ ]+ ]))+ ]+ ]+ , []+ )
+ tests/examples/ExprHole.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExprHole.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+foo = _+foo = _ x+foo = _+foo x = baz+ where foo _ = _
+ tests/examples/ExtraEndBrace.hs view
@@ -0,0 +1,3 @@+module ExtraEndBrace where++data A = B {c :: D}}
+ tests/examples/ExtraEndBrace.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraEndBrace.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+ (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraEndBrace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraEndBrace.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ExtraEndBrace.hs" 3 20) "Unexpected }"
+ tests/examples/ExtraPrettyParentheses.hs view
@@ -0,0 +1,9 @@+data Q a = Q a a++-- In this example, the pretty-printer should insert extra parentheses around+-- the negative literal pattern.+x * - 1 = negate x++-- In these examples, the pretty-printer should not insert extra parentheses.+Just x <> Nothing = Just x+f (- 1 `Q` _) = ()
+ tests/examples/ExtraPrettyParentheses.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ExtraPrettyParentheses.hs.parser.golden view
@@ -0,0 +1,480 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 10 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 1+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 1+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 1+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 1+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 1+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 1+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 10 1 10 1+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 10 1 10 1+ ]+ }+ Nothing+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 10 1 11 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 1 1 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ "Q"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 12 1 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 12 1 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 12 1 13+ , srcInfoPoints = []+ }+ "Q")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 14 1 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 14 1 15+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 16 1 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 1 16 1 17+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 19+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ "x"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 3 5 4+ , srcInfoPoints = []+ }+ "*")+ [ PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 6 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 5 5 6 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ 1+ "1")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 9 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 9 5 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 11 5 17+ , srcInfoPoints = []+ }+ "negate")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 27+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 1 8 5+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ "x")+ ])+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 8 8 10+ , srcInfoPoints = []+ }+ "<>")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 11 8 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 11 8 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 11 8 18+ , srcInfoPoints = []+ }+ "Nothing"))+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 19 8 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 19 8 20 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 27+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 21 8 25+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 26 8 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 26 8 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 8 26 8 27+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 1 9 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 3 9 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 3 9 4+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 13 9 14+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 13+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 5 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 4 9 5 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 6 9 7+ , srcInfoPoints = []+ }+ 1+ "1"))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 8 9 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 8 9 9+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 9 9 10+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 10 9 11+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ "Q"))+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 12 9 13+ , srcInfoPoints = []+ }))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 15 9 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 15 9 16 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 18+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 18 9 19+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 18+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 18 9 19+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 17 9 18+ , SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 9 18 9 19+ ]+ }))))+ Nothing+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 3 1 3 78)+ " In this example, the pretty-printer should insert extra parentheses around"+ , Comment+ False+ (SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 4 1 4 33)+ " the negative literal pattern."+ , Comment+ False+ (SrcSpan "tests/examples/ExtraPrettyParentheses.hs" 7 1 7 78)+ " In these examples, the pretty-printer should not insert extra parentheses."+ ]+ )
+ tests/examples/ExtraPrettyParentheses.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () Nothing [] [] [DataDecl () (DataType ()) Nothing (DHApp () (DHead () (Ident () "Q")) (UnkindedVar () (Ident () "a"))) [QualConDecl () Nothing Nothing (ConDecl () (Ident () "Q") [TyVar () (Ident () "a"),TyVar () (Ident () "a")])] [],FunBind () [InfixMatch () (PVar () (Ident () "x")) (Symbol () "*") [PLit () (Negative ()) (Int () 1 "1")] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "negate"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [InfixMatch () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "x")]) (Symbol () "<>") [PApp () (UnQual () (Ident () "Nothing")) []] (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [Match () (Ident () "f") [PParen () (PInfixApp () (PLit () (Negative ()) (Int () 1 "1")) (UnQual () (Ident () "Q")) (PWildCard ()))] (UnGuardedRhs () (Con () (Special () (UnitCon ())))) Nothing]]++AST 2:++Module () Nothing [] [] [DataDecl () (DataType ()) Nothing (DHApp () (DHead () (Ident () "Q")) (UnkindedVar () (Ident () "a"))) [QualConDecl () Nothing Nothing (ConDecl () (Ident () "Q") [TyVar () (Ident () "a"),TyVar () (Ident () "a")])] [],FunBind () [InfixMatch () (PVar () (Ident () "x")) (Symbol () "*") [PParen () (PLit () (Negative ()) (Int () 1 "1"))] (UnGuardedRhs () (App () (Var () (UnQual () (Ident () "negate"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [InfixMatch () (PApp () (UnQual () (Ident () "Just")) [PVar () (Ident () "x")]) (Symbol () "<>") [PApp () (UnQual () (Ident () "Nothing")) []] (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "Just"))) (Var () (UnQual () (Ident () "x"))))) Nothing],FunBind () [Match () (Ident () "f") [PParen () (PInfixApp () (PLit () (Negative ()) (Int () 1 "1")) (UnQual () (Ident () "Q")) (PWildCard ()))] (UnGuardedRhs () (Con () (Special () (UnitCon ())))) Nothing]]+
+ tests/examples/ExtraPrettyParentheses.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+data Q a = Q a a+x * (-1) = negate x+Just x <> Nothing = Just x+f (-1 `Q` _) = ()
+ tests/examples/FFIExtensions.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI, CApiFFI #-}+module FFIExtensions where++foreign import ccall interruptible+ "sleep" sleep :: CUint -> IO CUint++foreign import capi "header.h f" f :: CInt -> IO CInt
+ tests/examples/FFIExtensions.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIExtensions.hs.parser.golden view
@@ -0,0 +1,234 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIExtensions.hs" 1 1 1 1+ , SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 1+ , SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 1+ , SrcSpan "tests/examples/FFIExtensions.hs" 4 1 4 1+ , SrcSpan "tests/examples/FFIExtensions.hs" 7 1 7 1+ , SrcSpan "tests/examples/FFIExtensions.hs" 8 1 8 1+ , SrcSpan "tests/examples/FFIExtensions.hs" 8 1 8 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIExtensions.hs" 2 1 2 7+ , SrcSpan "tests/examples/FFIExtensions.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "FFIExtensions")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 1 1 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIExtensions.hs" 1 1 1 13+ , SrcSpan "tests/examples/FFIExtensions.hs" 1 38 1 39+ , SrcSpan "tests/examples/FFIExtensions.hs" 1 56 1 57+ , SrcSpan "tests/examples/FFIExtensions.hs" 1 66 1 69+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 14 1 38+ , srcInfoPoints = []+ }+ "ForeignFunctionInterface"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 40 1 56+ , srcInfoPoints = []+ }+ "InterruptibleFFI"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 1 58 1 65+ , srcInfoPoints = []+ }+ "CApiFFI"+ ]+ ]+ []+ [ ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 4 1 5 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIExtensions.hs" 4 1 4 8+ , SrcSpan "tests/examples/FFIExtensions.hs" 4 9 4 15+ , SrcSpan "tests/examples/FFIExtensions.hs" 5 4 5 11+ , SrcSpan "tests/examples/FFIExtensions.hs" 5 18 5 20+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 4 16 4 21+ , srcInfoPoints = []+ })+ (Just+ (PlayInterruptible+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 4 22 4 35+ , srcInfoPoints = []+ }))+ (Just "sleep")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 12 5 17+ , srcInfoPoints = []+ }+ "sleep")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIExtensions.hs" 5 27 5 29 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 21 5 26+ , srcInfoPoints = []+ }+ "CUint")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 30 5 32+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 33 5 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 33 5 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 5 33 5 38+ , srcInfoPoints = []+ }+ "CUint")))))+ , ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 1 7 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIExtensions.hs" 7 1 7 8+ , SrcSpan "tests/examples/FFIExtensions.hs" 7 9 7 15+ , SrcSpan "tests/examples/FFIExtensions.hs" 7 21 7 33+ , SrcSpan "tests/examples/FFIExtensions.hs" 7 36 7 38+ ]+ }+ (CApi+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 16 7 20+ , srcInfoPoints = []+ })+ Nothing+ (Just "header.h f")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 34 7 35+ , srcInfoPoints = []+ }+ "f")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIExtensions.hs" 7 44 7 46 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 39 7 43+ , srcInfoPoints = []+ }+ "CInt")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 54+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 47 7 49+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 50 7 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 50 7 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FFIExtensions.hs" 7 50 7 54+ , srcInfoPoints = []+ }+ "CInt")))))+ ]+ , []+ )
+ tests/examples/FFIExtensions.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIExtensions.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE ForeignFunctionInterface, InterruptibleFFI, CApiFFI+ #-}+module FFIExtensions where++foreign import ccall interruptible "sleep" sleep ::+ CUint -> IO CUint++foreign import capi "header.h f" f :: CInt -> IO CInt
+ tests/examples/FFIInterruptible.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE InterruptibleFFI #-}+foo = interruptible+
+ tests/examples/FFIInterruptible.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIInterruptible.hs.parser.golden view
@@ -0,0 +1,83 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 1 1+ , SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 1+ , SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 1+ , SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 1+ , SrcSpan "tests/examples/FFIInterruptible.hs" 4 1 4 1+ , SrcSpan "tests/examples/FFIInterruptible.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIInterruptible.hs" 1 1 1 13+ , SrcSpan "tests/examples/FFIInterruptible.hs" 1 31 1 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "InterruptibleFFI"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 2 1 2 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 2 5 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FFIInterruptible.hs" 2 5 2 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 2 7 2 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 2 7 2 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FFIInterruptible.hs" 2 7 2 20+ , srcInfoPoints = []+ }+ "interruptible"))))+ Nothing+ ]+ , []+ )
+ tests/examples/FFIInterruptible.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FFIInterruptible.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE InterruptibleFFI #-}+foo = interruptible
+ tests/examples/FamilyKindSig.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyKindSig where++type family WithKindSig (a :: * -> *)
+ tests/examples/FamilyKindSig.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyKindSig.hs.parser.golden view
@@ -0,0 +1,107 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 1 1+ , SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 1+ , SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 1+ , SrcSpan "tests/examples/FamilyKindSig.hs" 4 1 4 1+ , SrcSpan "tests/examples/FamilyKindSig.hs" 5 1 5 1+ , SrcSpan "tests/examples/FamilyKindSig.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyKindSig.hs" 2 1 2 7+ , SrcSpan "tests/examples/FamilyKindSig.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "FamilyKindSig")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyKindSig.hs" 1 1 1 13+ , SrcSpan "tests/examples/FamilyKindSig.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ ]+ []+ [ TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 1 4 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyKindSig.hs" 4 1 4 5+ , SrcSpan "tests/examples/FamilyKindSig.hs" 4 6 4 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 13 4 38+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 13 4 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 13 4 24+ , srcInfoPoints = []+ }+ "WithKindSig"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 25 4 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyKindSig.hs" 4 25 4 26+ , SrcSpan "tests/examples/FamilyKindSig.hs" 4 28 4 30+ , SrcSpan "tests/examples/FamilyKindSig.hs" 4 37 4 38+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 26 4 27+ , srcInfoPoints = []+ }+ "a")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 31 4 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyKindSig.hs" 4 33 4 35 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 31 4 32+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 36 4 37+ , srcInfoPoints = []+ }))))+ Nothing+ Nothing+ ]+ , []+ )
+ tests/examples/FamilyKindSig.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyKindSig.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyKindSig where++type family WithKindSig (a :: * -> *)
+ tests/examples/FamilyVarid.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyVarid where++f family forall = undefined
+ tests/examples/FamilyVarid.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyVarid.hs.parser.golden view
@@ -0,0 +1,113 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyVarid.hs" 1 1 1 1+ , SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 1+ , SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 1+ , SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 1+ , SrcSpan "tests/examples/FamilyVarid.hs" 5 1 5 1+ , SrcSpan "tests/examples/FamilyVarid.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyVarid.hs" 2 1 2 7+ , SrcSpan "tests/examples/FamilyVarid.hs" 2 20 2 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 2 8 2 19+ , srcInfoPoints = []+ }+ "FamilyVarid")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyVarid.hs" 1 1 1 13+ , SrcSpan "tests/examples/FamilyVarid.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 28+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 3 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 3 4 9+ , srcInfoPoints = []+ }+ "family")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 10 4 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 10 4 16+ , srcInfoPoints = []+ }+ "forall")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 17 4 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FamilyVarid.hs" 4 17 4 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 19 4 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 19 4 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FamilyVarid.hs" 4 19 4 28+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/FamilyVarid.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FamilyVarid.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeFamilies #-}+module FamilyVarid where+f family forall = undefined
+ tests/examples/Fixity2.hs view
@@ -0,0 +1,3 @@+foo = pure 1 <^> pure 2 <^> pure (+) where+ (<^>) = flip (<*>)+ infixr 4 <^>
+ tests/examples/Fixity2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity2.hs.parser.golden view
@@ -0,0 +1,297 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity2.hs" 1 1 1 1+ , SrcSpan "tests/examples/Fixity2.hs" 1 1 1 1+ , SrcSpan "tests/examples/Fixity2.hs" 1 1 1 1+ , SrcSpan "tests/examples/Fixity2.hs" 4 1 4 1+ , SrcSpan "tests/examples/Fixity2.hs" 4 1 4 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 3 15+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 1 38 1 43 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 1 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 1 1 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 5 1 37+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 1 5 1 6 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 37+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 7 1 11+ , srcInfoPoints = []+ }+ "pure")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 12 1 13+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 12 1 13+ , srcInfoPoints = []+ }+ 1+ "1")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 14 1 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 14 1 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 14 1 17+ , srcInfoPoints = []+ }+ "<^>")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 37+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 18 1 22+ , srcInfoPoints = []+ }+ "pure")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 23 1 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 23 1 24+ , srcInfoPoints = []+ }+ 2+ "2")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 25 1 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 25 1 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 25 1 28+ , srcInfoPoints = []+ }+ "<^>")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 29 1 33+ , srcInfoPoints = []+ }+ "pure")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 34 1 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity2.hs" 1 34 1 35+ , SrcSpan "tests/examples/Fixity2.hs" 1 35 1 36+ , SrcSpan "tests/examples/Fixity2.hs" 1 36 1 37+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 34 1 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity2.hs" 1 34 1 35+ , SrcSpan "tests/examples/Fixity2.hs" 1 35 1 36+ , SrcSpan "tests/examples/Fixity2.hs" 1 36 1 37+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 1 35 1 36+ , srcInfoPoints = []+ }+ "+")))))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 3 3 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity2.hs" 2 3 2 3+ , SrcSpan "tests/examples/Fixity2.hs" 3 3 3 3+ , SrcSpan "tests/examples/Fixity2.hs" 4 1 4 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 3 2 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 3 2 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity2.hs" 2 3 2 4+ , SrcSpan "tests/examples/Fixity2.hs" 2 4 2 7+ , SrcSpan "tests/examples/Fixity2.hs" 2 7 2 8+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 4 2 7+ , srcInfoPoints = []+ }+ "<^>"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 9 2 21+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 2 9 2 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 11 2 15+ , srcInfoPoints = []+ }+ "flip")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 16 2 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity2.hs" 2 16 2 17+ , SrcSpan "tests/examples/Fixity2.hs" 2 17 2 20+ , SrcSpan "tests/examples/Fixity2.hs" 2 20 2 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 16 2 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity2.hs" 2 16 2 17+ , SrcSpan "tests/examples/Fixity2.hs" 2 17 2 20+ , SrcSpan "tests/examples/Fixity2.hs" 2 20 2 21+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 2 17 2 20+ , srcInfoPoints = []+ }+ "<*>")))))+ Nothing+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 3 3 15+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity2.hs" 3 10 3 11 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 3 3 9+ , srcInfoPoints = []+ })+ (Just 4)+ [ VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity2.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ "<^>")+ ]+ ]))+ ]+ , []+ )
+ tests/examples/Fixity2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity2.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+foo = pure 1 <^> pure 2 <^> pure (+)+ where (<^>) = flip (<*>)+ + infixr 4 <^>
+ tests/examples/Fixity3.hs view
@@ -0,0 +1,5 @@+class Foo f where+ (<^>) :: Applicative f => f a -> f (a -> b) -> f b+ infixr 4 <^>++foo = pure 1 <^> pure 2 <^> pure (+)
+ tests/examples/Fixity3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity3.hs.parser.golden view
@@ -0,0 +1,466 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 1 1 1 1+ , SrcSpan "tests/examples/Fixity3.hs" 1 1 1 1+ , SrcSpan "tests/examples/Fixity3.hs" 1 1 1 1+ , SrcSpan "tests/examples/Fixity3.hs" 5 1 5 1+ , SrcSpan "tests/examples/Fixity3.hs" 6 1 6 1+ , SrcSpan "tests/examples/Fixity3.hs" 6 1 6 1+ ]+ }+ Nothing+ []+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 1 3 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 1 1 1 6+ , SrcSpan "tests/examples/Fixity3.hs" 1 13 1 18+ , SrcSpan "tests/examples/Fixity3.hs" 2 3 2 3+ , SrcSpan "tests/examples/Fixity3.hs" 3 3 3 3+ , SrcSpan "tests/examples/Fixity3.hs" 5 1 5 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 7 1 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 7 1 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 7 1 10+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 11 1 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 1 11 1 12+ , srcInfoPoints = []+ }+ "f")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 3 2 53+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 9 2 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 3 2 53+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 9 2 11 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 3 2 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 2 3 2 4+ , SrcSpan "tests/examples/Fixity3.hs" 2 4 2 7+ , SrcSpan "tests/examples/Fixity3.hs" 2 7 2 8+ ]+ }+ "<^>"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 53+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ "f"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 53+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 33 2 35 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 32+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 30+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 31 2 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 31 2 32+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 36 2 53+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 47 2 49 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 36 2 46+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 36 2 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 36 2 37+ , srcInfoPoints = []+ }+ "f"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 38 2 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 2 38 2 39+ , SrcSpan "tests/examples/Fixity3.hs" 2 45 2 46+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 39 2 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 2 41 2 43 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 39 2 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 39 2 40+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 44 2 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 44 2 45+ , srcInfoPoints = []+ }+ "b")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 50 2 53+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 50 2 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 50 2 51+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 52 2 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Fixity3.hs" 2 52 2 53+ , srcInfoPoints = []+ }+ "b")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 3 3 15+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 3 10 3 11 ]+ }+ (InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 3 3 15+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 3 10 3 11 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 3 3 9+ , srcInfoPoints = []+ })+ (Just 4)+ [ VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ "<^>")+ ])+ ])+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 1 5 37+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 5 5 37+ , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 5 5 5 6 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 37+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 7 5 11+ , srcInfoPoints = []+ }+ "pure")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 12 5 13+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 12 5 13+ , srcInfoPoints = []+ }+ 1+ "1")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 14 5 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 14 5 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 14 5 17+ , srcInfoPoints = []+ }+ "<^>")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 37+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 18 5 22+ , srcInfoPoints = []+ }+ "pure")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 23 5 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 23 5 24+ , srcInfoPoints = []+ }+ 2+ "2")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 25 5 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 25 5 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 25 5 28+ , srcInfoPoints = []+ }+ "<^>")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 29 5 33+ , srcInfoPoints = []+ }+ "pure")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 34 5 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 5 34 5 35+ , SrcSpan "tests/examples/Fixity3.hs" 5 35 5 36+ , SrcSpan "tests/examples/Fixity3.hs" 5 36 5 37+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 34 5 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Fixity3.hs" 5 34 5 35+ , SrcSpan "tests/examples/Fixity3.hs" 5 35 5 36+ , SrcSpan "tests/examples/Fixity3.hs" 5 36 5 37+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 5 35 5 36+ , srcInfoPoints = []+ }+ "+")))))))+ Nothing+ ]+ , []+ )
+ tests/examples/Fixity3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Fixity3.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+class Foo f where+ (<^>) :: Applicative f => f a -> f (a -> b) -> f b+ + infixr 4 <^>+foo = pure 1 <^> pure 2 <^> pure (+)
+ tests/examples/FixityTests.hs view
@@ -0,0 +1,3 @@+main = forM_ cmdReports $ \x -> do+ putStrLn $ "Writing report to " ++ x ++ " ..."+ writeReport x ideas
+ tests/examples/FixityTests.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FixityTests.hs.parser.golden view
@@ -0,0 +1,343 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FixityTests.hs" 1 1 1 1+ , SrcSpan "tests/examples/FixityTests.hs" 1 1 1 1+ , SrcSpan "tests/examples/FixityTests.hs" 1 1 1 1+ , SrcSpan "tests/examples/FixityTests.hs" 4 1 4 1+ , SrcSpan "tests/examples/FixityTests.hs" 4 1 4 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 3 35+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 6 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FixityTests.hs" 1 6 1 7 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 3 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 8 1 13+ , srcInfoPoints = []+ }+ "forM_")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ "cmdReports"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 25 1 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 25 1 26+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 25 1 26+ , srcInfoPoints = []+ }+ "$")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 27 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FixityTests.hs" 1 27 1 28+ , SrcSpan "tests/examples/FixityTests.hs" 1 30 1 32+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 28 1 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 28 1 29+ , srcInfoPoints = []+ }+ "x")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 1 33 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FixityTests.hs" 1 33 1 35+ , SrcSpan "tests/examples/FixityTests.hs" 2 16 2 16+ , SrcSpan "tests/examples/FixityTests.hs" 3 16 3 16+ , SrcSpan "tests/examples/FixityTests.hs" 4 1 4 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 16 2 62+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 16 2 62+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 16 2 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 16 2 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 16 2 24+ , srcInfoPoints = []+ }+ "putStrLn")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 25 2 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 25 2 26+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 25 2 26+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 2 27 2 62+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 27 2 47+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 27 2 47+ , srcInfoPoints = []+ }+ "Writing report to "+ "Writing report to "))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 48 2 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 48 2 50+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 48 2 50+ , srcInfoPoints = []+ }+ "++")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 51 2 62+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 51 2 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 51 2 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 51 2 52+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 53 2 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 53 2 55+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 53 2 55+ , srcInfoPoints = []+ }+ "++")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 56 2 62+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 2 56 2 62+ , srcInfoPoints = []+ }+ " ..."+ " ...")))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 16 3 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 16 3 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 16 3 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 16 3 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 16 3 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 16 3 27+ , srcInfoPoints = []+ }+ "writeReport")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 28 3 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 28 3 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 28 3 29+ , srcInfoPoints = []+ }+ "x"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/FixityTests.hs" 3 30 3 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 30 3 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FixityTests.hs" 3 30 3 35+ , srcInfoPoints = []+ }+ "ideas"))))+ ]))))+ Nothing+ ]+ , []+ )
+ tests/examples/FixityTests.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FixityTests.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+main+ = forM_ cmdReports $+ \ x ->+ do putStrLn $ "Writing report to " ++ x ++ " ..."+ writeReport x ideas
+ tests/examples/FlexibleContextsWithoutVars.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE FlexibleContexts #-}+f :: Log.Stack => a -> a+f = id
+ tests/examples/FlexibleContextsWithoutVars.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FlexibleContextsWithoutVars.hs.parser.golden view
@@ -0,0 +1,187 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 1 1+ , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 1+ , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 1+ , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 1+ , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 1+ , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 4 1 4 1+ , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 1 1 13+ , SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 31 1 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "FlexibleContexts"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 3 2 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 25+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18+ ]+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15+ , srcInfoPoints = []+ }+ "Log")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15+ , srcInfoPoints = []+ }+ "Stack"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 19 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 21 2 23+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 19 2 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 19 2 20+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ "a"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 7+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 3 3 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 3 3 4 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 5 3 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 5 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 3 5 3 7+ , srcInfoPoints = []+ }+ "id"))))+ Nothing+ ]+ , []+ )
+ tests/examples/FlexibleContextsWithoutVars.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/FlexibleContextsWithoutVars.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE FlexibleContexts #-}++f :: Log.Stack => a -> a+f = id
+ tests/examples/ForallInInstance.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ScopedTypeVariables #-}+module ForallInInstance where++instance forall a. MyClass a => MyClass [a] where
+ tests/examples/ForallInInstance.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForallInInstance.hs.parser.golden view
@@ -0,0 +1,195 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 1 1 1 1+ , SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 1+ , SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 1+ , SrcSpan "tests/examples/ForallInInstance.hs" 4 1 4 1+ , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+ , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 2 1 2 7+ , SrcSpan "tests/examples/ForallInInstance.hs" 2 25 2 30+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 2 8 2 24+ , srcInfoPoints = []+ }+ "ForallInInstance")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 1 1 1 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 1 1 1 13+ , SrcSpan "tests/examples/ForallInInstance.hs" 1 34 1 37+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 1 14 1 33+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ ]+ ]+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 1 5 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 4 1 4 9+ , SrcSpan "tests/examples/ForallInInstance.hs" 4 45 4 50+ , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+ , SrcSpan "tests/examples/ForallInInstance.hs" 5 1 5 1+ , SrcSpan "tests/examples/ForallInInstance.hs" 5 0 5 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 10 4 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 4 10 4 16+ , SrcSpan "tests/examples/ForallInInstance.hs" 4 18 4 19+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 17 4 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 17 4 18+ , srcInfoPoints = []+ }+ "a")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27+ , srcInfoPoints = []+ }+ "MyClass")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 44+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 33 4 40+ , srcInfoPoints = []+ }+ "MyClass")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 41 4 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForallInInstance.hs" 4 41 4 42+ , SrcSpan "tests/examples/ForallInInstance.hs" 4 43 4 44+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 42 4 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForallInInstance.hs" 4 42 4 43+ , srcInfoPoints = []+ }+ "a")))))+ (Just [])+ ]+ , []+ )
+ tests/examples/ForallInInstance.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForallInInstance.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ScopedTypeVariables #-}+module ForallInInstance where++instance forall a . MyClass a => MyClass [a] where
+ tests/examples/ForeignImport.hs view
@@ -0,0 +1,4 @@+{- If compiled without ForeignFunctionInterface (part of Haskell2010),+ it complains not about FFI but about missing TemplateHaskell -}+foreign import ccall unsafe "getProgArgv"+ getProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO ()
+ tests/examples/ForeignImport.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImport.hs.parser.golden view
@@ -0,0 +1,212 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 1+ , SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 1+ , SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 1+ , SrcSpan "tests/examples/ForeignImport.hs" 5 1 5 1+ , SrcSpan "tests/examples/ForeignImport.hs" 5 1 5 1+ ]+ }+ Nothing+ []+ []+ [ ForImp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 1 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 3 1 3 8+ , SrcSpan "tests/examples/ForeignImport.hs" 3 9 3 15+ , SrcSpan "tests/examples/ForeignImport.hs" 3 29 3 42+ , SrcSpan "tests/examples/ForeignImport.hs" 4 14 4 16+ ]+ }+ (CCall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 16 3 21+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 3 22 3 28+ , srcInfoPoints = []+ }))+ (Just "getProgArgv")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 2 4 13+ , srcInfoPoints = []+ }+ "getProgArgv")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 4 26 4 28 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 17 4 20+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 21 4 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 21 4 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 21 4 25+ , srcInfoPoints = []+ }+ "CInt"))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 4 47 4 49 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 29 4 32+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 33 4 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 4 33 4 34+ , SrcSpan "tests/examples/ForeignImport.hs" 4 45 4 46+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 45+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImport.hs" 4 34 4 37+ , srcInfoPoints = []+ }+ "Ptr")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 38 4 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 38 4 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImport.hs" 4 38 4 45+ , srcInfoPoints = []+ }+ "CString"))))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 55+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 50 4 52+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 54+ , SrcSpan "tests/examples/ForeignImport.hs" 4 54 4 55+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 54+ , SrcSpan "tests/examples/ForeignImport.hs" 4 54 4 55+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImport.hs" 4 53 4 54+ , SrcSpan "tests/examples/ForeignImport.hs" 4 54 4 55+ ]+ }))))))+ ]+ , [ Comment+ True+ (SrcSpan "tests/examples/ForeignImport.hs" 1 1 2 67)+ " If compiled without ForeignFunctionInterface (part of Haskell2010),\n it complains not about FFI but about missing TemplateHaskell "+ ]+ )
+ tests/examples/ForeignImport.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImport.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+foreign import ccall unsafe "getProgArgv" getProgArgv ::+ Ptr CInt -> Ptr (Ptr CString) -> IO ()
+ tests/examples/ForeignImportJavascript.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE JavascriptFFI #-}++foreign import javascript unsafe "somethingUseful_ = $1"+ js_set_somethingUseful :: JSFun a -> IO ()
+ tests/examples/ForeignImportJavascript.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImportJavascript.hs.parser.golden view
@@ -0,0 +1,166 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 1 1+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 1+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 1+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 1+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 5 1 5 1+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 1 1 13+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "JavascriptFFI"+ ]+ ]+ []+ [ ForImp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 4 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 1 3 8+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 9 3 15+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 34 3 57+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 28 4 30+ ]+ }+ (JavaScript+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 16 3 26+ , srcInfoPoints = []+ })+ (Just+ (PlayRisky+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 3 27 3 33+ , srcInfoPoints = []+ }))+ (Just "somethingUseful_ = $1")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 5 4 27+ , srcInfoPoints = []+ }+ "js_set_somethingUseful")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 39 4 41 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 31 4 36+ , srcInfoPoints = []+ }+ "JSFun")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 37 4 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 37 4 38+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 47+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 42 4 44+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 46+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 46 4 47+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 46+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 46 4 47+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 45 4 46+ , SrcSpan "tests/examples/ForeignImportJavascript.hs" 4 46 4 47+ ]+ })))))+ ]+ , []+ )
+ tests/examples/ForeignImportJavascript.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ForeignImportJavascript.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE JavascriptFFI #-}++foreign import javascript unsafe "somethingUseful_ = $1"+ js_set_somethingUseful :: JSFun a -> IO ()
+ tests/examples/GADTRecord.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+ T :: { field :: Int } -> T
+ tests/examples/GADTRecord.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord.hs.parser.golden view
@@ -0,0 +1,128 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord.hs" 1 1 1 1+ , SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 1+ , SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 1+ , SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 1+ , SrcSpan "tests/examples/GADTRecord.hs" 5 1 5 1+ , SrcSpan "tests/examples/GADTRecord.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord.hs" 1 1 1 13+ , SrcSpan "tests/examples/GADTRecord.hs" 1 20 1 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 1 5 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord.hs" 3 8 3 13+ , SrcSpan "tests/examples/GADTRecord.hs" 4 3 4 3+ , SrcSpan "tests/examples/GADTRecord.hs" 5 1 5 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ "T"))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 3 4 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord.hs" 4 5 4 7+ , SrcSpan "tests/examples/GADTRecord.hs" 4 8 4 9+ , SrcSpan "tests/examples/GADTRecord.hs" 4 23 4 24+ , SrcSpan "tests/examples/GADTRecord.hs" 4 25 4 27+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 3 4 4+ , srcInfoPoints = []+ }+ "T")+ Nothing+ Nothing+ (Just+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 10 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord.hs" 4 16 4 18 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 10 4 15+ , srcInfoPoints = []+ }+ "field"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ "Int")))+ ])+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ "T")))+ ]+ []+ ]+ , []+ )
+ tests/examples/GADTRecord.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+ T :: {field :: Int} -> T
+ tests/examples/GADTRecord2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+ T :: () => { field :: Int } -> T
+ tests/examples/GADTRecord2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord2.hs.parser.golden view
@@ -0,0 +1,137 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 1+ , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1+ , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1+ , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1+ , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 1+ , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 13+ , SrcSpan "tests/examples/GADTRecord2.hs" 1 20 1 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 1 5 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord2.hs" 3 8 3 13+ , SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 3+ , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ "T"))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord2.hs" 4 5 4 7+ , SrcSpan "tests/examples/GADTRecord2.hs" 4 14 4 15+ , SrcSpan "tests/examples/GADTRecord2.hs" 4 29 4 30+ , SrcSpan "tests/examples/GADTRecord2.hs" 4 31 4 33+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 4+ , srcInfoPoints = []+ }+ "T")+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 8 4 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord2.hs" 4 8 4 9+ , SrcSpan "tests/examples/GADTRecord2.hs" 4 9 4 10+ , SrcSpan "tests/examples/GADTRecord2.hs" 4 11 4 13+ ]+ }))+ (Just+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 16 4 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GADTRecord2.hs" 4 22 4 24 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 16 4 21+ , srcInfoPoints = []+ }+ "field"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28+ , srcInfoPoints = []+ }+ "Int")))+ ])+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35+ , srcInfoPoints = []+ }+ "T")))+ ]+ []+ ]+ , []+ )
+ tests/examples/GADTRecord2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GADTRecord2.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data T where+ T :: () => {field :: Int} -> T
+ tests/examples/GadtDeriving.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Foo where+ Foo :: Int -> Foo+ deriving (Eq,Ord,Typeable)
+ tests/examples/GadtDeriving.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtDeriving.hs.parser.golden view
@@ -0,0 +1,199 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 1+ , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtDeriving.hs" 6 1 6 1+ , SrcSpan "tests/examples/GadtDeriving.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtDeriving.hs" 1 1 1 13+ , SrcSpan "tests/examples/GadtDeriving.hs" 1 20 1 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 1 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtDeriving.hs" 3 10 3 15+ , SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 5+ , SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 5+ , SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 5+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ "Foo"))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtDeriving.hs" 4 9 4 11 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 5 4 8+ , srcInfoPoints = []+ }+ "Foo")+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtDeriving.hs" 4 16 4 18 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 15+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 19 4 22+ , srcInfoPoints = []+ }+ "Foo"))))+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtDeriving.hs" 5 5 5 13+ , SrcSpan "tests/examples/GadtDeriving.hs" 5 14 5 15+ , SrcSpan "tests/examples/GadtDeriving.hs" 5 17 5 18+ , SrcSpan "tests/examples/GadtDeriving.hs" 5 21 5 22+ , SrcSpan "tests/examples/GadtDeriving.hs" 5 30 5 31+ ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 15 5 17+ , srcInfoPoints = []+ }+ "Eq")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 18 5 21+ , srcInfoPoints = []+ }+ "Ord")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 5 22 5 30+ , srcInfoPoints = []+ }+ "Typeable")))+ ]+ ]+ ]+ , []+ )
+ tests/examples/GadtDeriving.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtDeriving.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Foo where+ Foo :: Int -> Foo+ deriving (Eq, Ord, Typeable)
+ tests/examples/GadtRecordFields.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Ty where+ TCon :: { field1 :: Int, field2 :: Bool } -> Ty+ TCon2 :: Ty
+ tests/examples/GadtRecordFields.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtRecordFields.hs.parser.golden view
@@ -0,0 +1,217 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 1 1+ , SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtRecordFields.hs" 6 1 6 1+ , SrcSpan "tests/examples/GadtRecordFields.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtRecordFields.hs" 1 1 1 13+ , SrcSpan "tests/examples/GadtRecordFields.hs" 1 20 1 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 6 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtRecordFields.hs" 3 9 3 14+ , SrcSpan "tests/examples/GadtRecordFields.hs" 4 3 4 3+ , SrcSpan "tests/examples/GadtRecordFields.hs" 5 3 5 3+ , SrcSpan "tests/examples/GadtRecordFields.hs" 6 1 6 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 3 6 3 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 3 6 3 8+ , srcInfoPoints = []+ }+ "Ty"))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 3 4 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtRecordFields.hs" 4 8 4 10+ , SrcSpan "tests/examples/GadtRecordFields.hs" 4 11 4 12+ , SrcSpan "tests/examples/GadtRecordFields.hs" 4 43 4 44+ , SrcSpan "tests/examples/GadtRecordFields.hs" 4 45 4 47+ , SrcSpan "tests/examples/GadtRecordFields.hs" 4 26 4 27+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 3 4 7+ , srcInfoPoints = []+ }+ "TCon")+ Nothing+ Nothing+ (Just+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 13 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtRecordFields.hs" 4 20 4 22 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 13 4 19+ , srcInfoPoints = []+ }+ "field1"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 23 4 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 23 4 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 23 4 26+ , srcInfoPoints = []+ }+ "Int")))+ , FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 28 4 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtRecordFields.hs" 4 35 4 37 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 28 4 34+ , srcInfoPoints = []+ }+ "field2"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 38 4 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 38 4 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 38 4 42+ , srcInfoPoints = []+ }+ "Bool")))+ ])+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 48 4 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 48 4 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 4 48 4 50+ , srcInfoPoints = []+ }+ "Ty")))+ , GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 5 3 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtRecordFields.hs" 5 9 5 11 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 5 3 5 8+ , srcInfoPoints = []+ }+ "TCon2")+ Nothing+ Nothing+ Nothing+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 5 12 5 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 5 12 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtRecordFields.hs" 5 12 5 14+ , srcInfoPoints = []+ }+ "Ty")))+ ]+ []+ ]+ , []+ )
+ tests/examples/GadtRecordFields.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtRecordFields.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE GADTs #-}++data Ty where+ TCon :: {field1 :: Int, field2 :: Bool} -> Ty+ TCon2 :: Ty
+ tests/examples/GadtStrictness.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data X where+ X :: !Int -> X
+ tests/examples/GadtStrictness.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtStrictness.hs.parser.golden view
@@ -0,0 +1,135 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtStrictness.hs" 1 1 1 1+ , SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 1+ , SrcSpan "tests/examples/GadtStrictness.hs" 5 1 5 1+ , SrcSpan "tests/examples/GadtStrictness.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtStrictness.hs" 1 1 1 13+ , SrcSpan "tests/examples/GadtStrictness.hs" 1 20 1 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtStrictness.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 1 5 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtStrictness.hs" 3 8 3 13+ , SrcSpan "tests/examples/GadtStrictness.hs" 4 3 4 3+ , SrcSpan "tests/examples/GadtStrictness.hs" 5 1 5 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ "X"))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 3 4 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtStrictness.hs" 4 5 4 7 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 3 4 4+ , srcInfoPoints = []+ }+ "X")+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 8 4 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GadtStrictness.hs" 4 13 4 15 ]+ }+ (TyBang+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ (BangedTy+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 8 4 9+ , srcInfoPoints = []+ })+ (NoUnpackPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+ , srcInfoPoints = []+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtStrictness.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtStrictness.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GadtStrictness.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ "X"))))+ ]+ []+ ]+ , []+ )
+ tests/examples/GadtStrictness.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GadtStrictness.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE GADTs #-}++data X where+ X :: !Int -> X
+ tests/examples/GenericTree.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE RankNTypes #-}+module GenericTree where++import Data.Typeable++dynRep :: (Typeable a) => a -> (TypeRep, forall b. (Typeable b) => b -> (Maybe b))+dynRep a = (typeOf a, \_ -> cast a)
+ tests/examples/GenericTree.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GenericTree.hs.parser.golden view
@@ -0,0 +1,479 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 1 1 1 1+ , SrcSpan "tests/examples/GenericTree.hs" 2 1 2 1+ , SrcSpan "tests/examples/GenericTree.hs" 2 1 2 1+ , SrcSpan "tests/examples/GenericTree.hs" 4 1 4 1+ , SrcSpan "tests/examples/GenericTree.hs" 6 1 6 1+ , SrcSpan "tests/examples/GenericTree.hs" 7 1 7 1+ , SrcSpan "tests/examples/GenericTree.hs" 8 1 8 1+ , SrcSpan "tests/examples/GenericTree.hs" 8 1 8 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 2 1 2 7+ , SrcSpan "tests/examples/GenericTree.hs" 2 20 2 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 2 8 2 19+ , srcInfoPoints = []+ }+ "GenericTree")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 1 1 1 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 1 1 1 13+ , SrcSpan "tests/examples/GenericTree.hs" 1 25 1 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 4 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 4 8 4 21+ , srcInfoPoints = []+ }+ "Data.Typeable"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 1 6 83+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 8 6 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 1 6 7+ , srcInfoPoints = []+ }+ "dynRep"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 11 6 83+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 11 6 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 11 6 12+ , SrcSpan "tests/examples/GenericTree.hs" 6 22 6 23+ , SrcSpan "tests/examples/GenericTree.hs" 6 24 6 26+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 11 6 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 11 6 12+ , SrcSpan "tests/examples/GenericTree.hs" 6 22 6 23+ , SrcSpan "tests/examples/GenericTree.hs" 6 24 6 26+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20+ , srcInfoPoints = []+ }+ "Typeable")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 83+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 29 6 31 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 28+ , srcInfoPoints = []+ }+ "a"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 32 6 83+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 32 6 33+ , SrcSpan "tests/examples/GenericTree.hs" 6 40 6 41+ , SrcSpan "tests/examples/GenericTree.hs" 6 82 6 83+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 33 6 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 33 6 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 33 6 40+ , srcInfoPoints = []+ }+ "TypeRep"))+ , TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 42 6 82+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 42 6 48+ , SrcSpan "tests/examples/GenericTree.hs" 6 50 6 51+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 49 6 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 49 6 50+ , srcInfoPoints = []+ }+ "b")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 52 6 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 52 6 53+ , SrcSpan "tests/examples/GenericTree.hs" 6 63 6 64+ , SrcSpan "tests/examples/GenericTree.hs" 6 65 6 67+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 52 6 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 52 6 53+ , SrcSpan "tests/examples/GenericTree.hs" 6 63 6 64+ , SrcSpan "tests/examples/GenericTree.hs" 6 65 6 67+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/GenericTree.hs" 6 53 6 61+ , srcInfoPoints = []+ }+ "Typeable")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63+ , srcInfoPoints = []+ }+ "b")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 82+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 70 6 72 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 69+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 69+ , srcInfoPoints = []+ }+ "b"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 73 6 82+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 6 73 6 74+ , SrcSpan "tests/examples/GenericTree.hs" 6 81 6 82+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 74 6 81+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 74 6 79+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 74 6 79+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 74 6 79+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 80 6 81+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 6 80 6 81+ , srcInfoPoints = []+ }+ "b")))))+ ])))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 1 7 36+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 1 7 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 1 7 7+ , srcInfoPoints = []+ }+ "dynRep")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 8 7 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 8 7 9+ , srcInfoPoints = []+ }+ "a")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 10 7 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 7 10 7 11 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 12 7 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 7 12 7 13+ , SrcSpan "tests/examples/GenericTree.hs" 7 21 7 22+ , SrcSpan "tests/examples/GenericTree.hs" 7 35 7 36+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 13 7 19+ , srcInfoPoints = []+ }+ "typeOf")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 20 7 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 20 7 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 20 7 21+ , srcInfoPoints = []+ }+ "a")))+ , Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 23 7 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GenericTree.hs" 7 23 7 24+ , SrcSpan "tests/examples/GenericTree.hs" 7 26 7 28+ ]+ }+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 24 7 25+ , srcInfoPoints = []+ }+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 29 7 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 29 7 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 29 7 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 7 29 7 33+ , srcInfoPoints = []+ }+ "cast")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 34 7 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 7 34 7 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GenericTree.hs" 7 34 7 35+ , srcInfoPoints = []+ }+ "a"))))+ ]))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/GenericTree.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GenericTree.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE RankNTypes #-}+module GenericTree where+import Data.Typeable++dynRep ::+ (Typeable a) =>+ a -> (TypeRep, forall b . (Typeable b) => b -> (Maybe b))+dynRep a = (typeOf a, \ _ -> cast a)
+ tests/examples/GhcDeriving.hs view
@@ -0,0 +1,4 @@+++newtype CodeGenModule a = CGM (StateT CGMState IO a)+ deriving (Monad, MonadState [s], MonadIO)
+ tests/examples/GhcDeriving.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GhcDeriving.hs.parser.golden view
@@ -0,0 +1,271 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1+ , SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1+ , SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 1+ , SrcSpan "tests/examples/GhcDeriving.hs" 5 1 5 1+ , SrcSpan "tests/examples/GhcDeriving.hs" 5 1 5 1+ ]+ }+ Nothing+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 4 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GhcDeriving.hs" 3 25 3 26 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 1 3 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 9 3 22+ , srcInfoPoints = []+ }+ "CodeGenModule"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 53+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 27 3 30+ , srcInfoPoints = []+ }+ "CGM")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 31 3 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GhcDeriving.hs" 3 31 3 32+ , SrcSpan "tests/examples/GhcDeriving.hs" 3 52 3 53+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 52+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 50+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 47+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GhcDeriving.hs" 3 32 3 38+ , srcInfoPoints = []+ }+ "StateT")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GhcDeriving.hs" 3 39 3 47+ , srcInfoPoints = []+ }+ "CGMState"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/GhcDeriving.hs" 3 48 3 50+ , srcInfoPoints = []+ }+ "IO"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 51 3 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 3 51 3 52+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 4 4 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GhcDeriving.hs" 4 4 4 12+ , SrcSpan "tests/examples/GhcDeriving.hs" 4 13 4 14+ , SrcSpan "tests/examples/GhcDeriving.hs" 4 19 4 20+ , SrcSpan "tests/examples/GhcDeriving.hs" 4 35 4 36+ , SrcSpan "tests/examples/GhcDeriving.hs" 4 44 4 45+ ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 14 4 19+ , srcInfoPoints = []+ }+ "Monad")))+ , IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 35+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 35+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 21 4 31+ , srcInfoPoints = []+ }+ "MonadState")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 32 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GhcDeriving.hs" 4 32 4 33+ , SrcSpan "tests/examples/GhcDeriving.hs" 4 34 4 35+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ "s"))))+ , IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GhcDeriving.hs" 4 37 4 44+ , srcInfoPoints = []+ }+ "MonadIO")))+ ]+ ]+ ]+ , []+ )
+ tests/examples/GhcDeriving.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GhcDeriving.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+newtype CodeGenModule a = CGM (StateT CGMState IO a)+ deriving (Monad, MonadState [s], MonadIO)
+ tests/examples/GroupKeyword.hs view
@@ -0,0 +1,4 @@+-- {-# LANGUAGE TransformListComp #-}+module GroupKeyword where++a = map head $ group $ sort [1..100]
+ tests/examples/GroupKeyword.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GroupKeyword.hs.parser.golden view
@@ -0,0 +1,210 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 2 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 1+ , SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 1+ , SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 1+ , SrcSpan "tests/examples/GroupKeyword.hs" 5 1 5 1+ , SrcSpan "tests/examples/GroupKeyword.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GroupKeyword.hs" 2 1 2 7+ , SrcSpan "tests/examples/GroupKeyword.hs" 2 21 2 26+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 2 8 2 20+ , srcInfoPoints = []+ }+ "GroupKeyword")+ Nothing+ Nothing))+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 37+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "a"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 3 4 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GroupKeyword.hs" 4 3 4 4 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 37+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 5 4 8+ , srcInfoPoints = []+ }+ "map")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 9 4 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 9 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 9 4 13+ , srcInfoPoints = []+ }+ "head"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 16 4 21+ , srcInfoPoints = []+ }+ "group")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 37+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 24 4 28+ , srcInfoPoints = []+ }+ "sort")))+ (EnumFromTo+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 29 4 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/GroupKeyword.hs" 4 29 4 30+ , SrcSpan "tests/examples/GroupKeyword.hs" 4 31 4 33+ , SrcSpan "tests/examples/GroupKeyword.hs" 4 36 4 37+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 30 4 31+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 30 4 31+ , srcInfoPoints = []+ }+ 1+ "1"))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 33 4 36+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/GroupKeyword.hs" 4 33 4 36+ , srcInfoPoints = []+ }+ 100+ "100")))))))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/GroupKeyword.hs" 1 1 1 38)+ " {-# LANGUAGE TransformListComp #-}"+ ]+ )
+ tests/examples/GroupKeyword.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/GroupKeyword.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module GroupKeyword where+a = map head $ group $ sort [1 .. 100]
+ tests/examples/HaddockComments.hs view
@@ -0,0 +1,56 @@+{-|+Module : W+Description : Short description+Copyright : (c) Some Guy, 2013+ Someone Else, 2014+License : GPL-3+Maintainer : sample@email.com+Stability : experimental+Portability : POSIX++Here is a longer description of this module, containing some+commentary with @some markup@.+-}+module HaddockComments where++-- | Function1 comment+fun1+ :: Int -- ^ The 'Int' argument+ -> Float -- ^ The 'Float' argument+ -> IO () -- ^ The return value+fun1 = undefined+++-- not a haddock comment+fun2 = undefined++fun3 :: Int -> Int+-- ^ Function3 comment+fun3 = undefined++{-|+ The 'square' function squares an integer.+ It takes one argument, of type 'Int'.+-}+square :: Int -> Int+square x = x * x -- beware!++class C a where+ -- | This is the documentation for the 'f' method+ f :: a -> Int+ -- | This is the documentation for the 'g' method+ g :: Int -> a++-- | Data type comment+-- With a second line+data MyData =+ -- | Constructor1 comment+ Cons1+ { cons1Field1 :: Int -- ^ Constructor 1 field 1 comment+ -- spanning two lines+ -- | Constructor 1 field 2 comment+ , cons1Field2 :: Int+ , cons1Field3 :: String -- Not a haddock comment+ }+ | Cons2 -- ^ Constructor 2 comment+ Int -- ^ Last
+ tests/examples/HaddockComments.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaddockComments.hs.parser.golden view
@@ -0,0 +1,983 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 14 1 57 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 1+ , SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 1+ , SrcSpan "tests/examples/HaddockComments.hs" 17 1 17 1+ , SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 1+ , SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 1+ , SrcSpan "tests/examples/HaddockComments.hs" 27 1 27 1+ , SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 1+ , SrcSpan "tests/examples/HaddockComments.hs" 35 1 35 1+ , SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 1+ , SrcSpan "tests/examples/HaddockComments.hs" 38 1 38 1+ , SrcSpan "tests/examples/HaddockComments.hs" 46 1 46 1+ , SrcSpan "tests/examples/HaddockComments.hs" 57 1 57 1+ , SrcSpan "tests/examples/HaddockComments.hs" 57 1 57 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 14 1 14 7+ , SrcSpan "tests/examples/HaddockComments.hs" 14 24 14 29+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 14 8 14 23+ , srcInfoPoints = []+ }+ "HaddockComments")+ Nothing+ Nothing))+ []+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 17 1 20 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 18 4 18 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 17 1 17 5+ , srcInfoPoints = []+ }+ "fun1"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 18 7 20 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 19 4 19 6 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 18 7 18 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 18 7 18 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 18 7 18 10+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 19 7 20 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 20 4 20 6 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 19 7 19 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 19 7 19 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 19 7 19 12+ , srcInfoPoints = []+ }+ "Float")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 20 7 20 9+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 11+ , SrcSpan "tests/examples/HaddockComments.hs" 20 11 20 12+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 11+ , SrcSpan "tests/examples/HaddockComments.hs" 20 11 20 12+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 20 10 20 11+ , SrcSpan "tests/examples/HaddockComments.hs" 20 11 20 12+ ]+ }))))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 21 1 21 5+ , srcInfoPoints = []+ }+ "fun1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 21 6 21 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 21 6 21 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 21 8 21 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 21 8 21 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 21 8 21 17+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 25 1 25 5+ , srcInfoPoints = []+ }+ "fun2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 25 6 25 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 25 6 25 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 25 8 25 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 25 8 25 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 25 8 25 17+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 1 27 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 27 6 27 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 1 27 5+ , srcInfoPoints = []+ }+ "fun3"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 27 13 27 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 9 27 12+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 16 27 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 16 27 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 27 16 27 19+ , srcInfoPoints = []+ }+ "Int"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 29 1 29 5+ , srcInfoPoints = []+ }+ "fun3"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 29 6 29 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 29 6 29 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 29 8 29 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 29 8 29 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 29 8 29 17+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 1 35 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 35 8 35 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 1 35 7+ , srcInfoPoints = []+ }+ "square"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 35 15 35 17 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 11 35 14+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 18 35 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 18 35 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 35 18 35 21+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 17+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 1 36 7+ , srcInfoPoints = []+ }+ "square")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 8 36 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 8 36 9+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 10 36 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 36 10 36 11 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 12 36 13+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 14 36 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 14 36 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 14 36 15+ , srcInfoPoints = []+ }+ "*")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 16 36 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 16 36 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 36 16 36 17+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 38 1 42 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 38 1 38 6+ , SrcSpan "tests/examples/HaddockComments.hs" 38 11 38 16+ , SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 4+ , SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 4+ , SrcSpan "tests/examples/HaddockComments.hs" 46 1 46 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 38 7 38 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 38 7 38 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 38 7 38 8+ , srcInfoPoints = []+ }+ "C"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 38 9 38 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 38 9 38 10+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 40 6 40 8 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 40 6 40 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 4 40 5+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 9 40 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 40 11 40 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 9 40 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 9 40 10+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 14 40 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 14 40 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 40 14 40 17+ , srcInfoPoints = []+ }+ "Int")))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 42 6 42 8 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 42 6 42 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 4 42 5+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 42 13 42 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 9 42 12+ , srcInfoPoints = []+ }+ "Int")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 16 42 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 42 16 42 17+ , srcInfoPoints = []+ }+ "a"))))+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 46 1 56 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 46 13 46 14+ , SrcSpan "tests/examples/HaddockComments.hs" 55 3 55 4+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 46 1 46 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 46 6 46 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 46 6 46 12+ , srcInfoPoints = []+ }+ "MyData"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 48 3 54 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 49 5 49 6+ , SrcSpan "tests/examples/HaddockComments.hs" 52 5 52 6+ , SrcSpan "tests/examples/HaddockComments.hs" 53 5 53 6+ , SrcSpan "tests/examples/HaddockComments.hs" 54 5 54 6+ ]+ }+ Nothing+ Nothing+ (RecDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 48 3 54 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 49 5 49 6+ , SrcSpan "tests/examples/HaddockComments.hs" 52 5 52 6+ , SrcSpan "tests/examples/HaddockComments.hs" 53 5 53 6+ , SrcSpan "tests/examples/HaddockComments.hs" 54 5 54 6+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 48 3 48 8+ , srcInfoPoints = []+ }+ "Cons1")+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 49 7 49 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 49 19 49 21 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 49 7 49 18+ , srcInfoPoints = []+ }+ "cons1Field1"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 49 22 49 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 49 22 49 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 49 22 49 25+ , srcInfoPoints = []+ }+ "Int")))+ , FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 52 7 52 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 52 19 52 21 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 52 7 52 18+ , srcInfoPoints = []+ }+ "cons1Field2"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 52 22 52 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 52 22 52 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 52 22 52 25+ , srcInfoPoints = []+ }+ "Int")))+ , FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 53 7 53 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaddockComments.hs" 53 19 53 21 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 53 7 53 18+ , srcInfoPoints = []+ }+ "cons1Field3"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 53 22 53 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 53 22 53 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 53 22 53 28+ , srcInfoPoints = []+ }+ "String")))+ ])+ , QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 55 5 56 10+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 55 5 56 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 55 5 55 10+ , srcInfoPoints = []+ }+ "Cons2")+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 56 7 56 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 56 7 56 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaddockComments.hs" 56 7 56 10+ , srcInfoPoints = []+ }+ "Int"))+ ])+ ]+ []+ ]+ , [ Comment+ True+ (SrcSpan "tests/examples/HaddockComments.hs" 1 1 13 3)+ "|\nModule : W\nDescription : Short description\nCopyright : (c) Some Guy, 2013\n Someone Else, 2014\nLicense : GPL-3\nMaintainer : sample@email.com\nStability : experimental\nPortability : POSIX\n\nHere is a longer description of this module, containing some\ncommentary with @some markup@.\n"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 16 1 16 23)+ " | Function1 comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 18 16 18 39)+ " ^ The 'Int' argument"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 19 16 19 41)+ " ^ The 'Float' argument"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 20 16 20 37)+ " ^ The return value"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 24 1 24 25)+ " not a haddock comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 28 1 28 23)+ " ^ Function3 comment"+ , Comment+ True+ (SrcSpan "tests/examples/HaddockComments.hs" 31 1 34 3)+ "|\n The 'square' function squares an integer.\n It takes one argument, of type 'Int'.\n"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 36 18 36 28)+ " beware!"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 39 4 39 53)+ " | This is the documentation for the 'f' method"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 41 4 41 53)+ " | This is the documentation for the 'g' method"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 44 1 44 23)+ " | Data type comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 45 1 45 22)+ " With a second line"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 47 3 47 28)+ " | Constructor1 comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 49 26 49 60)+ " ^ Constructor 1 field 1 comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 50 26 50 47)+ " spanning two lines"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 51 7 51 41)+ " | Constructor 1 field 2 comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 53 29 53 53)+ " Not a haddock comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 55 11 55 37)+ " ^ Constructor 2 comment"+ , Comment+ False+ (SrcSpan "tests/examples/HaddockComments.hs" 56 11 56 20)+ " ^ Last"+ ]+ )
+ tests/examples/HaddockComments.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaddockComments.hs.prettyprinter.golden view
@@ -0,0 +1,20 @@+module HaddockComments where++fun1 :: Int -> Float -> IO ()+fun1 = undefined+fun2 = undefined++fun3 :: Int -> Int+fun3 = undefined++square :: Int -> Int+square x = x * x++class C a where+ f :: a -> Int+ + g :: Int -> a++data MyData = Cons1{cons1Field1 :: Int, cons1Field2 :: Int,+ cons1Field3 :: String}+ | Cons2 Int
+ tests/examples/HappyDoAction.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE MagicHash #-}+module HappyDoAction where++foo :: Int#++happyDoAction i tk st+ = {- nothing -}+++ case action of+ 0# -> {- nothing -}+ happyFail i tk st+ -1# -> {- nothing -}+ happyAccept i tk st+ n | (n <# (0# :: Int#)) -> {- nothing -}++ (happyReduceArr ! rule) i tk st+ where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))+ n -> {- nothing -}+++ happyShift new_state i tk st+ where new_state = (n -# (1# :: Int#))+ where off = indexShortOffAddr happyActOffsets st+ off_i = (off +# i)+ check = if (off_i >=# (0# :: Int#))+ then (indexShortOffAddr happyCheck off_i ==# i)+ else False+ action | check = indexShortOffAddr happyTable off_i+ | otherwise = indexShortOffAddr happyDefActions st
+ tests/examples/HappyDoAction.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HappyDoAction.hs.parser.golden view
@@ -0,0 +1,2443 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 1 1 31 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 1 1 1 1+ , SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 1+ , SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 1+ , SrcSpan "tests/examples/HappyDoAction.hs" 4 1 4 1+ , SrcSpan "tests/examples/HappyDoAction.hs" 6 1 6 1+ , SrcSpan "tests/examples/HappyDoAction.hs" 31 1 31 1+ , SrcSpan "tests/examples/HappyDoAction.hs" 31 1 31 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 2 1 2 7+ , SrcSpan "tests/examples/HappyDoAction.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "HappyDoAction")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 1 1 1 13+ , SrcSpan "tests/examples/HappyDoAction.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "MagicHash"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 1 4 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 4 5 4 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ "Int#")))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 1 30 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 9 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 1 30 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 9 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 1 6 14+ , srcInfoPoints = []+ }+ "happyDoAction")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 15 6 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 15 6 16+ , srcInfoPoints = []+ }+ "i")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 17 6 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 17 6 19+ , srcInfoPoints = []+ }+ "tk")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 20 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 6 20 6 22+ , srcInfoPoints = []+ }+ "st")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HappyDoAction.hs" 7 5 23 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 7 5 7 6 ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 10 7 23 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 10 7 10 11+ , SrcSpan "tests/examples/HappyDoAction.hs" 10 19 10 21+ , SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 9+ , SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 9+ , SrcSpan "tests/examples/HappyDoAction.hs" 15 9 15 9+ , SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 9+ , SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 0+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 10 12 10 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 10 12 10 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 10 12 10 18+ , srcInfoPoints = []+ }+ "action")))+ [ Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 11 9 12 39+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 11+ , srcInfoPoints = []+ })+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ 0+ "0"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 11 19 12 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 11 19 11 21 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 39+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 36+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 22 12 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 12 22 12 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 12 22 12 31+ , srcInfoPoints = []+ }+ "happyFail")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 32 12 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 12 32 12 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 12 32 12 33+ , srcInfoPoints = []+ }+ "i"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 34 12 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 34 12 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 12 34 12 36+ , srcInfoPoints = []+ }+ "tk"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 37 12 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 37 12 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 12 37 12 39+ , srcInfoPoints = []+ }+ "st")))))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 13 9 14 41+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 10 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 13 9 13 10 ]+ })+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 13 10 13 12+ , srcInfoPoints = []+ }+ 1+ "1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 13 19 14 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 13 19 13 21 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 41+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 38+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 22 14 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 14 22 14 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 14 22 14 33+ , srcInfoPoints = []+ }+ "happyAccept")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 34 14 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 14 34 14 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 14 34 14 35+ , srcInfoPoints = []+ }+ "i"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 36 14 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 36 14 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 14 36 14 38+ , srcInfoPoints = []+ }+ "tk"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 39 14 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 39 14 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 14 39 14 41+ , srcInfoPoints = []+ }+ "st")))))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 9 18 76+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 18 22 18 27 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ "n"))+ (GuardedRhss+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 11 17 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 15 11 15 12+ , SrcSpan "tests/examples/HappyDoAction.hs" 15 33 15 35+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 11 17 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 15 11 15 12+ , SrcSpan "tests/examples/HappyDoAction.hs" 15 33 15 35+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 14+ , SrcSpan "tests/examples/HappyDoAction.hs" 15 31 15 32+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 15 13 15 14+ , SrcSpan "tests/examples/HappyDoAction.hs" 15 31 15 32+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 15 14 15 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 15 14 15 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 15 14 15 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 14+ 15+ 15+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 15 16 15 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 15 16 15 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 16+ 15+ 18+ , srcInfoPoints = []+ }+ "<#")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 15 19 15 31+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs" 15 19 15 20+ , SrcSpan+ "tests/examples/HappyDoAction.hs" 15 30 15 31+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 15 20 15 30+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 23+ 15+ 25+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 20+ 15+ 22+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 20+ 15+ 22+ , srcInfoPoints = []+ }+ 0+ "0"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 26+ 15+ 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 26+ 15+ 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 15+ 26+ 15+ 30+ , srcInfoPoints = []+ }+ "Int#")))))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 17 22 17 53+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 17 22 17 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 17 22 17 47+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 22 17 45+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 22 17 23+ , SrcSpan+ "tests/examples/HappyDoAction.hs" 17 44 17 45+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 23 17 44+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 23+ 17+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 23+ 17+ 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 23+ 17+ 37+ , srcInfoPoints = []+ }+ "happyReduceArr")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 38+ 17+ 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 38+ 17+ 39+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 38+ 17+ 39+ , srcInfoPoints = []+ }+ "!")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 40+ 17+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 40+ 17+ 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 40+ 17+ 44+ , srcInfoPoints = []+ }+ "rule")))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 46 17 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 46 17 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 17+ 46+ 17+ 47+ , srcInfoPoints = []+ }+ "i"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 17 48 17 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 48 17 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 48 17 50+ , srcInfoPoints = []+ }+ "tk"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 17 51 17 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 17 51 17 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 17 51 17 53+ , srcInfoPoints = []+ }+ "st"))))+ ])+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 76+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 28+ , SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 76+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 18 28 18 32+ , srcInfoPoints = []+ }+ "rule"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 18 33 18 76+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 18 33 18 34 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 18 35 18 76+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs" 18 35 18 36+ , SrcSpan+ "tests/examples/HappyDoAction.hs" 18 75 18 76+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 18 36 18 75+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 18 36 18 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 36+ 18+ 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 36+ 18+ 38+ , srcInfoPoints = []+ }+ "I#")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 18 39 18 75+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 39+ 18+ 40+ , SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 74+ 18+ 75+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 40+ 18+ 74+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 40+ 18+ 41+ , SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 73+ 18+ 74+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 41+ 18+ 73+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 41+ 18+ 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 41+ 18+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 41+ 18+ 51+ , srcInfoPoints = []+ }+ "negateInt#")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 52+ 18+ 73+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 52+ 18+ 53+ , SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 72+ 18+ 73+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 53+ 18+ 72+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 53+ 18+ 54+ , SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 71+ 18+ 72+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 54+ 18+ 71+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 54+ 18+ 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 54+ 18+ 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 54+ 18+ 55+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 56+ 18+ 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 56+ 18+ 58+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 56+ 18+ 58+ , srcInfoPoints = []+ }+ "+#")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 59+ 18+ 71+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 59+ 18+ 60+ , SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 70+ 18+ 71+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 60+ 18+ 70+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 63+ 18+ 65+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 60+ 18+ 62+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 60+ 18+ 62+ , srcInfoPoints = []+ }+ 1+ "1"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 66+ 18+ 70+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 66+ 18+ 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 18+ 66+ 18+ 70+ , srcInfoPoints = []+ }+ "Int#"))))))))))))))+ Nothing+ ]))+ , Alt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 19 9 23 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 23 22 23 27 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 19 9 19 10+ , srcInfoPoints = []+ }+ "n"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 19 19 22 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 19 19 19 21 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 47+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 44+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 22 22 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 22 22 22 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 22 22 22 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 22+ 22+ 22+ 32+ , srcInfoPoints = []+ }+ "happyShift")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 22 33 22 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 22 33 22 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 22+ 33+ 22+ 42+ , srcInfoPoints = []+ }+ "new_state"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 43 22 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 22 43 22 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 22 43 22 44+ , srcInfoPoints = []+ }+ "i"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 45 22 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 45 22 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 22 45 22 47+ , srcInfoPoints = []+ }+ "tk"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 48 22 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 48 22 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 22 48 22 50+ , srcInfoPoints = []+ }+ "st")))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 28+ , SrcSpan "tests/examples/HappyDoAction.hs" 24 4 24 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 59+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 23 28 23 37+ , srcInfoPoints = []+ }+ "new_state"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 23 38 23 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 23 38 23 39 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 23 40 23 59+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs" 23 40 23 41+ , SrcSpan+ "tests/examples/HappyDoAction.hs" 23 58 23 59+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 23 41 23 58+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 23 41 23 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 41+ 23+ 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 41+ 23+ 42+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 23 43 23 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 43+ 23+ 45+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 43+ 23+ 45+ , srcInfoPoints = []+ }+ "-#")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 23 46 23 58+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 46+ 23+ 47+ , SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 57+ 23+ 58+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 47+ 23+ 57+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 50+ 23+ 52+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 47+ 23+ 49+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 47+ 23+ 49+ , srcInfoPoints = []+ }+ 1+ "1"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 53+ 23+ 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 53+ 23+ 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 23+ 53+ 23+ 57+ , srcInfoPoints = []+ }+ "Int#"))))))))+ Nothing+ ]))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 10 30 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 10+ , SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 10+ , SrcSpan "tests/examples/HappyDoAction.hs" 26 10 26 10+ , SrcSpan "tests/examples/HappyDoAction.hs" 29 10 29 10+ , SrcSpan "tests/examples/HappyDoAction.hs" 31 1 31 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 55+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 10 24 13+ , srcInfoPoints = []+ }+ "off"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 17 24 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 24 17 24 18 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 55+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 52+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 19 24 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 24 19 24 36+ , srcInfoPoints = []+ }+ "indexShortOffAddr")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 37 24 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 37 24 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 24 37 24 52+ , srcInfoPoints = []+ }+ "happyActOffsets"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 53 24 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 53 24 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 24 53 24 55+ , srcInfoPoints = []+ }+ "st")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 29+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 10 25 15+ , srcInfoPoints = []+ }+ "off_i"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 17 25 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 25 17 25 18 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 19 25 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 25 19 25 20+ , SrcSpan "tests/examples/HappyDoAction.hs" 25 28 25 29+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 20 25 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 20 25 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 20 25 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 25 20 25 23+ , srcInfoPoints = []+ }+ "off")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 24 25 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 24 25 26+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 25 24 25 26+ , srcInfoPoints = []+ }+ "+#")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 27 25 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 25 27 25 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 25 27 25 28+ , srcInfoPoints = []+ }+ "i"))))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 10 28 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 10 26 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 10 26 15+ , srcInfoPoints = []+ }+ "check"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 17 28 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 26 17 26 18 ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 19 28 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 26 19 26 21+ , SrcSpan "tests/examples/HappyDoAction.hs" 27 20 27 24+ , SrcSpan "tests/examples/HappyDoAction.hs" 28 20 28 24+ ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 22 26 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 26 22 26 23+ , SrcSpan "tests/examples/HappyDoAction.hs" 26 45 26 46+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 23 26 45+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 23 26 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 23 26 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 23 26 28+ , srcInfoPoints = []+ }+ "off_i")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 29 26 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 29 26 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 29 26 32+ , srcInfoPoints = []+ }+ ">=#")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 26 33 26 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 26 33 26 34+ , SrcSpan "tests/examples/HappyDoAction.hs" 26 44 26 45+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 34 26 44+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 37 26 39+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 34 26 36+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 26+ 34+ 26+ 36+ , srcInfoPoints = []+ }+ 0+ "0"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 26 40 26 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 26+ 40+ 26+ 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 26+ 40+ 26+ 44+ , srcInfoPoints = []+ }+ "Int#")))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 27 25 27 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 27 25 27 26+ , SrcSpan "tests/examples/HappyDoAction.hs" 27 67 27 68+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 27 26 27 67+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 27 26 27 60+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 26 27 54+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 26 27 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 27+ 26+ 27+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 27+ 26+ 27+ 43+ , srcInfoPoints = []+ }+ "indexShortOffAddr")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 44 27 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 27+ 44+ 27+ 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 27+ 44+ 27+ 54+ , srcInfoPoints = []+ }+ "happyCheck"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 55 27 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 55 27 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs"+ 27+ 55+ 27+ 60+ , srcInfoPoints = []+ }+ "off_i"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 27 61 27 64+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 61 27 64+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 61 27 64+ , srcInfoPoints = []+ }+ "==#")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 27 66 27 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 66 27 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 27 66 27 67+ , srcInfoPoints = []+ }+ "i")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 28 25 28 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 28 25 28 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 28 25 28 30+ , srcInfoPoints = []+ }+ "False")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 10 30 67+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 10 29 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 10 29 16+ , srcInfoPoints = []+ }+ "action"))+ (GuardedRhss+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 17 30 67+ , srcInfoPoints = []+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 17 29 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 29 17 29 18+ , SrcSpan "tests/examples/HappyDoAction.hs" 29 29 29 30+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 19 29 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 19 29 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 19 29 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 29 19 29 24+ , srcInfoPoints = []+ }+ "check")))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 31 29 65+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 31 29 59+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 31 29 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 29 31 29 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 29 31 29 48+ , srcInfoPoints = []+ }+ "indexShortOffAddr")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 49 29 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 29 49 29 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 29 49 29 59+ , srcInfoPoints = []+ }+ "happyTable"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 60 29 65+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 29 60 29 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 29 60 29 65+ , srcInfoPoints = []+ }+ "off_i"))))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 17 30 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HappyDoAction.hs" 30 17 30 18+ , SrcSpan "tests/examples/HappyDoAction.hs" 30 29 30 30+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 19 30 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 19 30 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 19 30 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 30 19 30 28+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 31 30 67+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 31 30 64+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 31 30 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 30 31 30 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 30 31 30 48+ , srcInfoPoints = []+ }+ "indexShortOffAddr")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 49 30 64+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 30 49 30 64+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 30 49 30 64+ , srcInfoPoints = []+ }+ "happyDefActions"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 65 30 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HappyDoAction.hs" 30 65 30 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HappyDoAction.hs" 30 65 30 67+ , srcInfoPoints = []+ }+ "st"))))+ ])+ Nothing+ ]))+ ]+ ]+ , [ Comment+ True+ (SrcSpan "tests/examples/HappyDoAction.hs" 7 7 7 20)+ " nothing "+ , Comment+ True+ (SrcSpan "tests/examples/HappyDoAction.hs" 11 22 11 35)+ " nothing "+ , Comment+ True+ (SrcSpan "tests/examples/HappyDoAction.hs" 13 22 13 35)+ " nothing "+ , Comment+ True+ (SrcSpan "tests/examples/HappyDoAction.hs" 15 36 15 49)+ " nothing "+ , Comment+ True+ (SrcSpan "tests/examples/HappyDoAction.hs" 19 22 19 35)+ " nothing "+ ]+ )
+ tests/examples/HappyDoAction.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HappyDoAction.hs.prettyprinter.golden view
@@ -0,0 +1,20 @@+{-# LANGUAGE MagicHash #-}+module HappyDoAction where++foo :: Int#+happyDoAction i tk st+ = case action of+ 0# -> happyFail i tk st+ -1# -> happyAccept i tk st+ n | (n <# (0# :: Int#)) -> (happyReduceArr ! rule) i tk st+ where rule = (I# ((negateInt# ((n +# (1# :: Int#))))))+ n -> happyShift new_state i tk st+ where new_state = (n -# (1# :: Int#))+ where off = indexShortOffAddr happyActOffsets st+ off_i = (off +# i)+ check+ = if (off_i >=# (0# :: Int#)) then+ (indexShortOffAddr happyCheck off_i ==# i) else False+ action+ | check = indexShortOffAddr happyTable off_i+ | otherwise = indexShortOffAddr happyDefActions st
+ tests/examples/HashOperator.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE OverloadedLabels #-}++(#.) :: Int -> Int -> Int+x #. y = x + y++infixr 9 #.
+ tests/examples/HashOperator.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HashOperator.hs.parser.golden view
@@ -0,0 +1,237 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 1 1 1 1+ , SrcSpan "tests/examples/HashOperator.hs" 3 1 3 1+ , SrcSpan "tests/examples/HashOperator.hs" 3 1 3 1+ , SrcSpan "tests/examples/HashOperator.hs" 3 1 3 1+ , SrcSpan "tests/examples/HashOperator.hs" 4 1 4 1+ , SrcSpan "tests/examples/HashOperator.hs" 6 1 6 1+ , SrcSpan "tests/examples/HashOperator.hs" 7 1 7 1+ , SrcSpan "tests/examples/HashOperator.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 1 1 1 13+ , SrcSpan "tests/examples/HashOperator.hs" 1 31 1 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "OverloadedLabels"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 1 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 3 6 3 8 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 1 3 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 3 1 3 2+ , SrcSpan "tests/examples/HashOperator.hs" 3 2 3 4+ , SrcSpan "tests/examples/HashOperator.hs" 3 4 3 5+ ]+ }+ "#."+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 3 13 3 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 3 20 3 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 16 3 19+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 23 3 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 23 3 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 3 23 3 26+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 15+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 15+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "x"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 3 4 5+ , srcInfoPoints = []+ }+ "#.")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 8 4 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 4 8 4 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 1 6 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HashOperator.hs" 6 8 6 9 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 1 6 7+ , srcInfoPoints = []+ })+ (Just 9)+ [ VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 10 6 12+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HashOperator.hs" 6 10 6 12+ , srcInfoPoints = []+ }+ "#.")+ ]+ ]+ , []+ )
+ tests/examples/HashOperator.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HashOperator.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE OverloadedLabels #-}++( #. ) :: Int -> Int -> Int+x #. y = x + y++infixr 9 #.
+ tests/examples/HaskellParser.hs view
@@ -0,0 +1,16 @@+import qualified Language.Haskell.Exts.Annotated as Parser+import qualified Language.Haskell.Exts.Annotated.Syntax as Syn+import qualified Language.Haskell.Exts.Extension as Ext++parse originalFileName input = Parser.parseModuleWithMode parseMode input+ where+ parseMode :: Parser.ParseMode+ parseMode = Parser.defaultParseMode { Parser.parseFilename = originalFileName+ , Parser.extensions =+ Ext.glasgowExts +++ [Ext.ExplicitForall]+ }+main =+ do s <- readFile "Bug.hs"+ let x = parse "Bug.hs" s+ putStrLn (show x)
+ tests/examples/HaskellParser.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaskellParser.hs.parser.golden view
@@ -0,0 +1,809 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 1 17 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 1+ , SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 1+ , SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 1+ , SrcSpan "tests/examples/HaskellParser.hs" 2 1 2 1+ , SrcSpan "tests/examples/HaskellParser.hs" 3 1 3 1+ , SrcSpan "tests/examples/HaskellParser.hs" 5 1 5 1+ , SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 1+ , SrcSpan "tests/examples/HaskellParser.hs" 17 1 17 1+ , SrcSpan "tests/examples/HaskellParser.hs" 17 1 17 1+ ]+ }+ Nothing+ []+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 1 1 1 7+ , SrcSpan "tests/examples/HaskellParser.hs" 1 8 1 17+ , SrcSpan "tests/examples/HaskellParser.hs" 1 50 1 52+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 18 1 49+ , srcInfoPoints = []+ }+ "Language.Haskell.Exts.Annotated"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 1 53 1 59+ , srcInfoPoints = []+ }+ "Parser")+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 2 1 2 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 2 1 2 7+ , SrcSpan "tests/examples/HaskellParser.hs" 2 8 2 17+ , SrcSpan "tests/examples/HaskellParser.hs" 2 57 2 59+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 2 18 2 56+ , srcInfoPoints = []+ }+ "Language.Haskell.Exts.Annotated.Syntax"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 2 60 2 63+ , srcInfoPoints = []+ }+ "Syn")+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 3 1 3 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 3 1 3 7+ , SrcSpan "tests/examples/HaskellParser.hs" 3 8 3 17+ , SrcSpan "tests/examples/HaskellParser.hs" 3 50 3 52+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 3 18 3 49+ , srcInfoPoints = []+ }+ "Language.Haskell.Exts.Extension"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 3 53 3 56+ , srcInfoPoints = []+ }+ "Ext")+ , importSpecs = Nothing+ }+ ]+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 1 12 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 6 5 6 10 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 1 12 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 6 5 6 10 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 1 5 6+ , srcInfoPoints = []+ }+ "parse")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 7 5 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 7 5 23+ , srcInfoPoints = []+ }+ "originalFileName")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 24 5 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 24 5 29+ , srcInfoPoints = []+ }+ "input")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 30 5 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 5 30 5 31 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 74+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 68+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+ , srcInfoPoints = []+ }+ "Parser")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 5 32 5 58+ , srcInfoPoints = []+ }+ "parseModuleWithMode")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 59 5 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 59 5 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 5 59 5 68+ , srcInfoPoints = []+ }+ "parseMode"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 69 5 74+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 69 5 74+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 5 69 5 74+ , srcInfoPoints = []+ }+ "input")))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 7 12 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 7 7 7 7+ , SrcSpan "tests/examples/HaskellParser.hs" 8 7 8 7+ , SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 7 7 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 7 17 7 19 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 7 7 16+ , srcInfoPoints = []+ }+ "parseMode"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+ , srcInfoPoints = []+ }+ "Parser")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 7 20 7 36+ , srcInfoPoints = []+ }+ "ParseMode")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 8 7 12 44+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 8 7 8 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 8 7 8 16+ , srcInfoPoints = []+ }+ "parseMode"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 17 12 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 8 17 8 18 ]+ }+ (RecUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 19 12 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 8 43 8 44+ , SrcSpan "tests/examples/HaskellParser.hs" 9 43 9 44+ , SrcSpan "tests/examples/HaskellParser.hs" 12 43 12 44+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+ , srcInfoPoints = []+ }+ "Parser")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 19 8 42+ , srcInfoPoints = []+ }+ "defaultParseMode")))+ [ FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 84+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 8 66 8 67 ]+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 65+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 65+ , srcInfoPoints = []+ }+ "Parser")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 45 8 65+ , srcInfoPoints = []+ }+ "parseFilename"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 68 8 84+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 68 8 84+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 8 68 8 84+ , srcInfoPoints = []+ }+ "originalFileName")))+ , FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 9 45 11 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 9 63 9 64 ]+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 9 45 9 62+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 9 45 9 62+ , srcInfoPoints = []+ }+ "Parser")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 9 45 9 62+ , srcInfoPoints = []+ }+ "extensions"))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 10 47 11 67+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 10 47 10 62+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 10 47 10 62+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 10 47 10 62+ , srcInfoPoints = []+ }+ "Ext")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 10 47 10 62+ , srcInfoPoints = []+ }+ "glasgowExts")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 10 63 10 65+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 10 63 10 65+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 10 63 10 65+ , srcInfoPoints = []+ }+ "++")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 11 47 11 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/HaskellParser.hs" 11 47 11 48+ , SrcSpan+ "tests/examples/HaskellParser.hs" 11 66 11 67+ ]+ }+ [ Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 11 48 11 66+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 11 48 11 66+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs"+ 11+ 48+ 11+ 66+ , srcInfoPoints = []+ }+ "Ext")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs"+ 11+ 48+ 11+ 66+ , srcInfoPoints = []+ }+ "ExplicitForall"))+ ]))+ ]))+ Nothing+ ]))+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 13 1 16 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 13 1 13 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 13 6 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 13 6 13 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 5 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 14 5 14 7+ , SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 8+ , SrcSpan "tests/examples/HaskellParser.hs" 15 8 15 8+ , SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 8+ , SrcSpan "tests/examples/HaskellParser.hs" 17 1 17 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 14 10 14 12 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HaskellParser.hs" 14 8 14 9+ , srcInfoPoints = []+ }+ "s"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 13 14 21+ , srcInfoPoints = []+ }+ "readFile")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 22 14 30+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 14 22 14 30+ , srcInfoPoints = []+ }+ "Bug.hs"+ "Bug.hs")))+ , LetStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 8 15 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 15 8 15 11 ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 12+ , SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 32+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 12 15 13+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 14 15 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 15 14 15 15 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 16 15 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 16 15 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 16 15 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 15 16 15 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 15 16 15 21+ , srcInfoPoints = []+ }+ "parse")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 22 15 30+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 15 22 15 30+ , srcInfoPoints = []+ }+ "Bug.hs"+ "Bug.hs")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 31 15 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 15 31 15 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/HaskellParser.hs" 15 31 15 32+ , srcInfoPoints = []+ }+ "s")))))+ Nothing+ ])+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 8 16 16+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 17 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HaskellParser.hs" 16 17 16 18+ , SrcSpan "tests/examples/HaskellParser.hs" 16 24 16 25+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 18 16 22+ , srcInfoPoints = []+ }+ "show")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 23 16 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 23 16 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/HaskellParser.hs" 16 23 16 24+ , srcInfoPoints = []+ }+ "x"))))))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/HaskellParser.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HaskellParser.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+import qualified Language.Haskell.Exts.Annotated as Parser+import qualified Language.Haskell.Exts.Annotated.Syntax as Syn+import qualified Language.Haskell.Exts.Extension as Ext+parse originalFileName input+ = Parser.parseModuleWithMode parseMode input+ where parseMode :: Parser.ParseMode+ parseMode+ = Parser.defaultParseMode{Parser.parseFilename = originalFileName,+ Parser.extensions = Ext.glasgowExts ++ [Ext.ExplicitForall]}+main+ = do s <- readFile "Bug.hs"+ let x = parse "Bug.hs" s+ putStrLn (show x)
+ tests/examples/HexPrec.hs view
@@ -0,0 +1,6 @@+module HexPrec where++(%%) :: Int -> Int -> Int+a %% b = 0++infixl 0x02 %%
+ tests/examples/HexPrec.hs.exactprinter.golden view
@@ -0,0 +1,7 @@+module HexPrec where++(%%) :: Int -> Int -> Int+a %% b = 0++infixl 2 %%+
+ tests/examples/HexPrec.hs.parser.golden view
@@ -0,0 +1,191 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HexPrec.hs" 1 1 1 1+ , SrcSpan "tests/examples/HexPrec.hs" 1 1 1 1+ , SrcSpan "tests/examples/HexPrec.hs" 3 1 3 1+ , SrcSpan "tests/examples/HexPrec.hs" 4 1 4 1+ , SrcSpan "tests/examples/HexPrec.hs" 6 1 6 1+ , SrcSpan "tests/examples/HexPrec.hs" 7 1 7 1+ , SrcSpan "tests/examples/HexPrec.hs" 7 1 7 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 1 1 1 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HexPrec.hs" 1 1 1 7+ , SrcSpan "tests/examples/HexPrec.hs" 1 16 1 21+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 1 8 1 15+ , srcInfoPoints = []+ }+ "HexPrec")+ Nothing+ Nothing))+ []+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 1 3 26+ , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 3 6 3 8 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 1 3 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/HexPrec.hs" 3 1 3 2+ , SrcSpan "tests/examples/HexPrec.hs" 3 2 3 4+ , SrcSpan "tests/examples/HexPrec.hs" 3 4 3 5+ ]+ }+ "%%"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 26+ , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 3 13 3 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 26+ , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 3 20 3 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 16 3 19+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 23 3 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 23 3 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 3 23 3 26+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 11+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "a"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 3 4 5+ , srcInfoPoints = []+ }+ "%%")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 8 4 11+ , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 4 8 4 9 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ 0+ "0")))+ Nothing+ ]+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 1 6 15+ , srcInfoPoints = [ SrcSpan "tests/examples/HexPrec.hs" 6 8 6 12 ]+ }+ (AssocLeft+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 1 6 7+ , srcInfoPoints = []+ })+ (Just 2)+ [ VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 13 6 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/HexPrec.hs" 6 13 6 15+ , srcInfoPoints = []+ }+ "%%")+ ]+ ]+ , []+ )
+ tests/examples/HexPrec.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/HexPrec.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module HexPrec where++(%%) :: Int -> Int -> Int+a %% b = 0++infixl 2 %%
+ tests/examples/IfThenElseLayout.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE DoAndIfThenElse #-}+module IfThenElseLayout where++askCardsForExchange :: Hand -> IO [Card]+askCardsForExchange h = do+ putStrLn "Wich card do you want to exchange? (Max. 3)"+ response <- getLine+ if length (readCards response) > 3 || not (all (flip elem h) h) then+ askCardsForExchange h+ else+ return (readCards response)+
+ tests/examples/IfThenElseLayout.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IfThenElseLayout.hs.parser.golden view
@@ -0,0 +1,866 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 13 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 1 1+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 1+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 1+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 4 1 4 1+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 5 1+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 13 1 13 1+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 13 1 13 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 2 1 2 7+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 2 25 2 30+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 2 8 2 24+ , srcInfoPoints = []+ }+ "IfThenElseLayout")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 1 1 1 13+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "DoAndIfThenElse"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 1 4 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 21 4 23 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 1 4 20+ , srcInfoPoints = []+ }+ "askCardsForExchange"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 29 4 31 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 24 4 28+ , srcInfoPoints = []+ }+ "Hand")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 32 4 34+ , srcInfoPoints = []+ }+ "IO")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 35 4 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 35 4 36+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 4 40 4 41+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 36 4 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 36 4 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 4 36 4 40+ , srcInfoPoints = []+ }+ "Card"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 11 61+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 11 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 1 5 20+ , srcInfoPoints = []+ }+ "askCardsForExchange")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ "h")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 23 11 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 23 5 24 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 25 11 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 5 25 5 27+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 26+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 26+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 8 26+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 13 1 13 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 80+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 80+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 6 26 6 34+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 6 35 6 80+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 6 35 6 80+ , srcInfoPoints = []+ }+ "Wich card do you want to exchange? (Max. 3)"+ "Wich card do you want to exchange? (Max. 3)")))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 35 7 37 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 26 7 34+ , srcInfoPoints = []+ }+ "response"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 38 7 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 38 7 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 7 38 7 45+ , srcInfoPoints = []+ }+ "getLine")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 11 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 8 28+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 90 8 94+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 26+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 30+ ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 11 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 26 8 28+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 90 8 94+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 26+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 10 26 10 30+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 89+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 60+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 56+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 29 8 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 29 8 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 29 8 35+ , srcInfoPoints = []+ }+ "length")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 36 8 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 36 8 37+ , SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 55 8 56+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 37 8 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 37 8 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 37+ 8+ 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 37+ 8+ 46+ , srcInfoPoints = []+ }+ "readCards")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 47 8 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 47+ 8+ 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 47+ 8+ 55+ , srcInfoPoints = []+ }+ "response"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 57 8 58+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 57 8 58+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 57 8 58+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 59 8 60+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 59 8 60+ , srcInfoPoints = []+ }+ 3+ "3")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 61 8 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 61 8 63+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 61 8 63+ , srcInfoPoints = []+ }+ "||")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 64 8 89+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 64 8 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 64 8 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 64 8 67+ , srcInfoPoints = []+ }+ "not")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 68 8 89+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 68 8 69+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 8 88 8 89+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 8 69 8 88+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 69 8 86+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 69 8 72+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 69+ 8+ 72+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 69+ 8+ 72+ , srcInfoPoints = []+ }+ "all")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 73 8 86+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 73+ 8+ 74+ , SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 85+ 8+ 86+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 74+ 8+ 85+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 74+ 8+ 83+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 74+ 8+ 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 74+ 8+ 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 74+ 8+ 78+ , srcInfoPoints = []+ }+ "flip")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 79+ 8+ 83+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 79+ 8+ 83+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 79+ 8+ 83+ , srcInfoPoints = []+ }+ "elem"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 84+ 8+ 85+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 84+ 8+ 85+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 84+ 8+ 85+ , srcInfoPoints = []+ }+ "h"))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 87 8 88+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 8 87 8 88+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 8+ 87+ 8+ 88+ , srcInfoPoints = []+ }+ "h")))))))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 9 34 9 53+ , srcInfoPoints = []+ }+ "askCardsForExchange")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 9 54 9 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 9 54 9 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 9 54 9 55+ , srcInfoPoints = []+ }+ "h"))))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 11 34 11 61+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 11 34 11 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 11 34 11 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 11 34 11 40+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 11 41 11 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IfThenElseLayout.hs" 11 41 11 42+ , SrcSpan "tests/examples/IfThenElseLayout.hs" 11 60 11 61+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IfThenElseLayout.hs" 11 42 11 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 11 42 11 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 11 42 11 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 11+ 42+ 11+ 51+ , srcInfoPoints = []+ }+ "readCards")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 11 52 11 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs" 11 52 11 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/IfThenElseLayout.hs"+ 11+ 52+ 11+ 60+ , srcInfoPoints = []+ }+ "response")))))))+ ]))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/IfThenElseLayout.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IfThenElseLayout.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE DoAndIfThenElse #-}+module IfThenElseLayout where++askCardsForExchange :: Hand -> IO [Card]+askCardsForExchange h+ = do putStrLn "Wich card do you want to exchange? (Max. 3)"+ response <- getLine+ if length (readCards response) > 3 || not (all (flip elem h) h)+ then askCardsForExchange h else return (readCards response)
+ tests/examples/IllDataTypeDecl.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module IllDataTypeDecl where++data (f :+: g) p = L
+ tests/examples/IllDataTypeDecl.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IllDataTypeDecl.hs.parser.golden view
@@ -0,0 +1,162 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 1 1+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 1+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 1+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 1 4 1+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 5 1 5 1+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 1 2 7+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 24 2 29+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 2 8 2 23+ , srcInfoPoints = []+ }+ "IllDataTypeDecl")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 1 1 13+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 18 4 19 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 1 4 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 6 4 17+ , srcInfoPoints = []+ }+ (DHParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 6 4 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 6 4 7+ , SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 14 4 15+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 14+ , srcInfoPoints = []+ }+ (DHInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 14+ , srcInfoPoints = []+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 7 4 8+ , srcInfoPoints = []+ }+ "f"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ ":+:"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "g"))))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ "p")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 20 4 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 20 4 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IllDataTypeDecl.hs" 4 20 4 21+ , srcInfoPoints = []+ }+ "L")+ [])+ ]+ []+ ]+ , []+ )
+ tests/examples/IllDataTypeDecl.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IllDataTypeDecl.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators #-}+module IllDataTypeDecl where++data (f :+: g) p = L
+ tests/examples/ImplicitWhereBlocks.hs view
@@ -0,0 +1,6 @@+foo = x where x = 1+ z = 19+++y = 2+
+ tests/examples/ImplicitWhereBlocks.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImplicitWhereBlocks.hs.parser.golden view
@@ -0,0 +1,201 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 1+ , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 1+ , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 1+ , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 1+ , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 7 1 7 1+ , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 7 1 7 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 2 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 9 1 14 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 1 1 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 5 1 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 5 1 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ "x"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 2 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 15+ , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 15+ , SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 15 1 16+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 17 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 17 1 18 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 19 1 20+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 1 19 1 20+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ "z"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 17 2 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 17 2 18 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 19 2 21+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 2 19 2 21+ , srcInfoPoints = []+ }+ 19+ "19")))+ Nothing+ ]))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 6+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ "y"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 3 5 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 3 5 4 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImplicitWhereBlocks.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ 2+ "2")))+ Nothing+ ]+ , []+ )
+ tests/examples/ImplicitWhereBlocks.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImplicitWhereBlocks.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+foo = x+ where x = 1+ z = 19+y = 2
+ tests/examples/ImportQualifiedPost.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ImportQualifiedPost #-}+module ImportQualifiedPost where++import Data.List qualified as L
+ tests/examples/ImportQualifiedPost.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImportQualifiedPost.hs.parser.golden view
@@ -0,0 +1,89 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 7+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 28 2 33+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 8 2 27+ , srcInfoPoints = []+ }+ "ImportQualifiedPost")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 13+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 34 1 37+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 14 1 33+ , srcInfoPoints = []+ }+ "ImportQualifiedPost"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 7+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 18 4 27+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 28 4 30+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 8 4 17+ , srcInfoPoints = []+ }+ "Data.List"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 31 4 32+ , srcInfoPoints = []+ }+ "L")+ , importSpecs = Nothing+ }+ ]+ []+ , []+ )
+ tests/examples/ImportQualifiedPost.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImportQualifiedPost.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE ImportQualifiedPost #-}+module ImportQualifiedPost where+import qualified Data.List as L
+ tests/examples/IndentedModule1.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+ module Main where+main = putStr "foo"
+ tests/examples/IndentedModule1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule1.hs.parser.golden view
@@ -0,0 +1,117 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedModule1.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule1.hs" 1 1 1 1+ , SrcSpan "tests/examples/IndentedModule1.hs" 2 2 2 2+ , SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 1+ , SrcSpan "tests/examples/IndentedModule1.hs" 4 1 4 1+ , SrcSpan "tests/examples/IndentedModule1.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 2 2 2 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule1.hs" 2 2 2 8+ , SrcSpan "tests/examples/IndentedModule1.hs" 2 14 2 19+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 2 9 2 13+ , srcInfoPoints = []+ }+ "Main")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule1.hs" 1 1 1 13+ , SrcSpan "tests/examples/IndentedModule1.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "NamedFieldPuns"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedModule1.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 6 3 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule1.hs" 3 6 3 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ "putStr")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 15 3 20+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule1.hs" 3 15 3 20+ , srcInfoPoints = []+ }+ "foo"+ "foo"))))+ Nothing+ ]+ , []+ )
+ tests/examples/IndentedModule1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule1.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+module Main where+main = putStr "foo"
+ tests/examples/IndentedModule2.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+{- -} module Main where+main = putStr "foo"
+ tests/examples/IndentedModule2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule2.hs.parser.golden view
@@ -0,0 +1,119 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedModule2.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule2.hs" 1 1 1 1+ , SrcSpan "tests/examples/IndentedModule2.hs" 2 7 2 7+ , SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 1+ , SrcSpan "tests/examples/IndentedModule2.hs" 4 1 4 1+ , SrcSpan "tests/examples/IndentedModule2.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 2 7 2 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule2.hs" 2 7 2 13+ , SrcSpan "tests/examples/IndentedModule2.hs" 2 19 2 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 2 14 2 18+ , srcInfoPoints = []+ }+ "Main")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule2.hs" 1 1 1 13+ , SrcSpan "tests/examples/IndentedModule2.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "NamedFieldPuns"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedModule2.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 6 3 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedModule2.hs" 3 6 3 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ "putStr")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 15 3 20+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedModule2.hs" 3 15 3 20+ , srcInfoPoints = []+ }+ "foo"+ "foo"))))+ Nothing+ ]+ , [ Comment+ True (SrcSpan "tests/examples/IndentedModule2.hs" 2 1 2 6) " "+ ]+ )
+ tests/examples/IndentedModule2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedModule2.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+module Main where+main = putStr "foo"
+ tests/examples/IndentedTopLevelWhere.hs view
@@ -0,0 +1,7 @@+module IndentedTopLevelWhere where++ foo :: Int+ foo = 5 where++ bar :: Int+ bar = 3
+ tests/examples/IndentedTopLevelWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedTopLevelWhere.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1)+ "Parse error: virtual }"
+ tests/examples/IndentedTopLevelWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedTopLevelWhere.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedTopLevelWhere.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedWhere.hs view
@@ -0,0 +1,4 @@++f x = g+ where g :: Int+ g = 0
+ tests/examples/IndentedWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedWhere.hs.parser.golden view
@@ -0,0 +1,148 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 1+ , SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 1+ , SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 1+ , SrcSpan "tests/examples/IndentedWhere.hs" 5 1 5 1+ , SrcSpan "tests/examples/IndentedWhere.hs" 5 1 5 1+ ]+ }+ Nothing+ []+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedWhere.hs" 3 3 3 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedWhere.hs" 3 3 3 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 3 2 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 3 2 4+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 5 2 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedWhere.hs" 2 5 2 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 7 2 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 7 2 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 2 7 2 8+ , srcInfoPoints = []+ }+ "g"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 9 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedWhere.hs" 3 9 3 9+ , SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 9+ , SrcSpan "tests/examples/IndentedWhere.hs" 5 1 5 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 9 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedWhere.hs" 3 11 3 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedWhere.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ "Int")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ "g"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 11 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/IndentedWhere.hs" 4 11 4 12 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/IndentedWhere.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/IndentedWhere.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ 0+ "0")))+ Nothing+ ]))+ ]+ ]+ , []+ )
+ tests/examples/IndentedWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/IndentedWhere.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+f x = g+ where g :: Int+ g = 0
+ tests/examples/IndentedWhereBlock.hs view
@@ -0,0 +1,7 @@+module Graph where++ countryLookUp :: String -> Graph -> Maybe Int+ countryLookUp country graph = indexOf country graph where++ indexOf :: String -> Graph -> Maybe Int+ indexOf _ Empty = Nothing
+ tests/examples/IndentedWhereBlock.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedWhereBlock.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1)+ "Parse error: virtual }"
+ tests/examples/IndentedWhereBlock.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1) "Parse error: virtual }"
+ tests/examples/IndentedWhereBlock.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/IndentedWhereBlock.hs" 8 1) "Parse error: virtual }"
+ tests/examples/InfixApp.hs view
@@ -0,0 +1,2 @@+f = -w/2+
+ tests/examples/InfixApp.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixApp.hs.parser.golden view
@@ -0,0 +1,94 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixApp.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixApp.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixApp.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixApp.hs" 3 1 3 1+ , SrcSpan "tests/examples/InfixApp.hs" 3 1 3 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 1 9+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 1 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 1 1 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 3 1 9+ , srcInfoPoints = [ SrcSpan "tests/examples/InfixApp.hs" 1 3 1 4 ]+ }+ (NegApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 5 1 9+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ "w")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 7 1 8+ , srcInfoPoints = []+ }+ "/")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixApp.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ 2+ "2")))))+ Nothing+ ]+ , []+ )
+ tests/examples/InfixApp.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixApp.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+f = -w / 2
+ tests/examples/InfixBang.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE BangPatterns #-}++(!) arr i = arr i
+ tests/examples/InfixBang.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixBang.hs.parser.golden view
@@ -0,0 +1,122 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixBang.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixBang.hs" 3 1 3 1+ , SrcSpan "tests/examples/InfixBang.hs" 3 1 3 1+ , SrcSpan "tests/examples/InfixBang.hs" 3 1 3 1+ , SrcSpan "tests/examples/InfixBang.hs" 4 1 4 1+ , SrcSpan "tests/examples/InfixBang.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixBang.hs" 1 1 1 13+ , SrcSpan "tests/examples/InfixBang.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "BangPatterns"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 1 3 18+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 1 3 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixBang.hs" 3 1 3 2+ , SrcSpan "tests/examples/InfixBang.hs" 3 2 3 3+ , SrcSpan "tests/examples/InfixBang.hs" 3 3 3 4+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 2 3 3+ , srcInfoPoints = []+ }+ "!")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 5 3 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 5 3 8+ , srcInfoPoints = []+ }+ "arr")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ "i")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 11 3 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixBang.hs" 3 11 3 12 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 13 3 16+ , srcInfoPoints = []+ }+ "arr")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixBang.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/InfixBang.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixBang.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE BangPatterns #-}+(!) arr i = arr i
+ tests/examples/InfixFunBind.hs view
@@ -0,0 +1,1 @@+left `first` _ = left
+ tests/examples/InfixFunBind.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixFunBind.hs.parser.golden view
@@ -0,0 +1,79 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixFunBind.hs" 2 1 2 1+ , SrcSpan "tests/examples/InfixFunBind.hs" 2 1 2 1+ ]+ }+ Nothing+ []+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 22+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ "left"))+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 7 1 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixFunBind.hs" 1 6 1 7+ , SrcSpan "tests/examples/InfixFunBind.hs" 1 7 1 12+ , SrcSpan "tests/examples/InfixFunBind.hs" 1 12 1 13+ ]+ }+ "first")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 14 1 15+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 16 1 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixFunBind.hs" 1 16 1 17 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 18 1 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 18 1 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixFunBind.hs" 1 18 1 22+ , srcInfoPoints = []+ }+ "left"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/InfixFunBind.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixFunBind.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+left `first` _ = left
+ tests/examples/InfixParser.hs view
@@ -0,0 +1,6 @@+module InfixParser where++type Parse a b = [a] -> [(b, [a])]++(<|>) :: Parse a b -> Parse a b -> Parse a b+(p1 <|> p2) i = p1 i ++ p2 i
+ tests/examples/InfixParser.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixParser.hs.parser.golden view
@@ -0,0 +1,490 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixParser.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixParser.hs" 3 1 3 1+ , SrcSpan "tests/examples/InfixParser.hs" 5 1 5 1+ , SrcSpan "tests/examples/InfixParser.hs" 6 1 6 1+ , SrcSpan "tests/examples/InfixParser.hs" 7 1 7 1+ , SrcSpan "tests/examples/InfixParser.hs" 7 1 7 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 1 1 1 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 1 1 1 7+ , SrcSpan "tests/examples/InfixParser.hs" 1 20 1 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 1 8 1 19+ , srcInfoPoints = []+ }+ "InfixParser")+ Nothing+ Nothing))+ []+ []+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 1 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 3 1 3 5+ , SrcSpan "tests/examples/InfixParser.hs" 3 16 3 17+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 15+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 6 3 11+ , srcInfoPoints = []+ }+ "Parse"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ "b")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 18 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 3 22 3 24 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 18 3 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 3 18 3 19+ , SrcSpan "tests/examples/InfixParser.hs" 3 20 3 21+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ "a")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 25 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 3 25 3 26+ , SrcSpan "tests/examples/InfixParser.hs" 3 34 3 35+ ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 26 3 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 3 26 3 27+ , SrcSpan "tests/examples/InfixParser.hs" 3 28 3 29+ , SrcSpan "tests/examples/InfixParser.hs" 3 33 3 34+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 27 3 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 27 3 28+ , srcInfoPoints = []+ }+ "b")+ , TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 30 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 3 30 3 31+ , SrcSpan "tests/examples/InfixParser.hs" 3 32 3 33+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 31 3 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 3 31 3 32+ , srcInfoPoints = []+ }+ "a"))+ ])))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 1 5 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 5 7 5 9 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 1 5 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 5 1 5 2+ , SrcSpan "tests/examples/InfixParser.hs" 5 2 5 5+ , SrcSpan "tests/examples/InfixParser.hs" 5 5 5 6+ ]+ }+ "<|>"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 5 20 5 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 19+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 17+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 10 5 15+ , srcInfoPoints = []+ }+ "Parse")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ "b")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 5 33 5 35 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 23 5 28+ , srcInfoPoints = []+ }+ "Parse")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 29 5 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 29 5 30+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 45+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 43+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 36 5 41+ , srcInfoPoints = []+ }+ "Parse")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 42 5 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 42 5 43+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 44 5 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 5 44 5 45+ , srcInfoPoints = []+ }+ "b")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 1 6 29+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 1 6 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 6 1 6 2+ , SrcSpan "tests/examples/InfixParser.hs" 6 11 6 12+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 2 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 2 6 4+ , srcInfoPoints = []+ }+ "p1"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 5 6 8+ , srcInfoPoints = []+ }+ "<|>")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ "p2")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ "i")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 15 6 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixParser.hs" 6 15 6 16 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 29+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 17 6 19+ , srcInfoPoints = []+ }+ "p1")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 20 6 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 20 6 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 20 6 21+ , srcInfoPoints = []+ }+ "i"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 22 6 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 22 6 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 22 6 24+ , srcInfoPoints = []+ }+ "++")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 25 6 27+ , srcInfoPoints = []+ }+ "p2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 28 6 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 28 6 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixParser.hs" 6 28 6 29+ , srcInfoPoints = []+ }+ "i"))))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/InfixParser.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixParser.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module InfixParser where++type Parse a b = [a] -> [(b, [a])]++(<|>) :: Parse a b -> Parse a b -> Parse a b+(p1 <|> p2) i = p1 i ++ p2 i
+ tests/examples/InfixTypeMinus.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE DataKinds, KindSignatures, TypeOperators, GADTs #-}+module Foo where++-- Test cases+data Vec (n :: Nat) where { VCons :: (m ~ (n-1)) => Double -> Vec m -> Vec n }+data Vec (n :: Nat) where { VCons :: ((n-1) ~ m) => Double -> Vec m -> Vec n }+data Vec (n :: Nat) where { VCons :: ((m+1) ~ n) => Double -> Vec m -> Vec n }+data Vec (n :: Nat) where { VCons :: (n ~ (m+1)) => Double -> Vec m -> Vec n }
+ tests/examples/InfixTypeMinus.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixTypeMinus.hs.parser.golden view
@@ -0,0 +1,1346 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 1 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 1 5 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 1 6 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 1 7 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 1 8 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 9 1 9 1+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 2 1 2 7+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 2 12 2 17+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 2 8 2 11+ , srcInfoPoints = []+ }+ "Foo")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 1 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 1 1 13+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 23 1 24+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 39 1 40+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 54 1 55+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 1 62 1 65+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "DataKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 25 1 39+ , srcInfoPoints = []+ }+ "KindSignatures"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 41 1 54+ , srcInfoPoints = []+ }+ "TypeOperators"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 1 56 1 61+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 1 5 79+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 21 5 26+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 27 5 28+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 78 5 79+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 1 5 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 6 5 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ "Vec"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 10 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 10 5 11+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 13 5 15+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 19 5 20+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "n")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ "Nat")))))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 29 5 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 35 5 37 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 29 5 34+ , srcInfoPoints = []+ }+ "VCons")+ Nothing+ Nothing+ Nothing+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 77+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 48 5 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 50 5 52+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 38 5 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 48 5 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 50 5 52+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40+ , srcInfoPoints = []+ }+ "m"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 44+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 47 5 48+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 47+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 5 44 5 45+ , srcInfoPoints = []+ }+ "n"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 45 5 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 5 45 5 46+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 5 45 5 46+ , srcInfoPoints = []+ }+ "-")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 46 5 47+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 5 46 5 47+ , srcInfoPoints = []+ }+ 1+ "1")))))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 60 5 62 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 53 5 59+ , srcInfoPoints = []+ }+ "Double")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 69 5 71 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 63 5 66+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 67 5 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 67 5 68+ , srcInfoPoints = []+ }+ "m")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 77+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 75+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 72 5 75+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 76 5 77+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 76 5 77+ , srcInfoPoints = []+ }+ "n"))))))+ ]+ []+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 1 6 79+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 21 6 26+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 27 6 28+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 78 6 79+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 1 6 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 6 6 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 6 6 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 6 6 6 9+ , srcInfoPoints = []+ }+ "Vec"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 10 6 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 10 6 11+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 13 6 15+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 19 6 20+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ "n")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ "Nat")))))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 29 6 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 35 6 37 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 29 6 34+ , srcInfoPoints = []+ }+ "VCons")+ Nothing+ Nothing+ Nothing+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 77+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 48 6 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 50 6 52+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 38 6 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 48 6 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 50 6 52+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 40+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 43 6 44+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 43+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 6 40 6 41+ , srcInfoPoints = []+ }+ "n"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 41 6 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 6 41 6 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 6 41 6 42+ , srcInfoPoints = []+ }+ "-")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 42 6 43+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 6 42 6 43+ , srcInfoPoints = []+ }+ 1+ "1"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48+ , srcInfoPoints = []+ }+ "m")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 60 6 62 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 53 6 59+ , srcInfoPoints = []+ }+ "Double")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 69 6 71 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 63 6 66+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 67 6 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 67 6 68+ , srcInfoPoints = []+ }+ "m")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 77+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 75+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 72 6 75+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 76 6 77+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 76 6 77+ , srcInfoPoints = []+ }+ "n"))))))+ ]+ []+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 1 7 79+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 21 7 26+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 27 7 28+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 78 7 79+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 1 7 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 6 7 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 6 7 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 7 6 7 9+ , srcInfoPoints = []+ }+ "Vec"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 10 7 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 10 7 11+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 13 7 15+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 19 7 20+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 11 7 12+ , srcInfoPoints = []+ }+ "n")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 16 7 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 16 7 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 16 7 19+ , srcInfoPoints = []+ }+ "Nat")))))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 29 7 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 35 7 37 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 29 7 34+ , srcInfoPoints = []+ }+ "VCons")+ Nothing+ Nothing+ Nothing+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 77+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 48 7 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 50 7 52+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 38 7 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 48 7 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 50 7 52+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 40+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 43 7 44+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 43+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 7 40 7 41+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 41 7 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 7 41 7 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 7 41 7 42+ , srcInfoPoints = []+ }+ "+")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 42 7 43+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 7 42 7 43+ , srcInfoPoints = []+ }+ 1+ "1"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48+ , srcInfoPoints = []+ }+ "n")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 60 7 62 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 53 7 59+ , srcInfoPoints = []+ }+ "Double")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 69 7 71 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 63 7 66+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 67 7 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 67 7 68+ , srcInfoPoints = []+ }+ "m")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 77+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 75+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 72 7 75+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 76 7 77+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 76 7 77+ , srcInfoPoints = []+ }+ "n"))))))+ ]+ []+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 1 8 79+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 21 8 26+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 27 8 28+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 78 8 79+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 1 8 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 6 8 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InfixTypeMinus.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ "Vec"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 10 8 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 10 8 11+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 13 8 15+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 19 8 20+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 11 8 12+ , srcInfoPoints = []+ }+ "n")+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 16 8 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 16 8 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 16 8 19+ , srcInfoPoints = []+ }+ "Nat")))))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 29 8 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 35 8 37 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 29 8 34+ , srcInfoPoints = []+ }+ "VCons")+ Nothing+ Nothing+ Nothing+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 77+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 48 8 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 50 8 52+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 38 8 39+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 48 8 49+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 50 8 52+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40+ , srcInfoPoints = []+ }+ "n"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 44+ , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 47 8 48+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 47+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 8 44 8 45+ , srcInfoPoints = []+ }+ "m"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 45 8 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 8 45 8 46+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 8 45 8 46+ , srcInfoPoints = []+ }+ "+")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 46 8 47+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InfixTypeMinus.hs" 8 46 8 47+ , srcInfoPoints = []+ }+ 1+ "1")))))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 60 8 62 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 53 8 59+ , srcInfoPoints = []+ }+ "Double")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 69 8 71 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 63 8 66+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 67 8 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 67 8 68+ , srcInfoPoints = []+ }+ "m")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 77+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 75+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 72 8 75+ , srcInfoPoints = []+ }+ "Vec")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 76 8 77+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 76 8 77+ , srcInfoPoints = []+ }+ "n"))))))+ ]+ []+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/InfixTypeMinus.hs" 4 1 4 14)+ " Test cases"+ ]+ )
+ tests/examples/InfixTypeMinus.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InfixTypeMinus.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE DataKinds, KindSignatures, TypeOperators, GADTs #-}+module Foo where++data Vec (n :: Nat) where+ VCons :: (m ~ (n - 1)) => Double -> Vec m -> Vec n++data Vec (n :: Nat) where+ VCons :: ((n - 1) ~ m) => Double -> Vec m -> Vec n++data Vec (n :: Nat) where+ VCons :: ((m + 1) ~ n) => Double -> Vec m -> Vec n++data Vec (n :: Nat) where+ VCons :: (n ~ (m + 1)) => Double -> Vec m -> Vec n
+ tests/examples/InjectiveTypeFamilies.hs view
@@ -0,0 +1,255 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE NoMonomorphismRestriction #-}++module T6018 where++import T6018a -- defines G, identical to F++type family F a b c = (result :: k) | result -> a b c+type instance F Int Char Bool = Bool+type instance F Char Bool Int = Int+type instance F Bool Int Char = Char+++type instance G Bool Int Char = Char++type family I (a :: k) b (c :: k) = r | r -> a b+type instance I Int Char Bool = Bool+type instance I Int Char Int = Bool+type instance I Bool Int Int = Int++-- this is injective - a type variable introduced in the LHS is not mentioned on+-- RHS but we don't claim injectivity in that argument.+type family J a (b :: k) = r | r -> a+type instance J Int b = Char++type MaybeSyn a = Maybe a+newtype MaybeNew a = MaybeNew (Maybe a)++-- make sure we look through type synonyms...+type family K a = r | r -> a+type instance K a = MaybeSyn a++-- .. but not newtypes+type family M a = r | r -> a+type instance M (Maybe a) = MaybeSyn a+type instance M (MaybeNew a) = MaybeNew a++-- Closed type families++-- these are simple conversions from open type families. They should behave the+-- same+type family FClosed a b c = result | result -> a b c where+ FClosed Int Char Bool = Bool+ FClosed Char Bool Int = Int+ FClosed Bool Int Char = Char++type family IClosed (a :: *) (b :: *) (c :: *) = r | r -> a b where+ IClosed Int Char Bool = Bool+ IClosed Int Char Int = Bool+ IClosed Bool Int Int = Int++type family JClosed a (b :: k) = r | r -> a where+ JClosed Int b = Char++type family KClosed a = r | r -> a where+ KClosed a = MaybeSyn a++-- Here the last equation might return both Int and Char but we have to+-- recognize that it is not possible due to equation overlap+type family Bak a = r | r -> a where+ Bak Int = Char+ Bak Char = Int+ Bak a = a++-- This is similar, except that the last equation contains concrete type. Since+-- it is overlapped it should be dropped with a warning+type family Foo a = r | r -> a where+ Foo Int = Bool+ Foo Bool = Int+ Foo Bool = Bool++-- this one was tricky in the early implementation of injectivity. Now it is+-- identical to the above but we still keep it as a regression test.+type family Bar a = r | r -> a where+ Bar Int = Bool+ Bar Bool = Int+ Bar Bool = Char++-- Now let's use declared type families. All the below definitions should work++-- No ambiguity for any of the arguments - all are injective+f :: F a b c -> F a b c+f x = x++-- From 1st instance of F: a ~ Int, b ~ Char, c ~ Bool+fapp :: Bool+fapp = f True++-- now the closed variant of F+fc :: FClosed a b c -> FClosed a b c+fc x = x++fcapp :: Bool+fcapp = fc True++-- The last argument is not injective so it must be instantiated+i :: I a b Int -> I a b Int+i x = x++-- From 1st instance of I: a ~ Int, b ~ Char+iapp :: Bool+iapp = i True++-- again, closed variant of I+ic :: IClosed a b Int -> IClosed a b Int+ic x = x++icapp :: Bool+icapp = ic True++-- Now we have to test weird closed type families:+bak :: Bak a -> Bak a+bak x = x++bakapp1 :: Char+bakapp1 = bak 'c'++bakapp2 :: Double+bakapp2 = bak 1.0++bakapp3 :: ()+bakapp3 = bak ()++foo :: Foo a -> Foo a+foo x = x++fooapp1 :: Bool+fooapp1 = foo True++bar :: Bar a -> Bar a+bar x = x++barapp1 :: Bool+barapp1 = bar True++barapp2 :: Int+barapp2 = bar 1++-- Declarations below test more liberal RHSs of injectivity annotations:+-- permiting variables to appear in different order than the one in which they+-- were declared.+type family H a b = r | r -> b a+type family Hc a b = r | r -> b a where+ Hc a b = a b+class Hcl a b where+ type Ht a b = r | r -> b a++-- repeated tyvars in the RHS of injectivity annotation: no warnings or errors+-- (consistent with behaviour for functional dependencies)+type family Jx a b = r | r -> a a+type family Jcx a b = r | r -> a a where+ Jcx a b = a b+class Jcl a b where+ type Jt a b = r | r -> a a++type family Kx a b = r | r -> a b b+type family Kcx a b = r | r -> a b b where+ Kcx a b = a b+class Kcl a b where+ type Kt a b = r | r -> a b b++-- Declaring kind injectivity. Here we only claim that knowing the RHS+-- determines the LHS kind but not the type.+type family L (a :: k1) = (r :: k2) | r -> k1 where+ L 'True = Int+ L 'False = Int+ L Maybe = 3+ L IO = 3++data KProxy (a :: *) = KProxy+type family KP (kproxy :: KProxy k) = r | r -> k+type instance KP ('KProxy :: KProxy Bool) = Int+type instance KP ('KProxy :: KProxy *) = Char++kproxy_id :: KP ('KProxy :: KProxy k) -> KP ('KProxy :: KProxy k)+kproxy_id x = x++kproxy_id_use = kproxy_id 'a'++-- Now test some awkward cases from The Injectivity Paper. All should be+-- accepted.+type family Gx a+type family Hx a+type family Gi a = r | r -> a+type instance Gi Int = Char+type family Hi a = r | r -> a++type family F2 a = r | r -> a+type instance F2 [a] = [Gi a]+type instance F2 (Maybe a) = Hi a -> Int++type family F4 a = r | r -> a+type instance F4 [a] = (Gx a, a, a, a)+type instance F4 (Maybe a) = (Hx a, a, Int, Bool)++type family G2 a b = r | r -> a b+type instance G2 a Bool = (a, a)+type instance G2 Bool b = (b, Bool)++type family G6 a = r | r -> a+type instance G6 [a] = [Gi a]+type instance G6 Bool = Int++g6_id :: G6 a -> G6 a+g6_id x = x++g6_use :: [Char]+g6_use = g6_id "foo"++-- A sole exception to "bare variables in the RHS" rule+type family Id (a :: k) = (result :: k) | result -> a+type instance Id a = a++-- This makes sure that over-saturated type family applications at the top-level+-- are accepted.+type family IdProxy (a :: k) b = r | r -> a+type instance IdProxy a b = (Id a) b++-- make sure we look through type synonyms properly+type IdSyn a = Id a+type family IdProxySyn (a :: k) b = r | r -> a+type instance IdProxySyn a b = (IdSyn a) b++-- this has bare variable in the RHS but all LHS varaiables are also bare so it+-- should be accepted+type family Fa (a :: k) (b :: k) = (r :: k2) | r -> k+type instance Fa a b = a++-- Taken from #9587. This exposed a bug in the solver.+type family Arr (repr :: * -> *) (a :: *) (b :: *) = (r :: *) | r -> repr a b++class ESymantics repr where+ int :: Int -> repr Int+ add :: repr Int -> repr Int -> repr Int++ lam :: (repr a -> repr b) -> repr (Arr repr a b)+ app :: repr (Arr repr a b) -> repr a -> repr b++te4 = let c3 = lam (\f -> lam (\x -> f `app` (f `app` (f `app` x))))+ in (c3 `app` (lam (\x -> x `add` int 14))) `app` (int 0)++-- This used to fail during development+class Manifold' a where+ type Base a = r | r -> a+ project :: a -> Base a+ unproject :: Base a -> a++id' :: forall a. ( Manifold' a ) => Base a -> Base a+id' = project . unproject
+ tests/examples/InjectiveTypeFamilies.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InjectiveTypeFamilies.hs.parser.golden view
@@ -0,0 +1,15848 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 256 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 1 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 1 2 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 1 3 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 1 4 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 1 5 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 1 6 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 1 7 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 1 8 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 1 12 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 1 14 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 1 15 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 1 16 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 1 17 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 1 20 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 1 22 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 1 23 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 1 24 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 1 25 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 1 29 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 1 30 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 1 32 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 1 33 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 1 36 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 1 37 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 1 40 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 1 41 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 1 42 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 1 48 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 1 53 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 1 58 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 1 61 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 1 66 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 1 73 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 1 80 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 1 88 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 1 92 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 1 96 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 1 99 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 1 103 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 1 107 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 1 111 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 1 114 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 1 118 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 1 121 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 1 124 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 1 127 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 1 130 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 1 133 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 1 136 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 1 139 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 1 142 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 1 148 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 1 149 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 1 151 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 1 157 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 1 159 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 1 163 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 1 165 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 1 176 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 1 177 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 1 178 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 1 179 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 1 181 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 1 188 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 1 189 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 1 190 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 1 191 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 1 192 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 1 194 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 1 195 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 1 196 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 1 198 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 1 199 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 1 200 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 1 202 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 1 203 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 1 204 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 1 206 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 1 207 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 1 208 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 1 210 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 1 213 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 1 217 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 1 218 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 1 222 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 1 223 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 1 226 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 1 227 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 1 228 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 1 232 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 1 233 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 1 236 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 1 238 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 1 249 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 256 1 256 1+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 256 1 256 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 1 10 7+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 14 10 19+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 10 8 10 13+ , srcInfoPoints = []+ }+ "T6018")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 1 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 1 1 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 40 1 43+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 1 2 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 1 2 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 40 2 43+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 2 14 2 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 1 3 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 1 3 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 40 3 43+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 3 14 3 23+ , srcInfoPoints = []+ }+ "PolyKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 1 4 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 1 4 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 41 4 44+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 4 14 4 36+ , srcInfoPoints = []+ }+ "TypeFamilyDependencies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 1 5 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 1 5 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 31 5 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 5 14 5 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 1 6 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 1 6 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 40 6 43+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 6 14 6 34+ , srcInfoPoints = []+ }+ "UndecidableInstances"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 1 7 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 1 7 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 40 7 43+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 7 14 7 33+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 1 8 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 1 8 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 40 8 43+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 8 14 8 39+ , srcInfoPoints = []+ }+ "NoMonomorphismRestriction"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 1 12 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 1 12 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 8 12 14+ , srcInfoPoints = []+ }+ "T6018a"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 1 14 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 1 14 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 6 14 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 20+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 18+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 13 14 14+ , srcInfoPoints = []+ }+ "F"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 15 14 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 15 14 16+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 17 14 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 17 14 18+ , srcInfoPoints = []+ }+ "b")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 19 14 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 19 14 20+ , srcInfoPoints = []+ }+ "c")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 21 14 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 21 14 22 ]+ }+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 23 14 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 23 14 24+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 31 14 33+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 35 14 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 24 14 30+ , srcInfoPoints = []+ }+ "result")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 34 14 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 34 14 35+ , srcInfoPoints = []+ }+ "k")))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 37 14 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 37 14 38+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 46 14 48+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 39 14 45+ , srcInfoPoints = []+ }+ "result")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 49 14 50+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 51 14 52+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 53 14 54+ , srcInfoPoints = []+ }+ "c"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 1 15 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 1 15 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 6 15 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 32 15 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 15 15 16+ , srcInfoPoints = []+ }+ "F")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 17 15 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 17 15 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 17 15 20+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 22 15 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 22 15 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 22 15 26+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 27 15 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 27 15 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 27 15 31+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 34 15 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 34 15 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 15 34 15 38+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 1 16 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 1 16 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 6 16 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 32 16 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 15 16 16+ , srcInfoPoints = []+ }+ "F")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 17 16 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 17 16 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 17 16 21+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 22 16 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 22 16 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 22 16 26+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 27 16 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 27 16 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 27 16 30+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 34 16 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 34 16 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 16 34 16 37+ , srcInfoPoints = []+ }+ "Int")))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 1 17 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 1 17 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 6 17 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 32 17 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 25+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 15 17 16+ , srcInfoPoints = []+ }+ "F")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 17 17 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 17 17 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 17 17 21+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 22 17 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 22 17 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 22 17 25+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 27 17 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 27 17 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 27 17 31+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 34 17 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 34 17 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 17 34 17 38+ , srcInfoPoints = []+ }+ "Char")))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 1 20 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 1 20 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 6 20 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 32 20 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 25+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 15 20 16+ , srcInfoPoints = []+ }+ "G")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 17 20 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 17 20 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 17 20 21+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 22 20 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 22 20 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 22 20 25+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 27 20 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 27 20 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 27 20 31+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 34 20 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 34 20 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 20 34 20 38+ , srcInfoPoints = []+ }+ "Char")))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 1 22 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 1 22 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 6 22 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 34+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 25+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 23+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 13 22 14+ , srcInfoPoints = []+ }+ "I"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 15 22 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 15 22 16+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 18 22 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 22 22 23+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 16 22 17+ , srcInfoPoints = []+ }+ "a")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 21 22 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 21 22 22+ , srcInfoPoints = []+ }+ "k"))))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 24 22 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 24 22 25+ , srcInfoPoints = []+ }+ "b")))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 26 22 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 26 22 27+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 29 22 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 33 22 34+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 27 22 28+ , srcInfoPoints = []+ }+ "c")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 32 22 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 32 22 33+ , srcInfoPoints = []+ }+ "k"))))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 35 22 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 35 22 36 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 37 22 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 37 22 38+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 39 22 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 39 22 40+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 43 22 45+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 41 22 42+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 46 22 47+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 48 22 49+ , srcInfoPoints = []+ }+ "b"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 1 23 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 1 23 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 6 23 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 32 23 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 15 23 16+ , srcInfoPoints = []+ }+ "I")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 17 23 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 17 23 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 17 23 20+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 22 23 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 22 23 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 22 23 26+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 27 23 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 27 23 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 27 23 31+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 34 23 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 34 23 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 23 34 23 38+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 1 24 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 1 24 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 6 24 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 32 24 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 15 24 16+ , srcInfoPoints = []+ }+ "I")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 17 24 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 17 24 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 17 24 20+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 22 24 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 22 24 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 22 24 26+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 27 24 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 27 24 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 27 24 30+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 34 24 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 34 24 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 24 34 24 38+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 1 25 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 1 25 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 6 25 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 32 25 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 25+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 15 25 16+ , srcInfoPoints = []+ }+ "I")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 17 25 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 17 25 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 17 25 21+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 22 25 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 22 25 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 22 25 25+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 27 25 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 27 25 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 27 25 30+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 34 25 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 34 25 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 25 34 25 37+ , srcInfoPoints = []+ }+ "Int")))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 1 29 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 1 29 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 6 29 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 25+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 13 29 14+ , srcInfoPoints = []+ }+ "J"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 15 29 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 15 29 16+ , srcInfoPoints = []+ }+ "a")))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 17 29 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 17 29 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 20 29 22+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 24 29 25+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 18 29 19+ , srcInfoPoints = []+ }+ "b")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 23 29 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 23 29 24+ , srcInfoPoints = []+ }+ "k"))))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 26 29 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 26 29 27 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 28 29 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 28 29 29+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 30 29 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 30 29 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 34 29 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 32 29 33+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 37 29 38+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 1 30 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 1 30 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 6 30 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 23 30 24+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 15 30 16+ , srcInfoPoints = []+ }+ "J")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 17 30 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 17 30 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 17 30 20+ , srcInfoPoints = []+ }+ "Int"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 21 30 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 21 30 22+ , srcInfoPoints = []+ }+ "b")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 25 30 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 25 30 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 30 25 30 29+ , srcInfoPoints = []+ }+ "Char")))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 1 32 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 1 32 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 17 32 18+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 6 32 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 6 32 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 6 32 14+ , srcInfoPoints = []+ }+ "MaybeSyn"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 15 32 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 15 32 16+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 19 32 24+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 25 32 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 32 25 32 26+ , srcInfoPoints = []+ }+ "a")))+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 1 33 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 20 33 21 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 1 33 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 9 33 19+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 9 33 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 9 33 17+ , srcInfoPoints = []+ }+ "MaybeNew"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 18 33 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 18 33 19+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 22 33 40+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 22 33 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 22 33 30+ , srcInfoPoints = []+ }+ "MaybeNew")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 31 33 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 31 33 32+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 39 33 40+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 39+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 32 33 37+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 38 33 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 33 38 33 39+ , srcInfoPoints = []+ }+ "a")))+ ])+ ]+ []+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 1 36 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 1 36 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 6 36 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 13 36 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 13 36 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 13 36 14+ , srcInfoPoints = []+ }+ "K"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 15 36 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 15 36 16+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 17 36 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 17 36 18 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 19 36 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 19 36 20+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 21 36 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 21 36 22+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 25 36 27+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 23 36 24+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 36 28 36 29+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 1 37 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 1 37 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 6 37 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 19 37 20+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 18+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 15 37 16+ , srcInfoPoints = []+ }+ "K")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 17 37 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 17 37 18+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 31+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 21 37 29+ , srcInfoPoints = []+ }+ "MaybeSyn")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 30 37 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 37 30 37 31+ , srcInfoPoints = []+ }+ "a")))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 1 40 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 1 40 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 6 40 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 13 40 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 13 40 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 13 40 14+ , srcInfoPoints = []+ }+ "M"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 15 40 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 15 40 16+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 17 40 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 17 40 18 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 19 40 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 19 40 20+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 21 40 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 21 40 22+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 25 40 27+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 23 40 24+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 40 28 40 29+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 1 41 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 1 41 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 6 41 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 30 41 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 15 41 16+ , srcInfoPoints = []+ }+ "M")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 17 41 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 17 41 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 25 41 26+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 18 41 23+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 24 41 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 24 41 25+ , srcInfoPoints = []+ }+ "a")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 32 41 40+ , srcInfoPoints = []+ }+ "MaybeSyn")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 41 41 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 41 41 41 42+ , srcInfoPoints = []+ }+ "a")))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 1 42 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 1 42 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 6 42 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 30 42 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 15 42 16+ , srcInfoPoints = []+ }+ "M")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 17 42 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 17 42 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 28 42 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 18 42 26+ , srcInfoPoints = []+ }+ "MaybeNew")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 27 42 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 27 42 28+ , srcInfoPoints = []+ }+ "a")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 32 42 40+ , srcInfoPoints = []+ }+ "MaybeNew")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 41 42 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 42 41 42 42+ , srcInfoPoints = []+ }+ "a")))+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 1 48 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 1 48 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 6 48 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 54 48 59+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 26+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 24+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 22+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 13 48 20+ , srcInfoPoints = []+ }+ "FClosed"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 21 48 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 21 48 22+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 23 48 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 23 48 24+ , srcInfoPoints = []+ }+ "b")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 25 48 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 25 48 26+ , srcInfoPoints = []+ }+ "c")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 27 48 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 27 48 28 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 29 48 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 29 48 35+ , srcInfoPoints = []+ }+ "result"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 36 48 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 36 48 37+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 45 48 47+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 38 48 44+ , srcInfoPoints = []+ }+ "result")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 48 48 49+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 50 48 51+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 48 52 48 53+ , srcInfoPoints = []+ }+ "c"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 28 49 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 27+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 5 49 12+ , srcInfoPoints = []+ }+ "FClosed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 13 49 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 13 49 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 13 49 16+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 18 49 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 18 49 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 18 49 22+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 23 49 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 23 49 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 23 49 27+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 30 49 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 30 49 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 49 30 49 34+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 28 50 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 17+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 5 50 12+ , srcInfoPoints = []+ }+ "FClosed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 13 50 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 13 50 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 13 50 17+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 18 50 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 18 50 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 18 50 22+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 23 50 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 23 50 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 23 50 26+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 30 50 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 30 50 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 50 30 50 33+ , srcInfoPoints = []+ }+ "Int")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 28 51 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 27+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 21+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 17+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 5 51 12+ , srcInfoPoints = []+ }+ "FClosed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 13 51 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 13 51 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 13 51 17+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 18 51 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 18 51 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 18 51 21+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 23 51 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 23 51 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 23 51 27+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 30 51 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 30 51 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 51 30 51 34+ , srcInfoPoints = []+ }+ "Char")))+ ]+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 1 53 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 1 53 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 6 53 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 63 53 68+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 47+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 38+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 29+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 13 53 20+ , srcInfoPoints = []+ }+ "IClosed"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 21 53 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 21 53 22+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 24 53 26+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 28 53 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 22 53 23+ , srcInfoPoints = []+ }+ "a")+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 27 53 28+ , srcInfoPoints = []+ })))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 30 53 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 30 53 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 33 53 35+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 37 53 38+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 31 53 32+ , srcInfoPoints = []+ }+ "b")+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 36 53 37+ , srcInfoPoints = []+ })))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 39 53 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 39 53 40+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 42 53 44+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 46 53 47+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 40 53 41+ , srcInfoPoints = []+ }+ "c")+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 45 53 46+ , srcInfoPoints = []+ })))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 48 53 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 48 53 49 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 50 53 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 50 53 51+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 52 53 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 52 53 53+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 56 53 58+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 54 53 55+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 59 53 60+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 61 53 62+ , srcInfoPoints = []+ }+ "b"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 28 54 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 27+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 5 54 12+ , srcInfoPoints = []+ }+ "IClosed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 13 54 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 13 54 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 13 54 16+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 18 54 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 18 54 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 18 54 22+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 23 54 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 23 54 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 23 54 27+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 30 54 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 30 54 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 54 30 54 34+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 28 55 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 5 55 12+ , srcInfoPoints = []+ }+ "IClosed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 13 55 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 13 55 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 13 55 16+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 18 55 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 18 55 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 18 55 22+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 23 55 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 23 55 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 23 55 26+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 30 55 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 30 55 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 55 30 55 34+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 28 56 29 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 21+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 17+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 5 56 12+ , srcInfoPoints = []+ }+ "IClosed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 13 56 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 13 56 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 13 56 17+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 18 56 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 18 56 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 18 56 21+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 23 56 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 23 56 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 23 56 26+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 30 56 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 30 56 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 56 30 56 33+ , srcInfoPoints = []+ }+ "Int")))+ ]+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 1 58 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 1 58 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 6 58 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 45 58 50+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 31+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 22+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 13 58 20+ , srcInfoPoints = []+ }+ "JClosed"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 21 58 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 21 58 22+ , srcInfoPoints = []+ }+ "a")))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 23 58 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 23 58 24+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 26 58 28+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 30 58 31+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 24 58 25+ , srcInfoPoints = []+ }+ "b")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 29 58 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 29 58 30+ , srcInfoPoints = []+ }+ "k"))))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 32 58 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 32 58 33 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 34 58 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 34 58 35+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 36 58 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 36 58 37+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 40 58 42+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 38 58 39+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 43 58 44+ , srcInfoPoints = []+ }+ "a"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 19 59 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 18+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 5 59 12+ , srcInfoPoints = []+ }+ "JClosed")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 13 59 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 13 59 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 13 59 16+ , srcInfoPoints = []+ }+ "Int"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 17 59 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 17 59 18+ , srcInfoPoints = []+ }+ "b")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 21 59 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 21 59 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 59 21 59 25+ , srcInfoPoints = []+ }+ "Char")))+ ]+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 1 61 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 1 61 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 6 61 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 36 61 41+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 13 61 22+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 13 61 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 13 61 20+ , srcInfoPoints = []+ }+ "KClosed"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 21 61 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 21 61 22+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 23 61 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 23 61 24 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 25 61 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 25 61 26+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 27 61 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 27 61 28+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 31 61 33+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 29 61 30+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 61 34 61 35+ , srcInfoPoints = []+ }+ "a"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 15 62 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 14+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 5 62 12+ , srcInfoPoints = []+ }+ "KClosed")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 13 62 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 13 62 14+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 17 62 25+ , srcInfoPoints = []+ }+ "MaybeSyn")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 26 62 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 62 26 62 27+ , srcInfoPoints = []+ }+ "a")))+ ]+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 1 66 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 1 66 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 6 66 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 32 66 37+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 13 66 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 13 66 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 13 66 16+ , srcInfoPoints = []+ }+ "Bak"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 17 66 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 17 66 18+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 19 66 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 19 66 20 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 21 66 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 21 66 22+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 23 66 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 23 66 24+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 27 66 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 25 66 26+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 66 30 66 31+ , srcInfoPoints = []+ }+ "a"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 15 67 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 6 67 9+ , srcInfoPoints = []+ }+ "Bak")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 10 67 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 10 67 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 10 67 13+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 17 67 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 17 67 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 67 17 67 21+ , srcInfoPoints = []+ }+ "Char")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 15 68 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 14+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 6 68 9+ , srcInfoPoints = []+ }+ "Bak")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 10 68 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 10 68 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 10 68 14+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 17 68 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 17 68 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 68 17 68 20+ , srcInfoPoints = []+ }+ "Int")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 15 69 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 11+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 6 69 9+ , srcInfoPoints = []+ }+ "Bak")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 10 69 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 10 69 11+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 17 69 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 69 17 69 18+ , srcInfoPoints = []+ }+ "a"))+ ]+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 1 73 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 1 73 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 6 73 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 32 73 37+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 13 73 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 13 73 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 13 73 16+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 17 73 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 17 73 18+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 19 73 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 19 73 20 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 21 73 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 21 73 22+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 23 73 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 23 73 24+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 27 73 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 25 73 26+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 73 30 73 31+ , srcInfoPoints = []+ }+ "a"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 14 74 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 5 74 8+ , srcInfoPoints = []+ }+ "Foo")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 9 74 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 9 74 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 9 74 12+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 16 74 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 16 74 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 74 16 74 20+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 14 75 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 5 75 8+ , srcInfoPoints = []+ }+ "Foo")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 9 75 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 9 75 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 9 75 13+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 16 75 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 16 75 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 75 16 75 19+ , srcInfoPoints = []+ }+ "Int")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 14 76 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 5 76 8+ , srcInfoPoints = []+ }+ "Foo")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 9 76 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 9 76 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 9 76 13+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 16 76 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 16 76 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 76 16 76 20+ , srcInfoPoints = []+ }+ "Bool")))+ ]+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 1 80 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 1 80 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 6 80 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 32 80 37+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 13 80 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 13 80 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 13 80 16+ , srcInfoPoints = []+ }+ "Bar"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 17 80 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 17 80 18+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 19 80 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 19 80 20 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 21 80 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 21 80 22+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 23 80 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 23 80 24+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 27 80 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 25 80 26+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 80 30 80 31+ , srcInfoPoints = []+ }+ "a"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 14 81 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 5 81 8+ , srcInfoPoints = []+ }+ "Bar")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 9 81 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 9 81 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 9 81 12+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 16 81 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 16 81 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 81 16 81 20+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 14 82 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 5 82 8+ , srcInfoPoints = []+ }+ "Bar")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 9 82 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 9 82 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 9 82 13+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 16 82 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 16 82 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 82 16 82 19+ , srcInfoPoints = []+ }+ "Int")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 14 83 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 5 83 8+ , srcInfoPoints = []+ }+ "Bar")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 9 83 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 9 83 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 9 83 13+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 16 83 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 16 83 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 83 16 83 20+ , srcInfoPoints = []+ }+ "Char")))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 1 88 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 3 88 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 1 88 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 14 88 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 13+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 11+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 9+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 6 88 7+ , srcInfoPoints = []+ }+ "F")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 8 88 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 8 88 9+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 10 88 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 10 88 11+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 12 88 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 12 88 13+ , srcInfoPoints = []+ }+ "c")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 17 88 18+ , srcInfoPoints = []+ }+ "F")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 19 88 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 19 88 20+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 21 88 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 21 88 22+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 23 88 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 88 23 88 24+ , srcInfoPoints = []+ }+ "c"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 8+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 1 89 2+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 3 89 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 3 89 4+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 5 89 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 5 89 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 7 89 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 7 89 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 89 7 89 8+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 1 92 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 6 92 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 1 92 5+ , srcInfoPoints = []+ }+ "fapp"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 9 92 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 9 92 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 92 9 92 13+ , srcInfoPoints = []+ }+ "Bool")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 1 93 5+ , srcInfoPoints = []+ }+ "fapp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 6 93 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 6 93 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 8 93 9+ , srcInfoPoints = []+ }+ "f")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 10 93 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 10 93 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 93 10 93 14+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 1 96 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 4 96 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 1 96 3+ , srcInfoPoints = []+ }+ "fc"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 21 96 23 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 20+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 18+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 7 96 14+ , srcInfoPoints = []+ }+ "FClosed")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 15 96 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 15 96 16+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 17 96 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 17 96 18+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 19 96 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 19 96 20+ , srcInfoPoints = []+ }+ "c")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 37+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 35+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 33+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 24 96 31+ , srcInfoPoints = []+ }+ "FClosed")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 32 96 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 32 96 33+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 34 96 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 34 96 35+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 36 96 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 96 36 96 37+ , srcInfoPoints = []+ }+ "c"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 9+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 1 97 3+ , srcInfoPoints = []+ }+ "fc")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 4 97 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 4 97 5+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 6 97 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 6 97 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 8 97 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 8 97 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 97 8 97 9+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 1 99 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 7 99 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 1 99 6+ , srcInfoPoints = []+ }+ "fcapp"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 10 99 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 10 99 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 99 10 99 14+ , srcInfoPoints = []+ }+ "Bool")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 1 100 6+ , srcInfoPoints = []+ }+ "fcapp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 7 100 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 7 100 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 9 100 11+ , srcInfoPoints = []+ }+ "fc")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 12 100 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 12 100 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 100 12 100 16+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 1 103 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 3 103 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 1 103 2+ , srcInfoPoints = []+ }+ "i"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 16 103 18 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 15+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 11+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 9+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 6 103 7+ , srcInfoPoints = []+ }+ "I")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 8 103 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 8 103 9+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 10 103 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 10 103 11+ , srcInfoPoints = []+ }+ "b")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 12 103 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 12 103 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 12 103 15+ , srcInfoPoints = []+ }+ "Int"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 19 103 20+ , srcInfoPoints = []+ }+ "I")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 21 103 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 21 103 22+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 23 103 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 23 103 24+ , srcInfoPoints = []+ }+ "b")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 25 103 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 25 103 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 103 25 103 28+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 8+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 1 104 2+ , srcInfoPoints = []+ }+ "i")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 3 104 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 3 104 4+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 5 104 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 5 104 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 7 104 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 7 104 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 104 7 104 8+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 1 107 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 6 107 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 1 107 5+ , srcInfoPoints = []+ }+ "iapp"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 9 107 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 9 107 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 107 9 107 13+ , srcInfoPoints = []+ }+ "Bool")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 1 108 5+ , srcInfoPoints = []+ }+ "iapp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 6 108 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 6 108 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 8 108 9+ , srcInfoPoints = []+ }+ "i")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 10 108 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 10 108 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 108 10 108 14+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 1 111 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 4 111 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 1 111 3+ , srcInfoPoints = []+ }+ "ic"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 23 111 25 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 18+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 7 111 14+ , srcInfoPoints = []+ }+ "IClosed")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 15 111 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 15 111 16+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 17 111 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 17 111 18+ , srcInfoPoints = []+ }+ "b")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 19 111 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 19 111 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 19 111 22+ , srcInfoPoints = []+ }+ "Int"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 41+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 37+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 26 111 33+ , srcInfoPoints = []+ }+ "IClosed")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 34 111 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 34 111 35+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 36 111 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 36 111 37+ , srcInfoPoints = []+ }+ "b")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 38 111 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 38 111 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 111 38 111 41+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 9+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 1 112 3+ , srcInfoPoints = []+ }+ "ic")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 4 112 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 4 112 5+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 6 112 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 6 112 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 8 112 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 8 112 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 112 8 112 9+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 1 114 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 7 114 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 1 114 6+ , srcInfoPoints = []+ }+ "icapp"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 10 114 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 10 114 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 114 10 114 14+ , srcInfoPoints = []+ }+ "Bool")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 1 115 6+ , srcInfoPoints = []+ }+ "icapp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 7 115 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 7 115 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 9 115 11+ , srcInfoPoints = []+ }+ "ic")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 12 115 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 12 115 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 115 12 115 16+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 1 118 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 5 118 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 1 118 4+ , srcInfoPoints = []+ }+ "bak"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 14 118 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 8 118 11+ , srcInfoPoints = []+ }+ "Bak")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 12 118 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 12 118 13+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 17 118 20+ , srcInfoPoints = []+ }+ "Bak")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 21 118 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 118 21 118 22+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 10+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 1 119 4+ , srcInfoPoints = []+ }+ "bak")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 5 119 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 5 119 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 7 119 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 7 119 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 9 119 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 9 119 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 119 9 119 10+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 1 121 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 9 121 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 1 121 8+ , srcInfoPoints = []+ }+ "bakapp1"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 12 121 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 12 121 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 121 12 121 16+ , srcInfoPoints = []+ }+ "Char")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 1 122 8+ , srcInfoPoints = []+ }+ "bakapp1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 9 122 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 9 122 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 11 122 14+ , srcInfoPoints = []+ }+ "bak")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 15 122 18+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 122 15 122 18+ , srcInfoPoints = []+ }+ 'c'+ "c"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 1 124 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 9 124 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 1 124 8+ , srcInfoPoints = []+ }+ "bakapp2"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 12 124 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 12 124 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 124 12 124 18+ , srcInfoPoints = []+ }+ "Double")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 1 125 8+ , srcInfoPoints = []+ }+ "bakapp2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 9 125 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 9 125 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 11 125 14+ , srcInfoPoints = []+ }+ "bak")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 15 125 18+ , srcInfoPoints = []+ }+ (Frac+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 125 15 125 18+ , srcInfoPoints = []+ }+ (1 % 1)+ "1.0"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 1 127 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 9 127 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 1 127 8+ , srcInfoPoints = []+ }+ "bakapp3"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 13 127 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 13 127 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 12 127 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 127 13 127 14+ ]+ })))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 1 128 8+ , srcInfoPoints = []+ }+ "bakapp3"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 9 128 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 9 128 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 11 128 14+ , srcInfoPoints = []+ }+ "bak")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 16+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 16 128 17+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 16+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 16 128 17+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 15 128 16+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 128 16 128 17+ ]+ })))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 1 130 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 5 130 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 1 130 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 14 130 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 8 130 11+ , srcInfoPoints = []+ }+ "Foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 12 130 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 12 130 13+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 17 130 20+ , srcInfoPoints = []+ }+ "Foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 21 130 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 130 21 130 22+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 10+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 1 131 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 5 131 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 5 131 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 7 131 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 7 131 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 9 131 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 9 131 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 131 9 131 10+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 1 133 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 9 133 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 1 133 8+ , srcInfoPoints = []+ }+ "fooapp1"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 12 133 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 12 133 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 133 12 133 16+ , srcInfoPoints = []+ }+ "Bool")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 1 134 8+ , srcInfoPoints = []+ }+ "fooapp1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 9 134 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 9 134 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 11 134 14+ , srcInfoPoints = []+ }+ "foo")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 15 134 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 15 134 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 134 15 134 19+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 1 136 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 5 136 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 1 136 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 14 136 16 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 8 136 11+ , srcInfoPoints = []+ }+ "Bar")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 12 136 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 12 136 13+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 17 136 20+ , srcInfoPoints = []+ }+ "Bar")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 21 136 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 136 21 136 22+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 10+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 1 137 4+ , srcInfoPoints = []+ }+ "bar")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 5 137 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 5 137 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 7 137 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 7 137 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 9 137 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 9 137 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 137 9 137 10+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 1 139 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 9 139 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 1 139 8+ , srcInfoPoints = []+ }+ "barapp1"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 12 139 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 12 139 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 139 12 139 16+ , srcInfoPoints = []+ }+ "Bool")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 1 140 8+ , srcInfoPoints = []+ }+ "barapp1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 9 140 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 9 140 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 11 140 14+ , srcInfoPoints = []+ }+ "bar")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 15 140 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 15 140 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 140 15 140 19+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 1 142 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 9 142 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 1 142 8+ , srcInfoPoints = []+ }+ "barapp2"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 12 142 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 12 142 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 142 12 142 15+ , srcInfoPoints = []+ }+ "Int")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 1 143 8+ , srcInfoPoints = []+ }+ "barapp2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 9 143 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 9 143 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 11 143 14+ , srcInfoPoints = []+ }+ "bar")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 15 143 16+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 143 15 143 16+ , srcInfoPoints = []+ }+ 1+ "1"))))+ Nothing+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 1 148 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 1 148 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 6 148 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 18+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 13 148 14+ , srcInfoPoints = []+ }+ "H"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 15 148 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 15 148 16+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 17 148 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 17 148 18+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 19 148 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 19 148 20 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 21 148 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 21 148 22+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 23 148 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 23 148 24+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 27 148 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 25 148 26+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 30 148 31+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 148 32 148 33+ , srcInfoPoints = []+ }+ "a"+ ]))+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 1 149 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 1 149 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 6 149 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 35 149 40+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 19+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 13 149 15+ , srcInfoPoints = []+ }+ "Hc"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 16 149 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 16 149 17+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 18 149 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 18 149 19+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 20 149 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 20 149 21 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 22 149 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 22 149 23+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 24 149 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 24 149 25+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 28 149 30+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 26 149 27+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 31 149 32+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 149 33 149 34+ , srcInfoPoints = []+ }+ "a"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 10 150 11 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 9+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 7+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 5+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 3 150 5+ , srcInfoPoints = []+ }+ "Hc")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 6 150 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 6 150 7+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 8 150 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 8 150 9+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 12 150 15+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 12 150 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 12 150 13+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 14 150 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 150 14 150 15+ , srcInfoPoints = []+ }+ "b")))+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 1 152 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 1 151 6+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 15 151 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 3 152 3+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 7 151 10+ , srcInfoPoints = []+ }+ "Hcl"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 11 151 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 11 151 12+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 13 151 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 151 13 151 14+ , srcInfoPoints = []+ }+ "b")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 3 152 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 3 152 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 8 152 10+ , srcInfoPoints = []+ }+ "Ht"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 11 152 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 11 152 12+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 13 152 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 13 152 14+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 15 152 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 15 152 16 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 17 152 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 17 152 18+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 19 152 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 19 152 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 23 152 25+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 21 152 22+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 26 152 27+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 152 28 152 29+ , srcInfoPoints = []+ }+ "a"+ ]))+ ])+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 1 156 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 6 156 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 19+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 13 156 15+ , srcInfoPoints = []+ }+ "Jx"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 16 156 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 16 156 17+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 18 156 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 18 156 19+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 20 156 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 20 156 21 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 22 156 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 22 156 23+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 24 156 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 24 156 25+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 28 156 30+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 26 156 27+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 31 156 32+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 156 33 156 34+ , srcInfoPoints = []+ }+ "a"+ ]))+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 1 157 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 1 157 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 6 157 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 36 157 41+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 20+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 13 157 16+ , srcInfoPoints = []+ }+ "Jcx"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 17 157 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 17 157 18+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 19 157 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 19 157 20+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 21 157 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 21 157 22 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 23 157 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 23 157 24+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 25 157 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 25 157 26+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 29 157 31+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 27 157 28+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 32 157 33+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 157 34 157 35+ , srcInfoPoints = []+ }+ "a"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 11 158 12 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 10+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 8+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 3 158 6+ , srcInfoPoints = []+ }+ "Jcx")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 7 158 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 7 158 8+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 9 158 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 9 158 10+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 13 158 16+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 13 158 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 13 158 14+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 15 158 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 158 15 158 16+ , srcInfoPoints = []+ }+ "b")))+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 1 160 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 1 159 6+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 15 159 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 3 160 3+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 7 159 10+ , srcInfoPoints = []+ }+ "Jcl"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 11 159 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 11 159 12+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 13 159 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 159 13 159 14+ , srcInfoPoints = []+ }+ "b")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 3 160 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 3 160 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 8 160 10+ , srcInfoPoints = []+ }+ "Jt"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 11 160 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 11 160 12+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 13 160 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 13 160 14+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 15 160 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 15 160 16 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 17 160 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 17 160 18+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 19 160 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 19 160 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 23 160 25+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 21 160 22+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 26 160 27+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 160 28 160 29+ , srcInfoPoints = []+ }+ "a"+ ]))+ ])+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 1 162 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 6 162 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 19+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 13 162 15+ , srcInfoPoints = []+ }+ "Kx"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 16 162 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 16 162 17+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 18 162 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 18 162 19+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 20 162 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 20 162 21 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 22 162 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 22 162 23+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 24 162 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 24 162 25+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 28 162 30+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 26 162 27+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 31 162 32+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 33 162 34+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 162 35 162 36+ , srcInfoPoints = []+ }+ "b"+ ]))+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 1 163 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 1 163 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 6 163 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 38 163 43+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 20+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 13 163 16+ , srcInfoPoints = []+ }+ "Kcx"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 17 163 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 17 163 18+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 19 163 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 19 163 20+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 21 163 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 21 163 22 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 23 163 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 23 163 24+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 25 163 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 25 163 26+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 29 163 31+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 27 163 28+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 32 163 33+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 34 163 35+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 163 36 163 37+ , srcInfoPoints = []+ }+ "b"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 11 164 12 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 10+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 8+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 3 164 6+ , srcInfoPoints = []+ }+ "Kcx")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 7 164 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 7 164 8+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 9 164 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 9 164 10+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 13 164 16+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 13 164 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 13 164 14+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 15 164 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 164 15 164 16+ , srcInfoPoints = []+ }+ "b")))+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 1 166 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 1 165 6+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 15 165 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 3 166 3+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 7 165 10+ , srcInfoPoints = []+ }+ "Kcl"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 11 165 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 11 165 12+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 13 165 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 165 13 165 14+ , srcInfoPoints = []+ }+ "b")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 3 166 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 3 166 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 8 166 10+ , srcInfoPoints = []+ }+ "Kt"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 11 166 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 11 166 12+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 13 166 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 13 166 14+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 15 166 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 15 166 16 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 17 166 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 17 166 18+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 19 166 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 19 166 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 23 166 25+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 21 166 22+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 26 166 27+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 28 166 29+ , srcInfoPoints = []+ }+ "b"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 166 30 166 31+ , srcInfoPoints = []+ }+ "b"+ ]))+ ])+ , ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 1 170 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 6 170 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 47 170 52+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 13 170 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 13 170 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 13 170 14+ , srcInfoPoints = []+ }+ "L"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 15 170 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 15 170 16+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 18 170 20+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 23 170 24+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 16 170 17+ , srcInfoPoints = []+ }+ "a")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 21 170 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 21 170 23+ , srcInfoPoints = []+ }+ "k1"))))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 25 170 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 25 170 26 ]+ }+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 27 170 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 27 170 28+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 30 170 32+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 35 170 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 28 170 29+ , srcInfoPoints = []+ }+ "r")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 33 170 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 33 170 35+ , srcInfoPoints = []+ }+ "k2")))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 37 170 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 37 170 38+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 41 170 43+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 39 170 40+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 44 170 46+ , srcInfoPoints = []+ }+ "k1"+ ]))+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 14 171 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 5 171 6+ , srcInfoPoints = []+ }+ "L")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 8 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 7 171 8 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 8 171 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 8 171 12+ , srcInfoPoints = []+ }+ "True")))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 16 171 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 16 171 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 171 16 171 19+ , srcInfoPoints = []+ }+ "Int")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 14 172 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 5 172 6+ , srcInfoPoints = []+ }+ "L")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 8 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 7 172 8 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 8 172 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 8 172 13+ , srcInfoPoints = []+ }+ "False")))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 16 172 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 16 172 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 172 16 172 19+ , srcInfoPoints = []+ }+ "Int")))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 14 173 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 5 173 6+ , srcInfoPoints = []+ }+ "L")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 7 173 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 7 173 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 7 173 12+ , srcInfoPoints = []+ }+ "Maybe"))))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 16 173 17+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 173 16 173 17+ , srcInfoPoints = []+ }+ 3+ "3"))+ , TypeEqn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 14 174 15 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 9+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 5 174 6+ , srcInfoPoints = []+ }+ "L")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 7 174 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 7 174 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 7 174 9+ , srcInfoPoints = []+ }+ "IO"))))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 16 174 17+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 174 16 174 17+ , srcInfoPoints = []+ }+ 3+ "3"))+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 1 176 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 22 176 23 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 1 176 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 6 176 21+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 6 176 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 6 176 12+ , srcInfoPoints = []+ }+ "KProxy"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 13 176 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 13 176 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 16 176 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 20 176 21+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 14 176 15+ , srcInfoPoints = []+ }+ "a")+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 19 176 20+ , srcInfoPoints = []+ })))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 24 176 30+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 24 176 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 24 176 30+ , srcInfoPoints = []+ }+ "KProxy")+ [])+ ]+ []+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 1 177 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 1 177 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 6 177 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 13 177 36+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 13 177 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 13 177 15+ , srcInfoPoints = []+ }+ "KP"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 16 177 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 16 177 17+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 24 177 26+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 35 177 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 17 177 23+ , srcInfoPoints = []+ }+ "kproxy")+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 33+ , srcInfoPoints = []+ }+ "KProxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 34 177 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 34 177 35+ , srcInfoPoints = []+ }+ "k")))))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 37 177 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 37 177 38 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 39 177 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 39 177 40+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 41 177 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 41 177 42+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 45 177 47+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 43 177 44+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 48 177 49+ , srcInfoPoints = []+ }+ "k"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 1 178 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 1 178 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 6 178 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 43 178 44+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 15 178 17+ , srcInfoPoints = []+ }+ "KP")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 18 178 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 18 178 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 27 178 29+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 41 178 42+ ]+ }+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 20 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 19 178 20 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 20 178 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 20 178 26+ , srcInfoPoints = []+ }+ "KProxy"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 36+ , srcInfoPoints = []+ }+ "KProxy")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 37 178 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 37 178 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 37 178 41+ , srcInfoPoints = []+ }+ "Bool"))))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 45 178 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 45 178 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 45 178 48+ , srcInfoPoints = []+ }+ "Int")))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 1 179 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 1 179 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 6 179 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 43 179 44+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 39+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 15 179 17+ , srcInfoPoints = []+ }+ "KP")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 18 179 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 18 179 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 27 179 29+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 38 179 39+ ]+ }+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 20 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 19 179 20 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 20 179 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 20 179 26+ , srcInfoPoints = []+ }+ "KProxy"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 36+ , srcInfoPoints = []+ }+ "KProxy")))+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 37 179 38+ , srcInfoPoints = []+ }))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 45 179 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 45 179 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 45 179 49+ , srcInfoPoints = []+ }+ "Char")))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 1 181 66+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 11 181 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 1 181 10+ , srcInfoPoints = []+ }+ "kproxy_id"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 66+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 39 181 41 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 38+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 14 181 16+ , srcInfoPoints = []+ }+ "KP")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 17 181 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 17 181 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 26 181 28+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 37 181 38+ ]+ }+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 19 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 18 181 19 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 19 181 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 19 181 25+ , srcInfoPoints = []+ }+ "KProxy"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 37+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 35+ , srcInfoPoints = []+ }+ "KProxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 36 181 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 36 181 37+ , srcInfoPoints = []+ }+ "k")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 66+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 42 181 44+ , srcInfoPoints = []+ }+ "KP")))+ (TyKind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 45 181 66+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 45 181 46+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 54 181 56+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 65 181 66+ ]+ }+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 47 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 46 181 47 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 47 181 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 47 181 53+ , srcInfoPoints = []+ }+ "KProxy"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 65+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 63+ , srcInfoPoints = []+ }+ "KProxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 64 181 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 64 181 65+ , srcInfoPoints = []+ }+ "k"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 1 182 10+ , srcInfoPoints = []+ }+ "kproxy_id")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 11 182 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 11 182 12+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 13 182 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 13 182 14 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 15 182 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 15 182 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 182 15 182 16+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 1 184 14+ , srcInfoPoints = []+ }+ "kproxy_id_use"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 15 184 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 15 184 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 17 184 26+ , srcInfoPoints = []+ }+ "kproxy_id")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 27 184 30+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 184 27 184 30+ , srcInfoPoints = []+ }+ 'a'+ "a"))))+ Nothing+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 1 188 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 1 188 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 6 188 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 13 188 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 13 188 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 13 188 15+ , srcInfoPoints = []+ }+ "Gx"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 16 188 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 188 16 188 17+ , srcInfoPoints = []+ }+ "a")))+ Nothing+ Nothing+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 1 189 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 1 189 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 6 189 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 13 189 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 13 189 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 13 189 15+ , srcInfoPoints = []+ }+ "Hx"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 16 189 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 189 16 189 17+ , srcInfoPoints = []+ }+ "a")))+ Nothing+ Nothing+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 1 190 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 1 190 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 6 190 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 13 190 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 13 190 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 13 190 15+ , srcInfoPoints = []+ }+ "Gi"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 16 190 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 16 190 17+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 18 190 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 18 190 19 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 20 190 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 20 190 21+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 22 190 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 22 190 23+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 26 190 28+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 24 190 25+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 190 29 190 30+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 1 191 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 1 191 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 6 191 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 22 191 23+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 15 191 17+ , srcInfoPoints = []+ }+ "Gi")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 18 191 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 18 191 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 18 191 21+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 24 191 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 24 191 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 191 24 191 28+ , srcInfoPoints = []+ }+ "Char")))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 1 192 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 1 192 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 6 192 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 13 192 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 13 192 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 13 192 15+ , srcInfoPoints = []+ }+ "Hi"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 16 192 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 16 192 17+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 18 192 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 18 192 19 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 20 192 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 20 192 21+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 22 192 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 22 192 23+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 26 192 28+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 24 192 25+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 192 29 192 30+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 1 194 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 1 194 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 6 194 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 13 194 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 13 194 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 13 194 15+ , srcInfoPoints = []+ }+ "F2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 16 194 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 16 194 17+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 18 194 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 18 194 19 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 20 194 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 20 194 21+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 22 194 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 22 194 23+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 26 194 28+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 24 194 25+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 194 29 194 30+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 1 195 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 1 195 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 6 195 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 28 195 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 15 195 17+ , srcInfoPoints = []+ }+ "F2")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 18 195 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 18 195 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 20 195 21+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 19 195 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 19 195 20+ , srcInfoPoints = []+ }+ "a"))))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 30 195 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 30 195 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 35 195 36+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 31 195 33+ , srcInfoPoints = []+ }+ "Gi")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 34 195 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 195 34 195 35+ , srcInfoPoints = []+ }+ "a"))))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 1 196 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 1 196 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 6 196 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 28 196 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 15 196 17+ , srcInfoPoints = []+ }+ "F2")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 18 196 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 18 196 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 26 196 27+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 19 196 24+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 25 196 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 25 196 26+ , srcInfoPoints = []+ }+ "a")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 35 196 37 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 30 196 32+ , srcInfoPoints = []+ }+ "Hi")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 33 196 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 33 196 34+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 38 196 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 38 196 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 196 38 196 41+ , srcInfoPoints = []+ }+ "Int"))))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 1 198 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 1 198 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 6 198 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 13 198 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 13 198 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 13 198 15+ , srcInfoPoints = []+ }+ "F4"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 16 198 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 16 198 17+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 18 198 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 18 198 19 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 20 198 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 20 198 21+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 22 198 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 22 198 23+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 26 198 28+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 24 198 25+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 198 29 198 30+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 1 199 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 1 199 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 6 199 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 28 199 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 15 199 17+ , srcInfoPoints = []+ }+ "F4")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 18 199 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 18 199 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 20 199 21+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 19 199 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 19 199 20+ , srcInfoPoints = []+ }+ "a"))))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 30 199 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 30 199 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 35 199 36+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 38 199 39+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 43 199 44+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 49 199 50+ ]+ }+ Boxed+ [ TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 31 199 33+ , srcInfoPoints = []+ }+ "Gx")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 34 199 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 34 199 35+ , srcInfoPoints = []+ }+ "a"))+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 37 199 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 37 199 38+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 42 199 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 42 199 43+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 48 199 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 199 48 199 49+ , srcInfoPoints = []+ }+ "a")+ ])+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 1 200 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 1 200 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 6 200 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 28 200 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 15 200 17+ , srcInfoPoints = []+ }+ "F4")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 18 200 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 18 200 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 26 200 27+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 19 200 24+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 25 200 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 25 200 26+ , srcInfoPoints = []+ }+ "a")))))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 30 200 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 30 200 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 35 200 36+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 38 200 39+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 43 200 44+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 49 200 50+ ]+ }+ Boxed+ [ TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 31 200 33+ , srcInfoPoints = []+ }+ "Hx")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 34 200 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 34 200 35+ , srcInfoPoints = []+ }+ "a"))+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 37 200 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 37 200 38+ , srcInfoPoints = []+ }+ "a")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 40 200 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 40 200 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 40 200 43+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 45 200 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 45 200 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 200 45 200 49+ , srcInfoPoints = []+ }+ "Bool"))+ ])+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 1 202 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 1 202 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 6 202 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 19+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 13 202 15+ , srcInfoPoints = []+ }+ "G2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 16 202 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 16 202 17+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 18 202 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 18 202 19+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 20 202 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 20 202 21 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 22 202 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 22 202 23+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 24 202 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 24 202 25+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 28 202 30+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 26 202 27+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 31 202 32+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 202 33 202 34+ , srcInfoPoints = []+ }+ "b"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 1 203 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 1 203 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 6 203 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 28 203 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 27+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 15 203 17+ , srcInfoPoints = []+ }+ "G2")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 18 203 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 18 203 19+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 23 203 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 23 203 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 23 203 27+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 30 203 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 30 203 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 32 203 33+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 35 203 36+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 31 203 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 31 203 32+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 34 203 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 203 34 203 35+ , srcInfoPoints = []+ }+ "a")+ ])+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 1 204 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 1 204 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 6 204 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 28 204 29+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 15 204 17+ , srcInfoPoints = []+ }+ "G2")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 18 204 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 18 204 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 18 204 22+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 23 204 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 23 204 24+ , srcInfoPoints = []+ }+ "b")))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 30 204 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 30 204 31+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 32 204 33+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 38 204 39+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 31 204 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 31 204 32+ , srcInfoPoints = []+ }+ "b")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 34 204 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 34 204 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 204 34 204 38+ , srcInfoPoints = []+ }+ "Bool"))+ ])+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 1 206 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 1 206 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 6 206 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 13 206 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 13 206 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 13 206 15+ , srcInfoPoints = []+ }+ "G6"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 16 206 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 16 206 17+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 18 206 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 18 206 19 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 20 206 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 20 206 21+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 22 206 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 22 206 23+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 26 206 28+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 24 206 25+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 206 29 206 30+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 1 207 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 1 207 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 6 207 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 23 207 24+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 15 207 17+ , srcInfoPoints = []+ }+ "G6")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 18 207 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 18 207 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 20 207 21+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 19 207 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 19 207 20+ , srcInfoPoints = []+ }+ "a"))))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 25 207 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 25 207 26+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 30 207 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 26 207 28+ , srcInfoPoints = []+ }+ "Gi")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 29 207 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 207 29 207 30+ , srcInfoPoints = []+ }+ "a"))))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 1 208 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 1 208 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 6 208 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 23 208 24+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 15 208 17+ , srcInfoPoints = []+ }+ "G6")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 18 208 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 18 208 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 18 208 22+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 25 208 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 25 208 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 208 25 208 28+ , srcInfoPoints = []+ }+ "Int")))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 1 210 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 7 210 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 1 210 6+ , srcInfoPoints = []+ }+ "g6_id"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 15 210 17 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 14+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 10 210 12+ , srcInfoPoints = []+ }+ "G6")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 13 210 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 13 210 14+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 18 210 20+ , srcInfoPoints = []+ }+ "G6")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 21 210 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 210 21 210 22+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 12+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 1 211 6+ , srcInfoPoints = []+ }+ "g6_id")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 7 211 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 7 211 8+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 9 211 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 9 211 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 11 211 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 11 211 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 211 11 211 12+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 1 213 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 8 213 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 1 213 7+ , srcInfoPoints = []+ }+ "g6_use"+ ]+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 11 213 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 11 213 12+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 16 213 17+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 12 213 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 12 213 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 213 12 213 16+ , srcInfoPoints = []+ }+ "Char"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 1 214 7+ , srcInfoPoints = []+ }+ "g6_use"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 8 214 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 8 214 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 10 214 15+ , srcInfoPoints = []+ }+ "g6_id")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 16 214 21+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 214 16 214 21+ , srcInfoPoints = []+ }+ "foo"+ "foo"))))+ Nothing+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 1 217 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 1 217 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 6 217 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 13 217 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 13 217 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 13 217 15+ , srcInfoPoints = []+ }+ "Id"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 16 217 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 16 217 17+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 19 217 21+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 23 217 24+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 17 217 18+ , srcInfoPoints = []+ }+ "a")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 22 217 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 22 217 23+ , srcInfoPoints = []+ }+ "k"))))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 25 217 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 25 217 26 ]+ }+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 27 217 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 27 217 28+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 35 217 37+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 39 217 40+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 28 217 34+ , srcInfoPoints = []+ }+ "result")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 38 217 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 38 217 39+ , srcInfoPoints = []+ }+ "k")))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 41 217 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 41 217 42+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 50 217 52+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 43 217 49+ , srcInfoPoints = []+ }+ "result")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 53 217 54+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 1 218 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 1 218 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 6 218 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 20 218 21+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 15 218 17+ , srcInfoPoints = []+ }+ "Id")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 18 218 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 18 218 19+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 22 218 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 218 22 218 23+ , srcInfoPoints = []+ }+ "a"))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 1 222 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 1 222 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 6 222 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 31+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 29+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 13 222 20+ , srcInfoPoints = []+ }+ "IdProxy"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 21 222 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 21 222 22+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 24 222 26+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 28 222 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 22 222 23+ , srcInfoPoints = []+ }+ "a")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 27 222 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 27 222 28+ , srcInfoPoints = []+ }+ "k"))))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 30 222 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 30 222 31+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 32 222 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 32 222 33 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 34 222 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 34 222 35+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 36 222 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 36 222 37+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 40 222 42+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 38 222 39+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 43 222 44+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 1 223 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 1 223 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 6 223 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 27 223 28+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 15 223 22+ , srcInfoPoints = []+ }+ "IdProxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 23 223 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 23 223 24+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 25 223 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 25 223 26+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 29 223 37+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 29 223 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 29 223 30+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 34 223 35+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 30 223 32+ , srcInfoPoints = []+ }+ "Id")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 33 223 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 33 223 34+ , srcInfoPoints = []+ }+ "a"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 36 223 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 223 36 223 37+ , srcInfoPoints = []+ }+ "b")))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 1 226 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 1 226 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 14 226 15+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 6 226 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 6 226 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 6 226 11+ , srcInfoPoints = []+ }+ "IdSyn"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 12 226 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 12 226 13+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 16 226 18+ , srcInfoPoints = []+ }+ "Id")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 19 226 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 226 19 226 20+ , srcInfoPoints = []+ }+ "a")))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 1 227 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 1 227 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 6 227 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 34+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 32+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 13 227 23+ , srcInfoPoints = []+ }+ "IdProxySyn"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 24 227 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 24 227 25+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 27 227 29+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 31 227 32+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 25 227 26+ , srcInfoPoints = []+ }+ "a")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 30 227 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 30 227 31+ , srcInfoPoints = []+ }+ "k"))))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 33 227 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 33 227 34+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 35 227 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 35 227 36 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 37 227 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 37 227 38+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 39 227 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 39 227 40+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 43 227 45+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 41 227 42+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 46 227 47+ , srcInfoPoints = []+ }+ "a"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 1 228 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 1 228 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 6 228 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 30 228 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 29+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 15 228 25+ , srcInfoPoints = []+ }+ "IdProxySyn")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 26 228 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 26 228 27+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 28 228 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 28 228 29+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 32 228 43+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 32 228 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 32 228 33+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 40 228 41+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 40+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 33 228 38+ , srcInfoPoints = []+ }+ "IdSyn")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 39 228 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 39 228 40+ , srcInfoPoints = []+ }+ "a"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 42 228 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 228 42 228 43+ , srcInfoPoints = []+ }+ "b")))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 1 232 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 1 232 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 6 232 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 33+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 24+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 13 232 15+ , srcInfoPoints = []+ }+ "Fa"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 16 232 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 16 232 17+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 19 232 21+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 23 232 24+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 17 232 18+ , srcInfoPoints = []+ }+ "a")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 22 232 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 22 232 23+ , srcInfoPoints = []+ }+ "k"))))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 25 232 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 25 232 26+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 28 232 30+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 32 232 33+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 26 232 27+ , srcInfoPoints = []+ }+ "b")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 31 232 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 31 232 32+ , srcInfoPoints = []+ }+ "k"))))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 34 232 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 34 232 35 ]+ }+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 36 232 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 36 232 37+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 39 232 41+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 44 232 45+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 37 232 38+ , srcInfoPoints = []+ }+ "r")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 42 232 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 42 232 44+ , srcInfoPoints = []+ }+ "k2")))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 46 232 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 46 232 47+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 50 232 52+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 48 232 49+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 53 232 54+ , srcInfoPoints = []+ }+ "k"+ ]))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 1 233 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 1 233 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 6 233 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 22 233 23+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 21+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 15 233 17+ , srcInfoPoints = []+ }+ "Fa")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 18 233 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 18 233 19+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 20 233 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 20 233 21+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 24 233 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 233 24 233 25+ , srcInfoPoints = []+ }+ "a"))+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 1 236 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 1 236 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 6 236 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 51+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 42+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 33+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 13 236 16+ , srcInfoPoints = []+ }+ "Arr"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 17 236 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 17 236 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 23 236 25+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 32 236 33+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 18 236 22+ , srcInfoPoints = []+ }+ "repr")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 26 236 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 28 236 30 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 26 236 27+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 31 236 32+ , srcInfoPoints = []+ }))))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 34 236 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 34 236 35+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 37 236 39+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 41 236 42+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 35 236 36+ , srcInfoPoints = []+ }+ "a")+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 40 236 41+ , srcInfoPoints = []+ })))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 43 236 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 43 236 44+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 46 236 48+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 50 236 51+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 44 236 45+ , srcInfoPoints = []+ }+ "b")+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 49 236 50+ , srcInfoPoints = []+ })))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 52 236 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 52 236 53 ]+ }+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 54 236 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 54 236 55+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 57 236 59+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 61 236 62+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 55 236 56+ , srcInfoPoints = []+ }+ "r")+ (TyStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 60 236 61+ , srcInfoPoints = []+ }))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 63 236 74+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 63 236 64+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 67 236 69+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 65 236 66+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 70 236 74+ , srcInfoPoints = []+ }+ "repr"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 75 236 76+ , srcInfoPoints = []+ }+ "a"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 77 236 78+ , srcInfoPoints = []+ }+ "b"+ ]))+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 1 243 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 1 238 6+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 23 238 28+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 7 238 22+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 7 238 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 7 238 17+ , srcInfoPoints = []+ }+ "ESymantics"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 18 238 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 238 18 238 22+ , srcInfoPoints = []+ }+ "repr")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 9 239 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 9 239 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 5 239 8+ , srcInfoPoints = []+ }+ "int"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 17 239 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 239 12 239 15+ , srcInfoPoints = []+ }+ "Int")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 20 239 28+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 20 239 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 239 20 239 24+ , srcInfoPoints = []+ }+ "repr"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 239 25 239 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 239 25 239 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 239 25 239 28+ , srcInfoPoints = []+ }+ "Int"))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 9 240 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 9 240 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 5 240 8+ , srcInfoPoints = []+ }+ "add"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 22 240 24 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 20+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 12 240 16+ , srcInfoPoints = []+ }+ "repr"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 17 240 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 17 240 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 17 240 20+ , srcInfoPoints = []+ }+ "Int"))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 34 240 36 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 33+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 25 240 29+ , srcInfoPoints = []+ }+ "repr"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 30 240 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 30 240 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 240+ 30+ 240+ 33+ , srcInfoPoints = []+ }+ "Int"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 240 37 240 45+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 37 240 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 37 240 41+ , srcInfoPoints = []+ }+ "repr"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 42 240 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 240 42 240 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 240+ 42+ 240+ 45+ , srcInfoPoints = []+ }+ "Int")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 9 242 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 9 242 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 5 242 8+ , srcInfoPoints = []+ }+ "lam"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 12 242 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 31 242 33 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 12 242 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 12 242 13+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 29 242 30+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 13 242 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 20 242 22+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 13 242 19+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 13 242 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 13+ 242+ 17+ , srcInfoPoints = []+ }+ "repr"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 18 242 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 18+ 242+ 19+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 23 242 29+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 23 242 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 23+ 242+ 27+ , srcInfoPoints = []+ }+ "repr"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 28 242 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 28+ 242+ 29+ , srcInfoPoints = []+ }+ "b")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 34 242 53+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 34 242 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 34 242 38+ , srcInfoPoints = []+ }+ "repr"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 39 242 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 39 242 40+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 242 52 242 53+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 40 242 52+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 40 242 50+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 40+ 242+ 48+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 40+ 242+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 40+ 242+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 40+ 242+ 43+ , srcInfoPoints = []+ }+ "Arr")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 44+ 242+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 44+ 242+ 48+ , srcInfoPoints = []+ }+ "repr")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 49+ 242+ 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 49+ 242+ 50+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 242 51 242 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 242+ 51+ 242+ 52+ , srcInfoPoints = []+ }+ "b")))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 9 243 11 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 9 243 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 5 243 8+ , srcInfoPoints = []+ }+ "app"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 32 243 34 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 31+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 12 243 16+ , srcInfoPoints = []+ }+ "repr"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 17 243 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 17 243 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 30 243 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 18 243 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 18 243 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 18+ 243+ 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 18+ 243+ 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 18+ 243+ 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 18+ 243+ 21+ , srcInfoPoints = []+ }+ "Arr")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 22+ 243+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 22+ 243+ 26+ , srcInfoPoints = []+ }+ "repr")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 27+ 243+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 27+ 243+ 28+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 29 243 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 243+ 29+ 243+ 30+ , srcInfoPoints = []+ }+ "b")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 42 243 44 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 41+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 35 243 39+ , srcInfoPoints = []+ }+ "repr"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 40 243 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 40 243 41+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 243 45 243 51+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 45 243 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 45 243 49+ , srcInfoPoints = []+ }+ "repr"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 50 243 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 243 50 243 51+ , srcInfoPoints = []+ }+ "b"))))))+ ])+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 246 63+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 1 245 4+ , srcInfoPoints = []+ }+ "te4"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 5 246 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 5 245 6 ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 7 246 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 7 245 10+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 7 246 9+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 11+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 7 246 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 69+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 11 245 13+ , srcInfoPoints = []+ }+ "c3"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 14 245 69+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 14 245 15 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 245 16 245 69+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 16 245 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 16 245 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 16+ 245+ 19+ , srcInfoPoints = []+ }+ "lam")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 20 245 69+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 20 245 21+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 68 245 69+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 21 245 68+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 21 245 22+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 245 24 245 26+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 22+ 245+ 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 22+ 245+ 23+ , srcInfoPoints = []+ }+ "f")+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 27+ 245+ 68+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 27+ 245+ 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 27+ 245+ 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 27+ 245+ 30+ , srcInfoPoints = []+ }+ "lam")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 31+ 245+ 68+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 31+ 245+ 32+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 67+ 245+ 68+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 32+ 245+ 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 32+ 245+ 33+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 35+ 245+ 37+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 33+ 245+ 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 33+ 245+ 34+ , srcInfoPoints = []+ }+ "x")+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 38+ 245+ 67+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 38+ 245+ 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 38+ 245+ 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 38+ 245+ 39+ , srcInfoPoints = []+ }+ "f")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 40+ 245+ 45+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 40+ 245+ 41+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 41+ 245+ 44+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 44+ 245+ 45+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 40+ 245+ 45+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 40+ 245+ 41+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 41+ 245+ 44+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 44+ 245+ 45+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 41+ 245+ 44+ , srcInfoPoints = []+ }+ "app")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 46+ 245+ 67+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 46+ 245+ 47+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 66+ 245+ 67+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 47+ 245+ 66+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 47+ 245+ 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 47+ 245+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 47+ 245+ 48+ , srcInfoPoints = []+ }+ "f")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 49+ 245+ 54+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 49+ 245+ 50+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 50+ 245+ 53+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 53+ 245+ 54+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 49+ 245+ 54+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 49+ 245+ 50+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 50+ 245+ 53+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 53+ 245+ 54+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 50+ 245+ 53+ , srcInfoPoints = []+ }+ "app")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 55+ 245+ 66+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 55+ 245+ 56+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 65+ 245+ 66+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 56+ 245+ 65+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 56+ 245+ 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 56+ 245+ 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 56+ 245+ 57+ , srcInfoPoints = []+ }+ "f")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 58+ 245+ 63+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 58+ 245+ 59+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 59+ 245+ 62+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 62+ 245+ 63+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 58+ 245+ 63+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 58+ 245+ 59+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 59+ 245+ 62+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 62+ 245+ 63+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 59+ 245+ 62+ , srcInfoPoints = []+ }+ "app")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 64+ 245+ 65+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 64+ 245+ 65+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 245+ 64+ 245+ 65+ , srcInfoPoints = []+ }+ "x")))))))))))))))+ Nothing+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 10 246 63+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 10 246 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 10 246 11+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 48 246 49+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 11 246 13+ , srcInfoPoints = []+ }+ "c3")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 15+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 15 246 18+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 18 246 19+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 19+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 14 246 15+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 15 246 18+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 18 246 19+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 15 246 18+ , srcInfoPoints = []+ }+ "app")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 20 246 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 20 246 21+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 47 246 48+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 21 246 47+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 21 246 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 21 246 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 21+ 246+ 24+ , srcInfoPoints = []+ }+ "lam")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 25 246 47+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 25 246 26+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 46 246 47+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 26 246 46+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 26+ 246+ 27+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 29+ 246+ 31+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 27+ 246+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 27+ 246+ 28+ , srcInfoPoints = []+ }+ "x")+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 32+ 246+ 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 32+ 246+ 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 32+ 246+ 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 32+ 246+ 33+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 34+ 246+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 34+ 246+ 35+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 35+ 246+ 38+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 38+ 246+ 39+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 34+ 246+ 39+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 34+ 246+ 35+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 35+ 246+ 38+ , SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 38+ 246+ 39+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 35+ 246+ 38+ , srcInfoPoints = []+ }+ "add")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 40+ 246+ 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 40+ 246+ 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 40+ 246+ 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 40+ 246+ 43+ , srcInfoPoints = []+ }+ "int")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 44+ 246+ 46+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs"+ 246+ 44+ 246+ 46+ , srcInfoPoints = []+ }+ 14+ "14"))))))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 51+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 51 246 54+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 54 246 55+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 50 246 51+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 51 246 54+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 54 246 55+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 51 246 54+ , srcInfoPoints = []+ }+ "app")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 56 246 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 56 246 57+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 62 246 63+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 62+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 246 57 246 60+ , srcInfoPoints = []+ }+ "int")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 61 246 62+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 246 61 246 62+ , srcInfoPoints = []+ }+ 0+ "0")))))))+ Nothing+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 1 252 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 1 249 6+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 19 249 24+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 5 250 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 5+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 7 249 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 7 249 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 7 249 16+ , srcInfoPoints = []+ }+ "Manifold'"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 17 249 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 249 17 249 18+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 5 250 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 5 250 9 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 10 250 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 10 250 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 10 250 14+ , srcInfoPoints = []+ }+ "Base"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 16 250 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 16 250 17+ , srcInfoPoints = []+ }+ "a")))+ (Just+ (TyVarSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 18 250 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 18 250 19 ]+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 20 250 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 20 250 21+ , srcInfoPoints = []+ }+ "r"))))+ (Just+ (InjectivityInfo+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 22 250 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 22 250 23+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 26 250 28+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 24 250 25+ , srcInfoPoints = []+ }+ "r")+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 250 29 250 30+ , srcInfoPoints = []+ }+ "a"+ ]))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 13 251 15 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 13 251 15 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 5 251 12+ , srcInfoPoints = []+ }+ "project"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 16 251 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 18 251 20 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 16 251 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 16 251 17+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 251 21 251 25+ , srcInfoPoints = []+ }+ "Base")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 251 26 251 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 251 26 251 27+ , srcInfoPoints = []+ }+ "a")))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 15 252 17 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 15 252 17 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 5 252 14+ , srcInfoPoints = []+ }+ "unproject"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 25 252 27 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 252 18 252 22+ , srcInfoPoints = []+ }+ "Base")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 23 252 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 252 23 252 24+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 28 252 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 252 28 252 29+ , srcInfoPoints = []+ }+ "a"))))+ ])+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 5 254 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 1 254 4+ , srcInfoPoints = []+ }+ "id'"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 8 254 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 8 254 14+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 16 254 17+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 15 254 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 15 254 16+ , srcInfoPoints = []+ }+ "a")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 32 254 33+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 34 254 36+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 18 254 19+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 32 254 33+ , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 34 254 36+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29+ , srcInfoPoints = []+ }+ "Manifold'")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 44 254 46 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 43+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 37 254 41+ , srcInfoPoints = []+ }+ "Base")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 42 254 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 42 254 43+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 53+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 47 254 51+ , srcInfoPoints = []+ }+ "Base")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 52 254 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 52 254 53+ , srcInfoPoints = []+ }+ "a")))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 1 255 4+ , srcInfoPoints = []+ }+ "id'"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 5 255 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 5 255 6 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 7 255 14+ , srcInfoPoints = []+ }+ "project")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 15 255 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 15 255 16+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 15 255 16+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 17 255 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 17 255 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 255 17 255 26+ , srcInfoPoints = []+ }+ "unproject")))))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 12 15 12 43)+ " defines G, identical to F"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 27 1 27 81)+ " this is injective - a type variable introduced in the LHS is not mentioned on"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 28 1 28 56)+ " RHS but we don't claim injectivity in that argument."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 35 1 35 46)+ " make sure we look through type synonyms..."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 39 1 39 23)+ " .. but not newtypes"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 44 1 44 24)+ " Closed type families"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 46 1 46 80)+ " these are simple conversions from open type families. They should behave the"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 47 1 47 8)+ " same"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 64 1 64 72)+ " Here the last equation might return both Int and Char but we have to"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 65 1 65 61)+ " recognize that it is not possible due to equation overlap"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 71 1 71 81)+ " This is similar, except that the last equation contains concrete type. Since"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 72 1 72 56)+ " it is overlapped it should be dropped with a warning"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 78 1 78 78)+ " this one was tricky in the early implementation of injectivity. Now it is"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 79 1 79 69)+ " identical to the above but we still keep it as a regression test."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 85 1 85 79)+ " Now let's use declared type families. All the below definitions should work"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 87 1 87 61)+ " No ambiguity for any of the arguments - all are injective"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 91 1 91 55)+ " From 1st instance of F: a ~ Int, b ~ Char, c ~ Bool"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 95 1 95 31)+ " now the closed variant of F"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 102 1 102 65)+ " The last argument is not injective so it must be instantiated"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 106 1 106 45)+ " From 1st instance of I: a ~ Int, b ~ Char"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 110 1 110 30)+ " again, closed variant of I"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 117 1 117 51)+ " Now we have to test weird closed type families:"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 145 1 145 73)+ " Declarations below test more liberal RHSs of injectivity annotations:"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 146 1 146 79)+ " permiting variables to appear in different order than the one in which they"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 147 1 147 18)+ " were declared."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 154 1 154 79)+ " repeated tyvars in the RHS of injectivity annotation: no warnings or errors"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 155 1 155 59)+ " (consistent with behaviour for functional dependencies)"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 168 1 168 71)+ " Declaring kind injectivity. Here we only claim that knowing the RHS"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 169 1 169 45)+ " determines the LHS kind but not the type."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 186 1 186 74)+ " Now test some awkward cases from The Injectivity Paper. All should be"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 187 1 187 13)+ " accepted."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 216 1 216 56)+ " A sole exception to \"bare variables in the RHS\" rule"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 220 1 220 81)+ " This makes sure that over-saturated type family applications at the top-level"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 221 1 221 17)+ " are accepted."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 225 1 225 52)+ " make sure we look through type synonyms properly"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 230 1 230 80)+ " this has bare variable in the RHS but all LHS varaiables are also bare so it"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 231 1 231 22)+ " should be accepted"+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 235 1 235 55)+ " Taken from #9587. This exposed a bug in the solver."+ , Comment+ False+ (SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 248 1 248 40)+ " This used to fail during development"+ ]+ )
+ tests/examples/InjectiveTypeFamilies.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InjectiveTypeFamilies.hs.prettyprinter.golden view
@@ -0,0 +1,253 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+module T6018 where+import T6018a++type family F a b c = (result :: k) | result -> a b c++type instance F Int Char Bool = Bool++type instance F Char Bool Int = Int++type instance F Bool Int Char = Char++type instance G Bool Int Char = Char++type family I (a :: k) b (c :: k) = r | r -> a b++type instance I Int Char Bool = Bool++type instance I Int Char Int = Bool++type instance I Bool Int Int = Int++type family J a (b :: k) = r | r -> a++type instance J Int b = Char++type MaybeSyn a = Maybe a++newtype MaybeNew a = MaybeNew (Maybe a)++type family K a = r | r -> a++type instance K a = MaybeSyn a++type family M a = r | r -> a++type instance M (Maybe a) = MaybeSyn a++type instance M (MaybeNew a) = MaybeNew a++type family FClosed a b c = result | result -> a b c where+ FClosed Int Char Bool = Bool+ FClosed Char Bool Int = Int+ FClosed Bool Int Char = Char++type family IClosed (a :: *) (b :: *) (c :: *) = r | r -> a b where+ IClosed Int Char Bool = Bool+ IClosed Int Char Int = Bool+ IClosed Bool Int Int = Int++type family JClosed a (b :: k) = r | r -> a where+ JClosed Int b = Char++type family KClosed a = r | r -> a where+ KClosed a = MaybeSyn a++type family Bak a = r | r -> a where+ Bak Int = Char+ Bak Char = Int+ Bak a = a++type family Foo a = r | r -> a where+ Foo Int = Bool+ Foo Bool = Int+ Foo Bool = Bool++type family Bar a = r | r -> a where+ Bar Int = Bool+ Bar Bool = Int+ Bar Bool = Char++f :: F a b c -> F a b c+f x = x++fapp :: Bool+fapp = f True++fc :: FClosed a b c -> FClosed a b c+fc x = x++fcapp :: Bool+fcapp = fc True++i :: I a b Int -> I a b Int+i x = x++iapp :: Bool+iapp = i True++ic :: IClosed a b Int -> IClosed a b Int+ic x = x++icapp :: Bool+icapp = ic True++bak :: Bak a -> Bak a+bak x = x++bakapp1 :: Char+bakapp1 = bak 'c'++bakapp2 :: Double+bakapp2 = bak 1.0++bakapp3 :: ()+bakapp3 = bak ()++foo :: Foo a -> Foo a+foo x = x++fooapp1 :: Bool+fooapp1 = foo True++bar :: Bar a -> Bar a+bar x = x++barapp1 :: Bool+barapp1 = bar True++barapp2 :: Int+barapp2 = bar 1++type family H a b = r | r -> b a++type family Hc a b = r | r -> b a where+ Hc a b = a b++class Hcl a b where+ type Ht a b = r | r -> b a++type family Jx a b = r | r -> a a++type family Jcx a b = r | r -> a a where+ Jcx a b = a b++class Jcl a b where+ type Jt a b = r | r -> a a++type family Kx a b = r | r -> a b b++type family Kcx a b = r | r -> a b b where+ Kcx a b = a b++class Kcl a b where+ type Kt a b = r | r -> a b b++type family L (a :: k1) = (r :: k2) | r -> k1 where+ L 'True = Int+ L 'False = Int+ L Maybe = 3+ L IO = 3++data KProxy (a :: *) = KProxy++type family KP (kproxy :: KProxy k) = r | r -> k++type instance KP ('KProxy :: KProxy Bool) = Int++type instance KP ('KProxy :: KProxy *) = Char++kproxy_id :: KP ('KProxy :: KProxy k) -> KP ('KProxy :: KProxy k)+kproxy_id x = x+kproxy_id_use = kproxy_id 'a'++type family Gx a++type family Hx a++type family Gi a = r | r -> a++type instance Gi Int = Char++type family Hi a = r | r -> a++type family F2 a = r | r -> a++type instance F2 [a] = [Gi a]++type instance F2 (Maybe a) = Hi a -> Int++type family F4 a = r | r -> a++type instance F4 [a] = (Gx a, a, a, a)++type instance F4 (Maybe a) = (Hx a, a, Int, Bool)++type family G2 a b = r | r -> a b++type instance G2 a Bool = (a, a)++type instance G2 Bool b = (b, Bool)++type family G6 a = r | r -> a++type instance G6 [a] = [Gi a]++type instance G6 Bool = Int++g6_id :: G6 a -> G6 a+g6_id x = x++g6_use :: [Char]+g6_use = g6_id "foo"++type family Id (a :: k) = (result :: k) | result -> a++type instance Id a = a++type family IdProxy (a :: k) b = r | r -> a++type instance IdProxy a b = (Id a) b++type IdSyn a = Id a++type family IdProxySyn (a :: k) b = r | r -> a++type instance IdProxySyn a b = (IdSyn a) b++type family Fa (a :: k) (b :: k) = (r :: k2) | r -> k++type instance Fa a b = a++type family Arr (repr :: * -> *) (a :: *) (b :: *) = (r :: *)+ | r -> repr a b++class ESymantics repr where+ int :: Int -> repr Int+ + add :: repr Int -> repr Int -> repr Int+ + lam :: (repr a -> repr b) -> repr (Arr repr a b)+ + app :: repr (Arr repr a b) -> repr a -> repr b+te4+ = let c3 = lam (\ f -> lam (\ x -> f `app` (f `app` (f `app` x))))+ in (c3 `app` (lam (\ x -> x `add` int 14))) `app` (int 0)++class Manifold' a where+ type Base a = r | r -> a+ + project :: a -> Base a+ + unproject :: Base a -> a++id' :: forall a . (Manifold' a) => Base a -> Base a+id' = project . unproject
+ tests/examples/InlineConlike.hs view
@@ -0,0 +1,3 @@+{-# INLINE CONLIKE size #-}+size :: Int+size = 64
+ tests/examples/InlineConlike.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InlineConlike.hs.parser.golden view
@@ -0,0 +1,104 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 1+ , SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 1+ , SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 1+ , SrcSpan "tests/examples/InlineConlike.hs" 2 1 2 1+ , SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 1+ , SrcSpan "tests/examples/InlineConlike.hs" 4 1 4 1+ , SrcSpan "tests/examples/InlineConlike.hs" 4 1 4 1+ ]+ }+ Nothing+ []+ []+ [ InlineConlikeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InlineConlike.hs" 1 1 1 19+ , SrcSpan "tests/examples/InlineConlike.hs" 1 25 1 28+ ]+ }+ Nothing+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 20 1 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 1 20 1 24+ , srcInfoPoints = []+ }+ "size"))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 1 2 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InlineConlike.hs" 2 6 2 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 1 2 5+ , srcInfoPoints = []+ }+ "size"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 9 2 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 9 2 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 2 9 2 12+ , srcInfoPoints = []+ }+ "Int")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ "size"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 6 3 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InlineConlike.hs" 3 6 3 7 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 8 3 10+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InlineConlike.hs" 3 8 3 10+ , srcInfoPoints = []+ }+ 64+ "64")))+ Nothing+ ]+ , []+ )
+ tests/examples/InlineConlike.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InlineConlike.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# INLINE CONLIKE size #-}++size :: Int+size = 64
+ tests/examples/InstanceSigs.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeFamilies #-}++instance SupportsDelta (Map k v) where+ type Delta (Map k v) = Map k v++ mkDelta :: Map k v -> Map k v -> Delta (Map k v)+ mkDelta = undefined
+ tests/examples/InstanceSigs.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InstanceSigs.hs.parser.golden view
@@ -0,0 +1,571 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 1 1 10 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 1 1 1 1+ , SrcSpan "tests/examples/InstanceSigs.hs" 2 1 2 1+ , SrcSpan "tests/examples/InstanceSigs.hs" 3 1 3 1+ , SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 1+ , SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 1+ , SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 1+ , SrcSpan "tests/examples/InstanceSigs.hs" 10 1 10 1+ , SrcSpan "tests/examples/InstanceSigs.hs" 10 1 10 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 1 1 1 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 1 1 1 13+ , SrcSpan "tests/examples/InstanceSigs.hs" 1 34 1 37+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 1 14 1 33+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 2 1 2 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 2 1 2 13+ , SrcSpan "tests/examples/InstanceSigs.hs" 2 27 2 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 2 14 2 26+ , srcInfoPoints = []+ }+ "InstanceSigs"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 3 1 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 3 1 3 13+ , SrcSpan "tests/examples/InstanceSigs.hs" 3 27 3 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 3 14 3 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ ]+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 1 10 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 5 1 5 9+ , SrcSpan "tests/examples/InstanceSigs.hs" 5 34 5 39+ , SrcSpan "tests/examples/InstanceSigs.hs" 6 3 6 3+ , SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 3+ , SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 3+ , SrcSpan "tests/examples/InstanceSigs.hs" 10 1 10 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 33+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 10 5 23+ , srcInfoPoints = []+ }+ "SupportsDelta")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 24 5 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 5 24 5 25+ , SrcSpan "tests/examples/InstanceSigs.hs" 5 32 5 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 5 25 5 28+ , srcInfoPoints = []+ }+ "Map")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 29 5 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 29 5 30+ , srcInfoPoints = []+ }+ "k")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ "v"))))))+ (Just+ [ InsType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 3 6 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 6 3 6 7+ , SrcSpan "tests/examples/InstanceSigs.hs" 6 24 6 25+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 23+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 8 6 13+ , srcInfoPoints = []+ }+ "Delta")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 14 6 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 6 14 6 15+ , SrcSpan "tests/examples/InstanceSigs.hs" 6 22 6 23+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 6 15 6 18+ , srcInfoPoints = []+ }+ "Map")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 19 6 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 6 19 6 20+ , srcInfoPoints = []+ }+ "k")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ "v")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 33+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 31+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 26 6 29+ , srcInfoPoints = []+ }+ "Map")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 30 6 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 30 6 31+ , srcInfoPoints = []+ }+ "k")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 32 6 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 6 32 6 33+ , srcInfoPoints = []+ }+ "v")))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 8 11 8 13 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 8 11 8 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 3 8 10+ , srcInfoPoints = []+ }+ "mkDelta"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 8 22 8 24 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 21+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 14 8 17+ , srcInfoPoints = []+ }+ "Map")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 18 8 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 18 8 19+ , srcInfoPoints = []+ }+ "k")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 20 8 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 20 8 21+ , srcInfoPoints = []+ }+ "v")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 8 33 8 35 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 25 8 28+ , srcInfoPoints = []+ }+ "Map")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 29 8 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 29 8 30+ , srcInfoPoints = []+ }+ "k")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 31 8 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 31 8 32+ , srcInfoPoints = []+ }+ "v")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 51+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 36 8 41+ , srcInfoPoints = []+ }+ "Delta")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 8 42 8 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 8 42 8 43+ , SrcSpan "tests/examples/InstanceSigs.hs" 8 50 8 51+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 50+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 48+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 43 8 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/InstanceSigs.hs" 8 43 8 46+ , srcInfoPoints = []+ }+ "Map")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 47 8 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 47 8 48+ , srcInfoPoints = []+ }+ "k")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 49 8 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/InstanceSigs.hs" 8 49 8 50+ , srcInfoPoints = []+ }+ "v"))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 22+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 3 9 10+ , srcInfoPoints = []+ }+ "mkDelta"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 11 9 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/InstanceSigs.hs" 9 11 9 12 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 13 9 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 13 9 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/InstanceSigs.hs" 9 13 9 22+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing)+ ])+ ]+ , []+ )
+ tests/examples/InstanceSigs.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/InstanceSigs.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE InstanceSigs #-}+{-# LANGUAGE TypeFamilies #-}++instance SupportsDelta (Map k v) where+ type Delta (Map k v) = Map k v+ + mkDelta :: Map k v -> Map k v -> Delta (Map k v)+ mkDelta = undefined
+ tests/examples/LambdaCase.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE LambdaCase #-}+module LambdaCase where++foo = \case+ Nothing -> e1+ Just e2 -> e2++bar = \ case { _ -> True }
+ tests/examples/LambdaCase.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LambdaCase.hs.parser.golden view
@@ -0,0 +1,254 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 1 1 1 1+ , SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 1+ , SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 1+ , SrcSpan "tests/examples/LambdaCase.hs" 4 1 4 1+ , SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 1+ , SrcSpan "tests/examples/LambdaCase.hs" 9 1 9 1+ , SrcSpan "tests/examples/LambdaCase.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 2 1 2 7+ , SrcSpan "tests/examples/LambdaCase.hs" 2 19 2 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 2 8 2 18+ , srcInfoPoints = []+ }+ "LambdaCase")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 1 1 1 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 1 1 1 13+ , SrcSpan "tests/examples/LambdaCase.hs" 1 25 1 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ "LambdaCase"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 1 6 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 5 6 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 4 5 4 6 ]+ }+ (LCase+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 4 7 6 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 4 7 4 8+ , SrcSpan "tests/examples/LambdaCase.hs" 4 8 4 12+ , SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 9+ , SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 9+ , SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 0+ ]+ }+ [ Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 22+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 9 5 16+ , srcInfoPoints = []+ }+ "Nothing"))+ [])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 17 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 5 17 5 19 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 20 5 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 20 5 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 5 20 5 22+ , srcInfoPoints = []+ }+ "e1"))))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 22+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 9 6 13+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 14 6 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 14 6 16+ , srcInfoPoints = []+ }+ "e2")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 17 6 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 6 17 6 19 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 20 6 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 20 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 6 20 6 22+ , srcInfoPoints = []+ }+ "e2"))))+ Nothing+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ "bar"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 5 8 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 8 5 8 6 ]+ }+ (LCase+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 7 8 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 8 7 8 8+ , SrcSpan "tests/examples/LambdaCase.hs" 8 12 8 16+ , SrcSpan "tests/examples/LambdaCase.hs" 8 17 8 18+ , SrcSpan "tests/examples/LambdaCase.hs" 8 29 8 30+ ]+ }+ [ Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 19 8 28+ , srcInfoPoints = []+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 19 8 20+ , srcInfoPoints = []+ })+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 21 8 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LambdaCase.hs" 8 21 8 23 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 24 8 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 24 8 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LambdaCase.hs" 8 24 8 28+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/LambdaCase.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LambdaCase.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE LambdaCase #-}+module LambdaCase where+foo+ = \case+ Nothing -> e1+ Just e2 -> e2+bar+ = \case+ _ -> True
+ tests/examples/LanguagePragma.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE+RecordWildCards+ #-}+main = print "hello"
+ tests/examples/LanguagePragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LanguagePragma.hs.parser.golden view
@@ -0,0 +1,92 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LanguagePragma.hs" 1 1 1 1+ , SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 1+ , SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 1+ , SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 1+ , SrcSpan "tests/examples/LanguagePragma.hs" 5 1 5 1+ , SrcSpan "tests/examples/LanguagePragma.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 1 1 3 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LanguagePragma.hs" 1 1 1 13+ , SrcSpan "tests/examples/LanguagePragma.hs" 3 2 3 5+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 2 1 2 16+ , srcInfoPoints = []+ }+ "RecordWildCards"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 1 4 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 6 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LanguagePragma.hs" 4 6 4 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/LanguagePragma.hs" 4 8 4 13+ , srcInfoPoints = []+ }+ "print")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/LanguagePragma.hs" 4 14 4 21+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/LanguagePragma.hs" 4 14 4 21+ , srcInfoPoints = []+ }+ "hello"+ "hello"))))+ Nothing+ ]+ , []+ )
+ tests/examples/LanguagePragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LanguagePragma.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE RecordWildCards #-}+main = print "hello"
+ tests/examples/Lib.hs view
@@ -0,0 +1,17 @@+{-# LANGUAGE UnboxedSums, MagicHash #-}++module Lib (flip, getInt) where++import GHC.Exts+import Prelude (Int)++{-# NOINLINE flip #-}+flip :: (# Int | Int# #) -> (# Int# | Int #)+flip (# i | #) = (# | i #)+flip (# | i #) = (# i | #)++{-# NOINLINE getInt #-}+getInt :: (# Int# | Int #) -> Int+getInt (# i | #) = I# i+getInt (# | i #) = i+
+ tests/examples/Lib.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Lib.hs.parser.golden view
@@ -0,0 +1,672 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 1 18 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 1 1 1 1+ , SrcSpan "tests/examples/Lib.hs" 3 1 3 1+ , SrcSpan "tests/examples/Lib.hs" 3 1 3 1+ , SrcSpan "tests/examples/Lib.hs" 5 1 5 1+ , SrcSpan "tests/examples/Lib.hs" 6 1 6 1+ , SrcSpan "tests/examples/Lib.hs" 8 1 8 1+ , SrcSpan "tests/examples/Lib.hs" 9 1 9 1+ , SrcSpan "tests/examples/Lib.hs" 10 1 10 1+ , SrcSpan "tests/examples/Lib.hs" 11 1 11 1+ , SrcSpan "tests/examples/Lib.hs" 13 1 13 1+ , SrcSpan "tests/examples/Lib.hs" 14 1 14 1+ , SrcSpan "tests/examples/Lib.hs" 15 1 15 1+ , SrcSpan "tests/examples/Lib.hs" 16 1 16 1+ , SrcSpan "tests/examples/Lib.hs" 18 1 18 1+ , SrcSpan "tests/examples/Lib.hs" 18 1 18 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 1 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 3 1 3 7+ , SrcSpan "tests/examples/Lib.hs" 3 27 3 32+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 8 3 11+ , srcInfoPoints = []+ }+ "Lib")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 12 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 3 12 3 13+ , SrcSpan "tests/examples/Lib.hs" 3 17 3 18+ , SrcSpan "tests/examples/Lib.hs" 3 25 3 26+ ]+ }+ [ EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 13 3 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 13 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 13 3 17+ , srcInfoPoints = []+ }+ "flip"))+ , EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 19 3 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 19 3 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 3 19 3 25+ , srcInfoPoints = []+ }+ "getInt"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 1 1 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 1 1 1 13+ , SrcSpan "tests/examples/Lib.hs" 1 25 1 26+ , SrcSpan "tests/examples/Lib.hs" 1 37 1 40+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "UnboxedSums"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 1 27 1 36+ , srcInfoPoints = []+ }+ "MagicHash"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 5 1 5 16+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 5 1 5 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 5 8 5 16+ , srcInfoPoints = []+ }+ "GHC.Exts"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 1 6 21+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 6 1 6 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 8 6 15+ , srcInfoPoints = []+ }+ "Prelude"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 16 6 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 6 16 6 17+ , SrcSpan "tests/examples/Lib.hs" 6 20 6 21+ ]+ }+ False+ [ IAbs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 17 6 20+ , srcInfoPoints = []+ }+ (NoNamespace+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 17 6 20+ , srcInfoPoints = []+ })+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 6 17 6 20+ , srcInfoPoints = []+ }+ "Int")+ ])+ }+ ]+ [ InlineSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 8 1 8 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 8 1 8 13+ , SrcSpan "tests/examples/Lib.hs" 8 19 8 22+ ]+ }+ False+ Nothing+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 8 14 8 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 8 14 8 18+ , srcInfoPoints = []+ }+ "flip"))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 1 9 45+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 9 6 9 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 1 9 5+ , srcInfoPoints = []+ }+ "flip"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 9 9 45+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 9 26 9 28 ]+ }+ (TyUnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 9 9 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 9 9 9 11+ , SrcSpan "tests/examples/Lib.hs" 9 16 9 17+ , SrcSpan "tests/examples/Lib.hs" 9 23 9 25+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 12 9 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 12 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 12 9 15+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ "Int#"))+ ])+ (TyUnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 29 9 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 9 29 9 31+ , SrcSpan "tests/examples/Lib.hs" 9 37 9 38+ , SrcSpan "tests/examples/Lib.hs" 9 43 9 45+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 32 9 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 32 9 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 32 9 36+ , srcInfoPoints = []+ }+ "Int#"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 39 9 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 39 9 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 9 39 9 42+ , srcInfoPoints = []+ }+ "Int"))+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 1 11 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 1 10 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 1 10 5+ , srcInfoPoints = []+ }+ "flip")+ [ PUnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 6 10 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 10 6 10 8+ , SrcSpan "tests/examples/Lib.hs" 10 11 10 12+ , SrcSpan "tests/examples/Lib.hs" 10 13 10 15+ ]+ }+ 0+ 1+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ "i"))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 16 10 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 10 16 10 17 ]+ }+ (UnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 18 10 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 10 18 10 20+ , SrcSpan "tests/examples/Lib.hs" 10 21 10 22+ , SrcSpan "tests/examples/Lib.hs" 10 25 10 27+ ]+ }+ 1+ 0+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 23 10 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 23 10 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 10 23 10 24+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 1 11 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 1 11 5+ , srcInfoPoints = []+ }+ "flip")+ [ PUnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 6 11 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 11 6 11 8+ , SrcSpan "tests/examples/Lib.hs" 11 9 11 10+ , SrcSpan "tests/examples/Lib.hs" 11 13 11 15+ ]+ }+ 1+ 0+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 11 11 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 11 11 12+ , srcInfoPoints = []+ }+ "i"))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 16 11 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 11 16 11 17 ]+ }+ (UnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 18 11 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 11 18 11 20+ , SrcSpan "tests/examples/Lib.hs" 11 23 11 24+ , SrcSpan "tests/examples/Lib.hs" 11 25 11 27+ ]+ }+ 0+ 1+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 21 11 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 21 11 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 11 21 11 22+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ ]+ , InlineSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 13 1 13 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 13 1 13 13+ , SrcSpan "tests/examples/Lib.hs" 13 21 13 24+ ]+ }+ False+ Nothing+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 13 14 13 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 13 14 13 20+ , srcInfoPoints = []+ }+ "getInt"))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 1 14 34+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 14 8 14 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 1 14 7+ , srcInfoPoints = []+ }+ "getInt"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 11 14 34+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 14 28 14 30 ]+ }+ (TyUnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 11 14 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 14 11 14 13+ , SrcSpan "tests/examples/Lib.hs" 14 19 14 20+ , SrcSpan "tests/examples/Lib.hs" 14 25 14 27+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 14 14 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 14 14 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 14 14 18+ , srcInfoPoints = []+ }+ "Int#"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 21 14 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 21 14 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 21 14 24+ , srcInfoPoints = []+ }+ "Int"))+ ])+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 31 14 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 31 14 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 14 31 14 34+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 1 16 21+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 1 15 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 1 15 7+ , srcInfoPoints = []+ }+ "getInt")+ [ PUnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 8 15 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 15 8 15 10+ , SrcSpan "tests/examples/Lib.hs" 15 13 15 14+ , SrcSpan "tests/examples/Lib.hs" 15 15 15 17+ ]+ }+ 0+ 1+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ "i"))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 18 15 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 15 18 15 19 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 24+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 20 15 22+ , srcInfoPoints = []+ }+ "I#")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 23 15 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 23 15 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 15 23 15 24+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 1 16 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 1 16 7+ , srcInfoPoints = []+ }+ "getInt")+ [ PUnboxedSum+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 8 16 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Lib.hs" 16 8 16 10+ , SrcSpan "tests/examples/Lib.hs" 16 11 16 12+ , SrcSpan "tests/examples/Lib.hs" 16 15 16 17+ ]+ }+ 1+ 0+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 13 16 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 13 16 14+ , srcInfoPoints = []+ }+ "i"))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 18 16 21+ , srcInfoPoints = [ SrcSpan "tests/examples/Lib.hs" 16 18 16 19 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 20 16 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 20 16 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Lib.hs" 16 20 16 21+ , srcInfoPoints = []+ }+ "i"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/Lib.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Lib.hs.prettyprinter.golden view
@@ -0,0 +1,16 @@+{-# LANGUAGE UnboxedSums, MagicHash #-}+module Lib (flip, getInt) where+import GHC.Exts+import Prelude (Int)++{-# NOINLINE flip #-}++flip :: (# Int | Int# #) -> (# Int# | Int #)+flip (# i | #) = (# | i #)+flip (# | i #) = (# i | #)++{-# NOINLINE getInt #-}++getInt :: (# Int# | Int #) -> Int+getInt (# i | #) = I# i+getInt (# | i #) = i
+ tests/examples/LineOptionsPragma.hs view
@@ -0,0 +1,3 @@+{-# OPTIONS #-}+{-# LINE 49 "src/Language/C/Parser/Lexer.x" #-}+module Fail where
+ tests/examples/LineOptionsPragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LineOptionsPragma.hs.parser.golden view
@@ -0,0 +1,52 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 1 1+ , SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 1+ , SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 1+ , SrcSpan "tests/examples/LineOptionsPragma.hs" 4 1 4 1+ , SrcSpan "tests/examples/LineOptionsPragma.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LineOptionsPragma.hs" 3 1 3 7+ , SrcSpan "tests/examples/LineOptionsPragma.hs" 3 13 3 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/LineOptionsPragma.hs" 3 8 3 12+ , srcInfoPoints = []+ }+ "Fail")+ Nothing+ Nothing))+ [ OptionsPragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 1 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/LineOptionsPragma.hs" 1 1 1 13+ , SrcSpan "tests/examples/LineOptionsPragma.hs" 1 13 1 16+ ]+ }+ Nothing+ ""+ ]+ []+ []+ , [ Comment+ True+ (SrcSpan "tests/examples/LineOptionsPragma.hs" 2 1 2 48)+ "# LINE 49 \"src/Language/C/Parser/Lexer.x\" #"+ ]+ )
+ tests/examples/LineOptionsPragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/LineOptionsPragma.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# OPTIONS #-}+module Fail where
+ tests/examples/List2.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE GADTs #-}+-----------------------------------------------------------------------------+-- |+-- Module : Type.Family.List+-- Copyright : Copyright (C) 2015 Kyle Carter+-- License : BSD3+--+-- Maintainer : Kyle Carter <kylcarte@indiana.edu>+-- Stability : experimental+-- Portability : RankNTypes+--+-- Convenient aliases and type families for working with+-- type-level lists.+----------------------------------------------------------------------------++module Type.Family.List where++type Ø = '[]+type (:<) = '(:)+infixr 5 :<+
+ tests/examples/List2.hs.exactprinter.golden view
@@ -0,0 +1,36 @@+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE GADTs #-}+-----------------------------------------------------------------------------+-- |+-- Module : Type.Family.List+-- Copyright : Copyright (C) 2015 Kyle Carter+-- License : BSD3+--+-- Maintainer : Kyle Carter <kylcarte@indiana.edu>+-- Stability : experimental+-- Portability : RankNTypes+--+-- Convenient aliases and type families for working with+-- type-level lists.+----------------------------------------------------------------------------++module Type.Family.List where++type Ø = '[]+type :< = ':+infixr 5 :<++
+ tests/examples/List2.hs.parser.golden view
@@ -0,0 +1,427 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 1 1 36 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 1 1 1 1+ , SrcSpan "tests/examples/List2.hs" 2 1 2 1+ , SrcSpan "tests/examples/List2.hs" 3 1 3 1+ , SrcSpan "tests/examples/List2.hs" 4 1 4 1+ , SrcSpan "tests/examples/List2.hs" 5 1 5 1+ , SrcSpan "tests/examples/List2.hs" 6 1 6 1+ , SrcSpan "tests/examples/List2.hs" 7 1 7 1+ , SrcSpan "tests/examples/List2.hs" 8 1 8 1+ , SrcSpan "tests/examples/List2.hs" 9 1 9 1+ , SrcSpan "tests/examples/List2.hs" 10 1 10 1+ , SrcSpan "tests/examples/List2.hs" 11 1 11 1+ , SrcSpan "tests/examples/List2.hs" 12 1 12 1+ , SrcSpan "tests/examples/List2.hs" 13 1 13 1+ , SrcSpan "tests/examples/List2.hs" 14 1 14 1+ , SrcSpan "tests/examples/List2.hs" 15 1 15 1+ , SrcSpan "tests/examples/List2.hs" 30 1 30 1+ , SrcSpan "tests/examples/List2.hs" 30 1 30 1+ , SrcSpan "tests/examples/List2.hs" 32 1 32 1+ , SrcSpan "tests/examples/List2.hs" 33 1 33 1+ , SrcSpan "tests/examples/List2.hs" 34 1 34 1+ , SrcSpan "tests/examples/List2.hs" 36 1 36 1+ , SrcSpan "tests/examples/List2.hs" 36 1 36 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 30 1 30 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 30 1 30 7+ , SrcSpan "tests/examples/List2.hs" 30 25 30 30+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 30 8 30 24+ , srcInfoPoints = []+ }+ "Type.Family.List")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 1 1 1 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 1 1 1 13+ , SrcSpan "tests/examples/List2.hs" 1 37 1 40+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 1 14 1 36+ , srcInfoPoints = []+ }+ "TypeFamilyDependencies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 2 1 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 2 1 2 13+ , SrcSpan "tests/examples/List2.hs" 2 30 2 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 2 14 2 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 3 1 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 3 1 3 13+ , SrcSpan "tests/examples/List2.hs" 3 30 3 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 3 14 3 29+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 4 1 4 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 4 1 4 13+ , SrcSpan "tests/examples/List2.hs" 4 25 4 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 4 14 4 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 5 1 5 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 5 1 5 13+ , SrcSpan "tests/examples/List2.hs" 5 33 5 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 5 14 5 32+ , srcInfoPoints = []+ }+ "StandaloneDeriving"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 6 1 6 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 6 1 6 13+ , SrcSpan "tests/examples/List2.hs" 6 32 6 35+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 6 14 6 31+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 7 1 7 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 7 1 7 13+ , SrcSpan "tests/examples/List2.hs" 7 37 7 40+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 7 14 7 36+ , srcInfoPoints = []+ }+ "FunctionalDependencies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 8 1 8 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 8 1 8 13+ , SrcSpan "tests/examples/List2.hs" 8 35 8 38+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 8 14 8 34+ , srcInfoPoints = []+ }+ "UndecidableInstances"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 9 1 9 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 9 1 9 13+ , SrcSpan "tests/examples/List2.hs" 9 27 9 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 9 14 9 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 10 1 10 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 10 1 10 13+ , SrcSpan "tests/examples/List2.hs" 10 25 10 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 10 14 10 24+ , srcInfoPoints = []+ }+ "LambdaCase"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 11 1 11 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 11 1 11 13+ , SrcSpan "tests/examples/List2.hs" 11 28 11 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 11 14 11 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 12 1 12 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 12 1 12 13+ , SrcSpan "tests/examples/List2.hs" 12 29 12 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 12 14 12 28+ , srcInfoPoints = []+ }+ "KindSignatures"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 13 1 13 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 13 1 13 13+ , SrcSpan "tests/examples/List2.hs" 13 24 13 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 13 14 13 23+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 14 1 14 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 14 1 14 13+ , SrcSpan "tests/examples/List2.hs" 14 24 14 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 14 14 14 23+ , srcInfoPoints = []+ }+ "PolyKinds"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 15 1 15 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 15 1 15 13+ , SrcSpan "tests/examples/List2.hs" 15 20 15 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 15 14 15 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 1 32 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 32 1 32 5+ , SrcSpan "tests/examples/List2.hs" 32 11 32 12+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 6 32 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 6 32 7+ , srcInfoPoints = []+ }+ "\216"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 13 32 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 32 13 32 14+ , SrcSpan "tests/examples/List2.hs" 32 15 32 16+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 32 13 32 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 32 13 32 14+ , SrcSpan "tests/examples/List2.hs" 32 15 32 16+ ]+ }+ True+ []))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 1 33 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 33 1 33 5+ , SrcSpan "tests/examples/List2.hs" 33 11 33 12+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 6 33 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 33 6 33 7+ , SrcSpan "tests/examples/List2.hs" 33 7 33 9+ , SrcSpan "tests/examples/List2.hs" 33 9 33 10+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 7 33 9+ , srcInfoPoints = []+ }+ ":<"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 13 33 17+ , srcInfoPoints = [ SrcSpan "tests/examples/List2.hs" 33 13 33 14 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 13 33 17+ , srcInfoPoints = [ SrcSpan "tests/examples/List2.hs" 33 13 33 14 ]+ }+ True+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 14 33 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/List2.hs" 33 14 33 15+ , SrcSpan "tests/examples/List2.hs" 33 15 33 16+ , SrcSpan "tests/examples/List2.hs" 33 16 33 17+ ]+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 33 15 33 16+ , srcInfoPoints = []+ }))))+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 1 34 12+ , srcInfoPoints = [ SrcSpan "tests/examples/List2.hs" 34 8 34 9 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 1 34 7+ , srcInfoPoints = []+ })+ (Just 5)+ [ ConOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 10 34 12+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/List2.hs" 34 10 34 12+ , srcInfoPoints = []+ }+ ":<")+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/List2.hs" 16 1 16 78)+ "---------------------------------------------------------------------------"+ , Comment False (SrcSpan "tests/examples/List2.hs" 17 1 17 5) " |"+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 18 1 18 35)+ " Module : Type.Family.List"+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 19 1 19 49)+ " Copyright : Copyright (C) 2015 Kyle Carter"+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 20 1 20 23)+ " License : BSD3"+ , Comment False (SrcSpan "tests/examples/List2.hs" 21 1 21 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 22 1 22 53)+ " Maintainer : Kyle Carter <kylcarte@indiana.edu>"+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 23 1 23 31)+ " Stability : experimental"+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 24 1 24 29)+ " Portability : RankNTypes"+ , Comment False (SrcSpan "tests/examples/List2.hs" 25 1 25 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 26 1 26 57)+ " Convenient aliases and type families for working with"+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 27 1 27 21)+ " type-level lists."+ , Comment+ False+ (SrcSpan "tests/examples/List2.hs" 28 1 28 77)+ "--------------------------------------------------------------------------"+ ]+ )
+ tests/examples/List2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/List2.hs.prettyprinter.golden view
@@ -0,0 +1,22 @@+{-# LANGUAGE TypeFamilyDependencies #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE GADTs #-}+module Type.Family.List where++type Ø = '[]++type (:<) = '(:)++infixr 5 :<
+ tests/examples/MagicHashN.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE MagicHash #-}+module MagicHashN where++a# = 1+b## = 2+c### = 3+main = print (a#, b##, c###)
+ tests/examples/MagicHashN.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashN.hs.parser.golden view
@@ -0,0 +1,262 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 1 1 1 1+ , SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 1+ , SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 1+ , SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 1+ , SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 1+ , SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 1+ , SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 1+ , SrcSpan "tests/examples/MagicHashN.hs" 8 1 8 1+ , SrcSpan "tests/examples/MagicHashN.hs" 8 1 8 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 2 1 2 7+ , SrcSpan "tests/examples/MagicHashN.hs" 2 19 2 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 2 8 2 18+ , srcInfoPoints = []+ }+ "MagicHashN")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 1 1 1 13+ , SrcSpan "tests/examples/MagicHashN.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "MagicHash"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 7+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 1 4 3+ , srcInfoPoints = []+ }+ "a#"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 4 4 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 4 4 4 5 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ "b##"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 5 5 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 5 5 5 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 5 7 5 8+ , srcInfoPoints = []+ }+ 2+ "2")))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 9+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ "c###"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 6 6 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 6 6 6 7 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 29+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 6 7 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 7 6 7 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 8 7 13+ , srcInfoPoints = []+ }+ "print")))+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 14 7 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashN.hs" 7 14 7 15+ , SrcSpan "tests/examples/MagicHashN.hs" 7 17 7 18+ , SrcSpan "tests/examples/MagicHashN.hs" 7 22 7 23+ , SrcSpan "tests/examples/MagicHashN.hs" 7 28 7 29+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 15 7 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 15 7 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 15 7 17+ , srcInfoPoints = []+ }+ "a#"))+ , Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ "b##"))+ , Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 24 7 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 24 7 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MagicHashN.hs" 7 24 7 28+ , srcInfoPoints = []+ }+ "c###"))+ ])))+ Nothing+ ]+ , []+ )
+ tests/examples/MagicHashN.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashN.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE MagicHash #-}+module MagicHashN where+a# = 1+b## = 2+c### = 3+main = print (a#, b##, c###)
+ tests/examples/MagicHashUnboxedTuples.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE MagicHash, UnboxedTuples #-}+module MagicHashUnboxedTuples where++f (#x, y #) = (# a#, b #) where+ a# = a#+ b = b
+ tests/examples/MagicHashUnboxedTuples.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashUnboxedTuples.hs.parser.golden view
@@ -0,0 +1,286 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 1 1+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 1+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 1+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 4 1+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 7 1 7 1+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 7 1 7 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 1 2 7+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 31 2 36+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 2 8 2 30+ , srcInfoPoints = []+ }+ "MagicHashUnboxedTuples")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 1 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 1 1 13+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 23 1 24+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 39 1 42+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "MagicHash"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 1 25 1 38+ , srcInfoPoints = []+ }+ "UnboxedTuples"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 6 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 27 4 32 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 6 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 27 4 32 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 3 4 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 3 4 5+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 6 4 7+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 10 4 12+ ]+ }+ Unboxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ "y")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 13 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 13 4 14 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 15 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 15 4 17+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 20 4 21+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 24 4 26+ ]+ }+ Unboxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 18 4 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 18 4 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 18 4 20+ , srcInfoPoints = []+ }+ "a#"))+ , Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ "b"))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 6 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 3+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 3+ , SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 7 1 7 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 3 5 5+ , srcInfoPoints = []+ }+ "a#"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 6 5 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 6 5 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 8 5 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 5 8 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/MagicHashUnboxedTuples.hs" 5 8 5 10+ , srcInfoPoints = []+ }+ "a#"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 3 6 4+ , srcInfoPoints = []+ }+ "b"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 5 6 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 5 6 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MagicHashUnboxedTuples.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ "b"))))+ Nothing+ ]))+ ]+ ]+ , []+ )
+ tests/examples/MagicHashUnboxedTuples.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MagicHashUnboxedTuples.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE MagicHash, UnboxedTuples #-}+module MagicHashUnboxedTuples where+f (# x, y #) = (# a#, b #)+ where a# = a#+ b = b
+ tests/examples/MinimalPragma.hs view
@@ -0,0 +1,7 @@+class Eq a where+ (==) :: a -> a -> Bool+ (/=) :: a -> a -> Bool+ x == y = not (x /= y)+ x /= y = not (x == y)+ {-# MINIMAL (==) | (/=) #-}+
+ tests/examples/MinimalPragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MinimalPragma.hs.parser.golden view
@@ -0,0 +1,581 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 1+ , SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 1+ , SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 1+ , SrcSpan "tests/examples/MinimalPragma.hs" 8 1 8 1+ , SrcSpan "tests/examples/MinimalPragma.hs" 8 1 8 1+ ]+ }+ Nothing+ []+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 1 6 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 1 1 1 6+ , SrcSpan "tests/examples/MinimalPragma.hs" 1 12 1 17+ , SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 6+ , SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 6+ , SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 6+ , SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 6+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 6+ , SrcSpan "tests/examples/MinimalPragma.hs" 8 1 8 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 7 1 11+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 7 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 7 1 9+ , srcInfoPoints = []+ }+ "Eq"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ "a")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 2 11 2 13 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 2 11 2 13 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 2 6 2 7+ , SrcSpan "tests/examples/MinimalPragma.hs" 2 7 2 9+ , SrcSpan "tests/examples/MinimalPragma.hs" 2 9 2 10+ ]+ }+ "=="+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 14 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 2 16 2 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 14 2 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 14 2 15+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 19 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 2 21 2 23 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 19 2 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 2 19 2 20+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 2 24 2 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 2 24 2 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 2 24 2 28+ , srcInfoPoints = []+ }+ "Bool"))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 3 11 3 13 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 3 11 3 13 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 3 6 3 7+ , SrcSpan "tests/examples/MinimalPragma.hs" 3 7 3 9+ , SrcSpan "tests/examples/MinimalPragma.hs" 3 9 3 10+ ]+ }+ "/="+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 14 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 3 16 3 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 19 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 3 21 3 23 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 3 24 3 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 3 24 3 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 3 24 3 28+ , srcInfoPoints = []+ }+ "Bool"))))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 27+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "x"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 8 4 10+ , srcInfoPoints = []+ }+ "==")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 13 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 4 13 4 14 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 15 4 18+ , srcInfoPoints = []+ }+ "not")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 19 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 4 19 4 20+ , SrcSpan "tests/examples/MinimalPragma.hs" 4 26 4 27+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 20 4 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 20 4 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 20 4 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/MinimalPragma.hs" 4 20 4 21+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 22 4 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 22 4 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/MinimalPragma.hs" 4 22 4 24+ , srcInfoPoints = []+ }+ "/=")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 25 4 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 4 25 4 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/MinimalPragma.hs" 4 25 4 26+ , srcInfoPoints = []+ }+ "y")))))))+ Nothing+ ])+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 27+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 6 5 7+ , srcInfoPoints = []+ }+ "x"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 8 5 10+ , srcInfoPoints = []+ }+ "/=")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 13 5 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 5 13 5 14 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 15 5 18+ , srcInfoPoints = []+ }+ "not")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 19 5 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 5 19 5 20+ , SrcSpan "tests/examples/MinimalPragma.hs" 5 26 5 27+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 20 5 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 20 5 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 20 5 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/MinimalPragma.hs" 5 20 5 21+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 22 5 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 22 5 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/MinimalPragma.hs" 5 22 5 24+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 25 5 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 5 25 5 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/MinimalPragma.hs" 5 25 5 26+ , srcInfoPoints = []+ }+ "y")))))))+ Nothing+ ])+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 17+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 30 6 33+ ]+ }+ (MinimalPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 6 6 6 17+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 30 6 33+ ]+ }+ (Just+ (OrFormula+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 6 23 6 24 ]+ }+ [ VarFormula+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 19+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 19 6 21+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 21 6 22+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 6 18 6 19+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 19 6 21+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 21 6 22+ ]+ }+ "==")+ , VarFormula+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 26+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 26 6 28+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 28 6 29+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MinimalPragma.hs" 6 25 6 26+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 26 6 28+ , SrcSpan "tests/examples/MinimalPragma.hs" 6 28 6 29+ ]+ }+ "/=")+ ])))+ ])+ ]+ , []+ )
+ tests/examples/MinimalPragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MinimalPragma.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+class Eq a where+ (==) :: a -> a -> Bool+ + (/=) :: a -> a -> Bool+ x == y = not (x /= y)+ x /= y = not (x == y)+ + {-# MINIMAL (==) | (/=) #-}
+ tests/examples/MultiCtxt.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE RankNTypes #-}++module MultiCtxt where++multipleCtx :: Eq a => (Show a => a)+multipleCtx = undefined
+ tests/examples/MultiCtxt.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiCtxt.hs.parser.golden view
@@ -0,0 +1,231 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 1 1 1 1+ , SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 1+ , SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 1+ , SrcSpan "tests/examples/MultiCtxt.hs" 5 1 5 1+ , SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 1+ , SrcSpan "tests/examples/MultiCtxt.hs" 7 1 7 1+ , SrcSpan "tests/examples/MultiCtxt.hs" 7 1 7 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 3 1 3 7+ , SrcSpan "tests/examples/MultiCtxt.hs" 3 18 3 23+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 3 8 3 17+ , srcInfoPoints = []+ }+ "MultiCtxt")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 1 1 1 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 1 1 1 13+ , SrcSpan "tests/examples/MultiCtxt.hs" 1 25 1 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 1 5 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 13 5 15 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 1 5 12+ , srcInfoPoints = []+ }+ "multipleCtx"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 37+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ "a"))))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 24 5 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 24 5 25+ , SrcSpan "tests/examples/MultiCtxt.hs" 5 36 5 37+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 36+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31+ , srcInfoPoints = []+ }+ "a"))))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 35 5 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 35 5 36+ , srcInfoPoints = []+ }+ "a")))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 24+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 1 6 12+ , srcInfoPoints = []+ }+ "multipleCtx"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 13 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiCtxt.hs" 6 13 6 14 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 15 6 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 15 6 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 6 15 6 24+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ , []+ )
+ tests/examples/MultiCtxt.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiCtxt.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE RankNTypes #-}+module MultiCtxt where++multipleCtx :: Eq a => (Show a => a)+multipleCtx = undefined
+ tests/examples/MultiLinePragma.hs view
@@ -0,0 +1,14 @@+{-# OPTIONS_GHC+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a #-}+main :: IO ()+main = dat
+ tests/examples/MultiLinePragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiLinePragma.hs.parser.golden view
@@ -0,0 +1,145 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 15 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 1 1+ , SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 1+ , SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 1+ , SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 1+ , SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 1+ , SrcSpan "tests/examples/MultiLinePragma.hs" 15 1 15 1+ , SrcSpan "tests/examples/MultiLinePragma.hs" 15 1 15 1+ ]+ }+ Nothing+ [ OptionsPragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 12 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiLinePragma.hs" 1 1 12 8+ , SrcSpan "tests/examples/MultiLinePragma.hs" 12 8 12 11+ ]+ }+ (Just GHC)+ "\n -a\n -a\n -a\n -a\n -a\n -a\n -a\n -a\n -a\n -a\n -a "+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 6 13 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 1 13 5+ , srcInfoPoints = []+ }+ "main"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 14+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 9 13 11+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 13+ , SrcSpan "tests/examples/MultiLinePragma.hs" 13 13 13 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 13+ , SrcSpan "tests/examples/MultiLinePragma.hs" 13 13 13 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiLinePragma.hs" 13 12 13 13+ , SrcSpan "tests/examples/MultiLinePragma.hs" 13 13 13 14+ ]+ }))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 14 1 14 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 14 6 14 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiLinePragma.hs" 14 6 14 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 14 8 14 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 14 8 14 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiLinePragma.hs" 14 8 14 11+ , srcInfoPoints = []+ }+ "dat"))))+ Nothing+ ]+ , []+ )
+ tests/examples/MultiLinePragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiLinePragma.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# OPTIONS_GHC+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a+ -a #-}++main :: IO ()+main = dat
+ tests/examples/MultiParam.hs view
@@ -0,0 +1,4 @@+module MultiParam where++foo :: MonadError e m => e -> m ()+foo = undefined
+ tests/examples/MultiParam.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiParam.hs.parser.golden view
@@ -0,0 +1,215 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 1 1 1 1+ , SrcSpan "tests/examples/MultiParam.hs" 1 1 1 1+ , SrcSpan "tests/examples/MultiParam.hs" 3 1 3 1+ , SrcSpan "tests/examples/MultiParam.hs" 4 1 4 1+ , SrcSpan "tests/examples/MultiParam.hs" 5 1 5 1+ , SrcSpan "tests/examples/MultiParam.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 1 1 1 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 1 1 1 7+ , SrcSpan "tests/examples/MultiParam.hs" 1 19 1 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 1 8 1 18+ , srcInfoPoints = []+ }+ "MultiParam")+ Nothing+ Nothing))+ []+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 1 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 5 3 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 35+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18+ , srcInfoPoints = []+ }+ "MonadError")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ "e")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ "m"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 28 3 30 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ "e"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 31 3 35+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 31 3 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 31 3 32+ , srcInfoPoints = []+ }+ "m"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 33 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 33 3 34+ , SrcSpan "tests/examples/MultiParam.hs" 3 34 3 35+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 33 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 33 3 34+ , SrcSpan "tests/examples/MultiParam.hs" 3 34 3 35+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 33 3 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 3 33 3 34+ , SrcSpan "tests/examples/MultiParam.hs" 3 34 3 35+ ]+ }))))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 1 4 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 5 4 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiParam.hs" 4 5 4 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 7 4 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 7 4 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 4 7 4 16+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ , []+ )
+ tests/examples/MultiParam.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiParam.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+module MultiParam where++foo :: MonadError e m => e -> m ()+foo = undefined
+ tests/examples/MultiWayIf.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE MultiWayIf #-}+module MultiWayIf where++foo = if | test1 -> e1+ | test2 witharg -> e2+ | otherwise -> def++bar = if { | test1 -> if { | test2 -> e1+ | test3 -> e2 }+ | test4 -> e3+ }++-- taken from GHC's test suite+x = 10+x1 = if | x < 10 -> "< 10" | otherwise -> ""+x2 = if | x < 10 -> "< 10"+ | otherwise -> ""+x3 = if | x < 10 -> "< 10"+ | otherwise -> ""+x4 = if | True -> "yes"+x5 = if | True -> if | False -> 1 | True -> 2++x6 = if | x < 10 -> if | True -> "yes"+ | False -> "no"+ | otherwise -> "maybe"++x7 = (if | True -> 0)++-- issue #98+spam = if | () <- () -> ()
+ tests/examples/MultiWayIf.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiWayIf.hs.parser.golden view
@@ -0,0 +1,1685 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 1 1 31 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 1 1 1 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 4 1 4 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 31 1 31 1+ , SrcSpan "tests/examples/MultiWayIf.hs" 31 1 31 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 2 1 2 7+ , SrcSpan "tests/examples/MultiWayIf.hs" 2 19 2 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 2 8 2 18+ , srcInfoPoints = []+ }+ "MultiWayIf")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 1 1 1 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 1 1 1 13+ , SrcSpan "tests/examples/MultiWayIf.hs" 1 25 1 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ "MultiWayIf"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 1 6 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 5 6 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 4 5 4 6 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 7 6 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 4 7 4 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 4 10 4 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 5 10 5 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 6 10 6 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 10 4 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 4 10 4 11+ , SrcSpan "tests/examples/MultiWayIf.hs" 4 18 4 20+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 12 4 17+ , srcInfoPoints = []+ }+ "test1")))+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 21 4 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 21 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 4 21 4 23+ , srcInfoPoints = []+ }+ "e1")))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 10 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 5 10 5 11+ , SrcSpan "tests/examples/MultiWayIf.hs" 5 26 5 28+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 5 12 5 17+ , srcInfoPoints = []+ }+ "test2")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 18 5 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 18 5 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 5 18 5 25+ , srcInfoPoints = []+ }+ "witharg"))))+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 29 5 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 29 5 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 5 29 5 31+ , srcInfoPoints = []+ }+ "e2")))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 10 6 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 6 10 6 11+ , SrcSpan "tests/examples/MultiWayIf.hs" 6 22 6 24+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 12 6 21+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 25 6 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 25 6 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 6 25 6 28+ , srcInfoPoints = []+ }+ "def")))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 1 11 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ "bar"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 5 11 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 8 5 8 6 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 7 11 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 8 7 8 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 8 10 8 11+ , SrcSpan "tests/examples/MultiWayIf.hs" 11 10 11 11+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 12 9 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 8 12 8 13+ , SrcSpan "tests/examples/MultiWayIf.hs" 8 20 8 22+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ "test1")))+ ]+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 23 9 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 8 23 8 25+ , SrcSpan "tests/examples/MultiWayIf.hs" 8 26 8 27+ , SrcSpan "tests/examples/MultiWayIf.hs" 9 42 9 43+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 28 8 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 8 28 8 29+ , SrcSpan "tests/examples/MultiWayIf.hs" 8 36 8 38+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 8 30 8 35+ , srcInfoPoints = []+ }+ "test2")))+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 39 8 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 8 39 8 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 8 39 8 41+ , srcInfoPoints = []+ }+ "e1")))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 28 9 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 9 28 9 29+ , SrcSpan "tests/examples/MultiWayIf.hs" 9 36 9 38+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 9 30 9 35+ , srcInfoPoints = []+ }+ "test3")))+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 39 9 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 9 39 9 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 9 39 9 41+ , srcInfoPoints = []+ }+ "e2")))+ ])+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 12 10 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 10 12 10 13+ , SrcSpan "tests/examples/MultiWayIf.hs" 10 20 10 22+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 10 14 10 19+ , srcInfoPoints = []+ }+ "test4")))+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 23 10 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 23 10 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 10 23 10 25+ , srcInfoPoints = []+ }+ "e3")))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 1 14 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 4 14 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 14 4 14 5 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 6 14 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 14 6 14 8+ , srcInfoPoints = []+ }+ 10+ "10")))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 45+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 1 15 3+ , srcInfoPoints = []+ }+ "x1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 4 15 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 15 4 15 5 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 6 15 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 15 6 15 8+ , SrcSpan "tests/examples/MultiWayIf.hs" 15 9 15 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 9 15 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 15 9 15 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 15 18 15 20+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 17+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 13 15 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 15 13 15 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 15 13 15 14+ , srcInfoPoints = []+ }+ "<")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 15 15 17+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 15 15 15 17+ , srcInfoPoints = []+ }+ 10+ "10")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 21 15 27+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 21 15 27+ , srcInfoPoints = []+ }+ "< 10"+ "< 10"))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 28 15 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 15 28 15 29+ , SrcSpan "tests/examples/MultiWayIf.hs" 15 40 15 42+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 15 30 15 39+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 43 15 45+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 15 43 15 45+ , srcInfoPoints = []+ }+ ""+ ""))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 1 17 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 1 16 3+ , srcInfoPoints = []+ }+ "x2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 4 17 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 16 4 16 5 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 6 17 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 16 6 16 8+ , SrcSpan "tests/examples/MultiWayIf.hs" 16 9 16 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 17 9 17 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 9 16 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 16 9 16 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 16 18 16 20+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 17+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 16 11 16 12+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 13 16 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 16 13 16 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 16 13 16 14+ , srcInfoPoints = []+ }+ "<")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 15 16 17+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 16 15 16 17+ , srcInfoPoints = []+ }+ 10+ "10")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 21 16 27+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 16 21 16 27+ , srcInfoPoints = []+ }+ "< 10"+ "< 10"))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 9 17 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 17 9 17 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 17 21 17 23+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 17 11 17 20+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 24 17 26+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 17 24 17 26+ , srcInfoPoints = []+ }+ ""+ ""))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 1 19 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 1 18 3+ , srcInfoPoints = []+ }+ "x3"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 4 19 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 18 4 18 5 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 6 19 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 18 6 18 8+ , SrcSpan "tests/examples/MultiWayIf.hs" 18 9 18 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 19 9 19 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 9 18 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 18 9 18 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 18 18 18 20+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 17+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 18 11 18 12+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 13 18 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 18 13 18 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 18 13 18 14+ , srcInfoPoints = []+ }+ "<")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 15 18 17+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 18 15 18 17+ , srcInfoPoints = []+ }+ 10+ "10")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 21 18 27+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 18 21 18 27+ , srcInfoPoints = []+ }+ "< 10"+ "< 10"))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 9 19 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 19 9 19 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 19 21 19 23+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 19 11 19 20+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 24 19 26+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 19 24 19 26+ , srcInfoPoints = []+ }+ ""+ ""))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 24+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 1 20 3+ , srcInfoPoints = []+ }+ "x4"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 4 20 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 20 4 20 5 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 6 20 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 20 6 20 8+ , SrcSpan "tests/examples/MultiWayIf.hs" 20 9 20 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 9 20 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 20 9 20 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 20 16 20 18+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 20 11 20 15+ , srcInfoPoints = []+ }+ "True")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 19 20 24+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 20 19 20 24+ , srcInfoPoints = []+ }+ "yes"+ "yes"))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 46+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 1 21 3+ , srcInfoPoints = []+ }+ "x5"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 4 21 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 21 4 21 5 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 6 21 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 21 6 21 8+ , SrcSpan "tests/examples/MultiWayIf.hs" 21 9 21 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 9 21 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 21 9 21 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 21 16 21 18+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 11 21 15+ , srcInfoPoints = []+ }+ "True")))+ ]+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 19 21 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 21 19 21 21+ , SrcSpan "tests/examples/MultiWayIf.hs" 21 22 21 22+ , SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 22 21 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 21 22 21 23+ , SrcSpan "tests/examples/MultiWayIf.hs" 21 30 21 32+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 24 21 29+ , srcInfoPoints = []+ }+ "False")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 33 21 34+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 33 21 34+ , srcInfoPoints = []+ }+ 1+ "1"))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 35 21 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 21 35 21 36+ , SrcSpan "tests/examples/MultiWayIf.hs" 21 42 21 44+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 37 21 41+ , srcInfoPoints = []+ }+ "True")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 21 45 21 46+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 21 45 21 46+ , srcInfoPoints = []+ }+ 2+ "2"))+ ])+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 1 25 31+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 1 23 3+ , srcInfoPoints = []+ }+ "x6"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 4 25 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 23 4 23 5 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 6 25 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 23 6 23 8+ , SrcSpan "tests/examples/MultiWayIf.hs" 23 9 23 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 9 24 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 23 9 23 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 23 18 23 20+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 17+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 11 23 12+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 13 23 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 13 23 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 13 23 14+ , srcInfoPoints = []+ }+ "<")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 15 23 17+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 15 23 17+ , srcInfoPoints = []+ }+ 10+ "10")))+ ]+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 21 24 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 23 21 23 23+ , SrcSpan "tests/examples/MultiWayIf.hs" 23 24 23 24+ , SrcSpan "tests/examples/MultiWayIf.hs" 24 24 24 24+ , SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 24 23 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 23 24 23 25+ , SrcSpan "tests/examples/MultiWayIf.hs" 23 31 23 33+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 26 23 30+ , srcInfoPoints = []+ }+ "True")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 23 34 23 39+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 23 34 23 39+ , srcInfoPoints = []+ }+ "yes"+ "yes"))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 24 24 24 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 24 24 24 25+ , SrcSpan "tests/examples/MultiWayIf.hs" 24 32 24 34+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 24 26 24 31+ , srcInfoPoints = []+ }+ "False")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 24 35 24 39+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 24 35 24 39+ , srcInfoPoints = []+ }+ "no"+ "no"))+ ])+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 25 9 25 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 25 21 25 23+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 25 11 25 20+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 24 25 31+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 25 24 25 31+ , srcInfoPoints = []+ }+ "maybe"+ "maybe"))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 1 27 3+ , srcInfoPoints = []+ }+ "x7"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 4 27 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 27 4 27 5 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 6 27 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 27 6 27 7+ , SrcSpan "tests/examples/MultiWayIf.hs" 27 21 27 22+ ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 7 27 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 27 7 27 9+ , SrcSpan "tests/examples/MultiWayIf.hs" 27 10 27 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 27 21 27 21+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 10 27 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 27 10 27 11+ , SrcSpan "tests/examples/MultiWayIf.hs" 27 17 27 19+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 27 12 27 16+ , srcInfoPoints = []+ }+ "True")))+ ]+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 20 27 21+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 27 20 27 21+ , srcInfoPoints = []+ }+ 0+ "0"))+ ])))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 1 30 5+ , srcInfoPoints = []+ }+ "spam"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 6 30 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 6 30 7 ]+ }+ (MultiIf+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 8 30 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 8 30 10+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 11 30 11+ , SrcSpan "tests/examples/MultiWayIf.hs" 31 1 31 0+ ]+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 11 30 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 11 30 12+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 22 30 24+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 16 30 18 ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 14+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 14 30 15+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 14+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 14 30 15+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 13 30 14+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 14 30 15+ ]+ }))+ [])+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 20+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 20 30 21+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 20+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 20 30 21+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 19 30 20+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 20 30 21+ ]+ })))+ ]+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 26+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 26 30 27+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 26+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 26 30 27+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/MultiWayIf.hs" 30 25 30 26+ , SrcSpan "tests/examples/MultiWayIf.hs" 30 26 30 27+ ]+ })))+ ]))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/MultiWayIf.hs" 13 1 13 31)+ " taken from GHC's test suite"+ , Comment+ False+ (SrcSpan "tests/examples/MultiWayIf.hs" 29 1 29 13)+ " issue #98"+ ]+ )
+ tests/examples/MultiWayIf.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/MultiWayIf.hs.prettyprinter.golden view
@@ -0,0 +1,33 @@+{-# LANGUAGE MultiWayIf #-}+module MultiWayIf where+foo+ = if | test1 -> e1+ | test2 witharg -> e2+ | otherwise -> def+bar+ = if | test1 ->+ if | test2 -> e1+ | test3 -> e2+ | test4 -> e3+x = 10+x1+ = if | x < 10 -> "< 10"+ | otherwise -> ""+x2+ = if | x < 10 -> "< 10"+ | otherwise -> ""+x3+ = if | x < 10 -> "< 10"+ | otherwise -> ""+x4 = if | True -> "yes"+x5+ = if | True ->+ if | False -> 1+ | True -> 2+x6+ = if | x < 10 ->+ if | True -> "yes"+ | False -> "no"+ | otherwise -> "maybe"+x7 = (if | True -> 0)+spam = if | () <- () -> ()
+ tests/examples/NPlusK.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NPlusKPatterns #-}++f (n+3) = n
+ tests/examples/NPlusK.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NPlusK.hs.parser.golden view
@@ -0,0 +1,97 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NPlusK.hs" 1 1 1 1+ , SrcSpan "tests/examples/NPlusK.hs" 3 1 3 1+ , SrcSpan "tests/examples/NPlusK.hs" 3 1 3 1+ , SrcSpan "tests/examples/NPlusK.hs" 3 1 3 1+ , SrcSpan "tests/examples/NPlusK.hs" 4 1 4 1+ , SrcSpan "tests/examples/NPlusK.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NPlusK.hs" 1 1 1 13+ , SrcSpan "tests/examples/NPlusK.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "NPlusKPatterns"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 1 3 12+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 1 3 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 3 3 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NPlusK.hs" 3 3 3 4+ , SrcSpan "tests/examples/NPlusK.hs" 3 7 3 8+ ]+ }+ (PNPlusK+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 4 3 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NPlusK.hs" 3 5 3 6+ , SrcSpan "tests/examples/NPlusK.hs" 3 6 3 7+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 4 3 5+ , srcInfoPoints = []+ }+ "n")+ 3)+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 9 3 12+ , srcInfoPoints = [ SrcSpan "tests/examples/NPlusK.hs" 3 9 3 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NPlusK.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ "n"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/NPlusK.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NPlusK.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE NPlusKPatterns #-}+f (n + 3) = n
+ tests/examples/NegPrimWordLiteral.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE MagicHash #-}+dummyWord = W# (-0x8000000000000000##)
+ tests/examples/NegPrimWordLiteral.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1) "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegPrimWordLiteral.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1)+ "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegPrimWordLiteral.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1) "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegPrimWordLiteral.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NegPrimWordLiteral.hs" 3 1) "Parse error: negative primitive word literal: - 9223372036854775808##"
+ tests/examples/NegativePatterns.hs view
@@ -0,0 +1,15 @@+f 1 = -1+f (-1) = 1+f ( - 2) = 2+f ( - 3) = 3++data Z a = Higher a a | Same a a | Lower a a++infixr 7 `Higher`+infixr 6 `Same`+infixr 5 `Lower`++g :: Z Int -> ()+g ( -1 `Higher` x) = ()+g ( - 2 `Same` x) = ()+g ( - 3 `Lower` x) = ()
+ tests/examples/NegativePatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NegativePatterns.hs.parser.golden view
@@ -0,0 +1,1052 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 1 16 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 2 1 2 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 3 1 3 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 4 1 4 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 6 1 6 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 8 1 8 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 9 1 9 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 10 1 10 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 12 1 12 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 13 1 13 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 14 1 14 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 15 1 15 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 16 1 16 1+ , SrcSpan "tests/examples/NegativePatterns.hs" 16 1 16 1+ ]+ }+ Nothing+ []+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 1 4 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 1 1 2+ , srcInfoPoints = []+ }+ "f")+ [ PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 3 1 4+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 3 1 4+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 3 1 4+ , srcInfoPoints = []+ }+ 1+ "1")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 5 1 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 1 5 1 6 ]+ }+ (NegApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 7 1 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 1 7 1 8 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ 1+ "1"))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 1 2 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 3 2 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 2 3 2 4+ , SrcSpan "tests/examples/NegativePatterns.hs" 2 6 2 7+ ]+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 5 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 2 4 2 5 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 5 2 6+ , srcInfoPoints = []+ }+ 1+ "1"))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 8 2 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 2 8 2 9 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 1 3 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 3 3 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 3 3 3 4+ , SrcSpan "tests/examples/NegativePatterns.hs" 3 8 3 9+ ]+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 6 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 3 5 3 6 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 7 3 8+ , srcInfoPoints = []+ }+ 2+ "2"))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 10 3 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 3 10 3 11 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ 2+ "2")))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 1 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 3 4 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 4 3 4 4+ , SrcSpan "tests/examples/NegativePatterns.hs" 4 10 4 11+ ]+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 7 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 4 6 4 7 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ 3+ "3"))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 12 4 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 4 12 4 13 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 1 6 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 6 10 6 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 6 23 6 24+ , SrcSpan "tests/examples/NegativePatterns.hs" 6 34 6 35+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 1 6 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 6 6 9+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 6 6 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 6 6 7+ , srcInfoPoints = []+ }+ "Z"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 12 6 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 12 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 12 6 18+ , srcInfoPoints = []+ }+ "Higher")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 19 6 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 19 6 20+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ "a")+ ])+ , QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 25 6 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 25 6 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 25 6 29+ , srcInfoPoints = []+ }+ "Same")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 30 6 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 30 6 31+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 32 6 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 32 6 33+ , srcInfoPoints = []+ }+ "a")+ ])+ , QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 36 6 45+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 36 6 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 36 6 41+ , srcInfoPoints = []+ }+ "Lower")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 42 6 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 42 6 43+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 44 6 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 6 44 6 45+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 8 1 8 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 8 8 8 9 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 8 1 8 7+ , srcInfoPoints = []+ })+ (Just 7)+ [ ConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 8 11 8 17+ , SrcSpan "tests/examples/NegativePatterns.hs" 8 17 8 18+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 8 10 8 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 8 11 8 17+ , SrcSpan "tests/examples/NegativePatterns.hs" 8 17 8 18+ ]+ }+ "Higher")+ ]+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 9 1 9 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 9 8 9 9 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 9 1 9 7+ , srcInfoPoints = []+ })+ (Just 6)+ [ ConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 9 11 9 15+ , SrcSpan "tests/examples/NegativePatterns.hs" 9 15 9 16+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 9 10 9 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 9 11 9 15+ , SrcSpan "tests/examples/NegativePatterns.hs" 9 15 9 16+ ]+ }+ "Same")+ ]+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 10 1 10 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 10 8 10 9 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 10 1 10 7+ , srcInfoPoints = []+ })+ (Just 5)+ [ ConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 10 11 10 16+ , SrcSpan "tests/examples/NegativePatterns.hs" 10 16 10 17+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 10 10 10 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 10 11 10 16+ , SrcSpan "tests/examples/NegativePatterns.hs" 10 16 10 17+ ]+ }+ "Lower")+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 1 12 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 12 3 12 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 1 12 2+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 12 12 12 14 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 11+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 6 12 7+ , srcInfoPoints = []+ }+ "Z")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 8 12 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 8 12 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 8 12 11+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 16+ , SrcSpan "tests/examples/NegativePatterns.hs" 12 16 12 17+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 16+ , SrcSpan "tests/examples/NegativePatterns.hs" 12 16 12 17+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 12 15 12 16+ , SrcSpan "tests/examples/NegativePatterns.hs" 12 16 12 17+ ]+ }))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 1 15 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 1 13 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 1 13 2+ , srcInfoPoints = []+ }+ "g")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 3 13 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 3 13 4+ , SrcSpan "tests/examples/NegativePatterns.hs" 13 21 13 22+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 21+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 8 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 7 13 8 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 8 13 9+ , srcInfoPoints = []+ }+ 1+ "1"))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 10 13 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 10 13 11+ , SrcSpan "tests/examples/NegativePatterns.hs" 13 11 13 17+ , SrcSpan "tests/examples/NegativePatterns.hs" 13 17 13 18+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 11 13 17+ , srcInfoPoints = []+ }+ "Higher"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 20 13 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 20 13 21+ , srcInfoPoints = []+ }+ "x")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 23 13 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 23 13 24 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 13 26 13 27+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 13 26 13 27+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 13 25 13 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 13 26 13 27+ ]+ }))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 1 14 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 1 14 2+ , srcInfoPoints = []+ }+ "g")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 3 14 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 3 14 4+ , SrcSpan "tests/examples/NegativePatterns.hs" 14 21 14 22+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 21+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 7 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 6 14 7 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ 2+ "2"))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 11 14 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 11 14 12+ , SrcSpan "tests/examples/NegativePatterns.hs" 14 12 14 16+ , SrcSpan "tests/examples/NegativePatterns.hs" 14 16 14 17+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 12 14 16+ , srcInfoPoints = []+ }+ "Same"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 20 14 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 20 14 21+ , srcInfoPoints = []+ }+ "x")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 23 14 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 23 14 24 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 14 26 14 27+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 14 26 14 27+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 14 25 14 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 14 26 14 27+ ]+ }))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 1 15 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 1 15 2+ , srcInfoPoints = []+ }+ "g")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 3 15 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 3 15 4+ , SrcSpan "tests/examples/NegativePatterns.hs" 15 21 15 22+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 21+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 6 ]+ }+ (Negative+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 5 15 6 ]+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 10 15 11+ , srcInfoPoints = []+ }+ 3+ "3"))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 12 15 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 12 15 13+ , SrcSpan "tests/examples/NegativePatterns.hs" 15 13 15 18+ , SrcSpan "tests/examples/NegativePatterns.hs" 15 18 15 19+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 13 15 18+ , srcInfoPoints = []+ }+ "Lower"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 20 15 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 20 15 21+ , srcInfoPoints = []+ }+ "x")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 23 15 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 23 15 24 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 15 26 15 27+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 15 26 15 27+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NegativePatterns.hs" 15 25 15 26+ , SrcSpan "tests/examples/NegativePatterns.hs" 15 26 15 27+ ]+ }))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/NegativePatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NegativePatterns.hs.prettyprinter.golden view
@@ -0,0 +1,19 @@+f 1 = -1+f (-1) = 1+f (-2) = 2+f (-3) = 3++data Z a = Higher a a+ | Same a a+ | Lower a a++infixr 7 `Higher`++infixr 6 `Same`++infixr 5 `Lower`++g :: Z Int -> ()+g (-1 `Higher` x) = ()+g (-2 `Same` x) = ()+g (-3 `Lower` x) = ()
+ tests/examples/NestedAsPat.hs view
@@ -0,0 +1,3 @@+module NestedAsPat where++nestedAsPat [x@(Just _)] = undefined
+ tests/examples/NestedAsPat.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NestedAsPat.hs.parser.golden view
@@ -0,0 +1,127 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 1+ , SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 1+ , SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 1+ , SrcSpan "tests/examples/NestedAsPat.hs" 4 1 4 1+ , SrcSpan "tests/examples/NestedAsPat.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NestedAsPat.hs" 1 1 1 7+ , SrcSpan "tests/examples/NestedAsPat.hs" 1 20 1 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 1 8 1 19+ , srcInfoPoints = []+ }+ "NestedAsPat")+ Nothing+ Nothing))+ []+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 37+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 1 3 12+ , srcInfoPoints = []+ }+ "nestedAsPat")+ [ PList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 13 3 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NestedAsPat.hs" 3 13 3 14+ , SrcSpan "tests/examples/NestedAsPat.hs" 3 24 3 25+ ]+ }+ [ PAsPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 14 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NestedAsPat.hs" 3 15 3 16 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ "x")+ (PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 16 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NestedAsPat.hs" 3 16 3 17+ , SrcSpan "tests/examples/NestedAsPat.hs" 3 23 3 24+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 17 3 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 17 3 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/NestedAsPat.hs" 3 17 3 21+ , srcInfoPoints = []+ }+ "Just"))+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 22 3 23+ , srcInfoPoints = []+ }+ ]))+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 26 3 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/NestedAsPat.hs" 3 26 3 27 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 28 3 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 28 3 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/NestedAsPat.hs" 3 28 3 37+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/NestedAsPat.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/NestedAsPat.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module NestedAsPat where+nestedAsPat [x@(Just _)] = undefined
+ tests/examples/NoStartNumIdents.hs view
@@ -0,0 +1,1 @@+1a = ()
+ tests/examples/NoStartNumIdents.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
+ tests/examples/NoStartNumIdents.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1)+ "Parse error in pattern: 1"
+ tests/examples/NoStartNumIdents.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
+ tests/examples/NoStartNumIdents.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
+ tests/examples/NonDecreasing.hs view
@@ -0,0 +1,9 @@+module NonDecreasing where++-- This should not work unless NondecreasingIndentation is+-- on (which is is by default in GHC)+main = do+ print 16+ do+ print 17+ print 18
+ tests/examples/NonDecreasing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NonDecreasing.hs" 8 3) "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/NonDecreasing.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/NonDecreasing.hs" 8 3)+ "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/NonDecreasing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NonDecreasing.hs" 8 3) "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/NonDecreasing.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/NonDecreasing.hs" 8 3) "Parse error: Last statement in a do-block must be an expression"
+ tests/examples/Nounpack2.hs view
@@ -0,0 +1,3 @@+++data Foo = Foo {-# NOUNPACK #-} Int
+ tests/examples/Nounpack2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Nounpack2.hs.parser.golden view
@@ -0,0 +1,96 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 1+ , SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 1+ , SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 1+ , SrcSpan "tests/examples/Nounpack2.hs" 4 1 4 1+ , SrcSpan "tests/examples/Nounpack2.hs" 4 1 4 1+ ]+ }+ Nothing+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Nounpack2.hs" 3 10 3 11 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ "Foo"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 12 3 36+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 12 3 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ "Foo")+ [ TyBang+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 16 3 36+ , srcInfoPoints = []+ }+ (NoStrictAnnot+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "" (-1) (-1) (-1) (-1)+ , srcInfoPoints = []+ })+ (NoUnpack+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 16 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Nounpack2.hs" 3 16 3 28+ , SrcSpan "tests/examples/Nounpack2.hs" 3 29 3 32+ ]+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 33 3 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 33 3 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Nounpack2.hs" 3 33 3 36+ , srcInfoPoints = []+ }+ "Int")))+ ])+ ]+ []+ ]+ , []+ )
+ tests/examples/Nounpack2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Nounpack2.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+data Foo = Foo {-# NOUNPACK #-} Int
+ tests/examples/OptionsPragma.hs view
@@ -0,0 +1,2 @@+{-# OPTIONS -fno-warn-orphans #-}+
+ tests/examples/OptionsPragma.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OptionsPragma.hs.parser.golden view
@@ -0,0 +1,28 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/OptionsPragma.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OptionsPragma.hs" 1 1 1 1+ , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+ , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+ , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+ , SrcSpan "tests/examples/OptionsPragma.hs" 3 1 3 1+ ]+ }+ Nothing+ [ OptionsPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/OptionsPragma.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OptionsPragma.hs" 1 1 1 31+ , SrcSpan "tests/examples/OptionsPragma.hs" 1 31 1 34+ ]+ }+ Nothing+ "-fno-warn-orphans "+ ]+ []+ []+ , []+ )
+ tests/examples/OptionsPragma.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OptionsPragma.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+{-# OPTIONS -fno-warn-orphans #-}
+ tests/examples/Overlapable.hs view
@@ -0,0 +1,6 @@+instance {-# OVERLAP #-} C a++instance {-# NO_OVERLAP #-} C a++instance {-# INCOHERENT #-} C a+
+ tests/examples/Overlapable.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapable.hs.parser.golden view
@@ -0,0 +1,176 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapable.hs" 1 1 1 1+ , SrcSpan "tests/examples/Overlapable.hs" 1 1 1 1+ , SrcSpan "tests/examples/Overlapable.hs" 1 1 1 1+ , SrcSpan "tests/examples/Overlapable.hs" 3 1 3 1+ , SrcSpan "tests/examples/Overlapable.hs" 5 1 5 1+ , SrcSpan "tests/examples/Overlapable.hs" 7 1 7 1+ , SrcSpan "tests/examples/Overlapable.hs" 7 1 7 1+ ]+ }+ Nothing+ []+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapable.hs" 1 1 1 9 ]+ }+ (Just+ (Overlap+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 10 1 21+ , srcInfoPoints = []+ }))+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 29+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 29+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 26 1 27+ , srcInfoPoints = []+ }+ "C")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 28 1 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 1 28 1 29+ , srcInfoPoints = []+ }+ "a"))))+ Nothing+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 1 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapable.hs" 3 1 3 9 ]+ }+ (Just+ (NoOverlap+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 10 3 24+ , srcInfoPoints = []+ }))+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 32+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 32+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 29 3 30+ , srcInfoPoints = []+ }+ "C")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 31 3 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 3 31 3 32+ , srcInfoPoints = []+ }+ "a"))))+ Nothing+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 1 5 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapable.hs" 5 1 5 9 ]+ }+ (Just+ (Incoherent+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 10 5 24+ , srcInfoPoints = []+ }))+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 32+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 32+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 29 5 30+ , srcInfoPoints = []+ }+ "C")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapable.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ "a"))))+ Nothing+ ]+ , []+ )
+ tests/examples/Overlapable.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapable.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+instance {-# OVERLAP #-} C a++instance {-# NO_OVERLAP #-} C a++instance {-# INCOHERENT #-} C a
+ tests/examples/Overlapping.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}++module Overlapping where++class C a b where+ f :: a -> b -> Bool++instance C a b where+ f _ _ = False++instance {-# OVERLAPPING #-} C a a where+ f _ _ = True++instance {-# OVERLAPS #-} C a a where+ f _ _ = True++instance {-# OVERLAPPABLE #-} C a a where+ f _ _ = True++-- >>> f 'a' 'b'+-- True+--+-- >>> f 'a' "starfish"+-- False
+ tests/examples/Overlapping.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapping.hs.parser.golden view
@@ -0,0 +1,730 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 1 1 26 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 1 1 1 1+ , SrcSpan "tests/examples/Overlapping.hs" 2 1 2 1+ , SrcSpan "tests/examples/Overlapping.hs" 4 1 4 1+ , SrcSpan "tests/examples/Overlapping.hs" 4 1 4 1+ , SrcSpan "tests/examples/Overlapping.hs" 6 1 6 1+ , SrcSpan "tests/examples/Overlapping.hs" 9 1 9 1+ , SrcSpan "tests/examples/Overlapping.hs" 12 1 12 1+ , SrcSpan "tests/examples/Overlapping.hs" 15 1 15 1+ , SrcSpan "tests/examples/Overlapping.hs" 18 1 18 1+ , SrcSpan "tests/examples/Overlapping.hs" 26 1 26 1+ , SrcSpan "tests/examples/Overlapping.hs" 26 1 26 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 4 1 4 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 4 1 4 7+ , SrcSpan "tests/examples/Overlapping.hs" 4 20 4 25+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 4 8 4 19+ , srcInfoPoints = []+ }+ "Overlapping")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 1 1 1 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 1 1 1 13+ , SrcSpan "tests/examples/Overlapping.hs" 1 36 1 39+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 1 14 1 31+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 2 1 2 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 2 1 2 13+ , SrcSpan "tests/examples/Overlapping.hs" 2 36 2 39+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 2 14 2 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 1 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 6 1 6 6+ , SrcSpan "tests/examples/Overlapping.hs" 6 13 6 18+ , SrcSpan "tests/examples/Overlapping.hs" 7 3 7 3+ , SrcSpan "tests/examples/Overlapping.hs" 9 1 9 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 12+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 7 6 8+ , srcInfoPoints = []+ }+ "C"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ "b")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 3 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 7 5 7 7 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 3 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 7 5 7 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 3 7 4+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 8 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 7 10 7 12 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 8 7 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 8 7 9+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 13 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 7 15 7 17 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 13 7 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 13 7 14+ , srcInfoPoints = []+ }+ "b"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 18 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 7 18 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 7 18 7 22+ , srcInfoPoints = []+ }+ "Bool"))))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 1 12 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 9 1 9 9+ , SrcSpan "tests/examples/Overlapping.hs" 9 16 9 21+ , SrcSpan "tests/examples/Overlapping.hs" 10 3 10 3+ , SrcSpan "tests/examples/Overlapping.hs" 12 1 12 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 15+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 13+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 10 9 11+ , srcInfoPoints = []+ }+ "C")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 12 9 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 12 9 13+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 14 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 9 14 9 15+ , srcInfoPoints = []+ }+ "b"))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 16+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 3 10 4+ , srcInfoPoints = []+ }+ "f")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 5 10 6+ , srcInfoPoints = []+ }+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 7 10 8+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 9 10 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 10 9 10 10 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 10 11 10 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 10 11 10 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 10 11 10 16+ , srcInfoPoints = []+ }+ "False"))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 1 15 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 12 1 12 9+ , SrcSpan "tests/examples/Overlapping.hs" 12 36 12 41+ , SrcSpan "tests/examples/Overlapping.hs" 13 3 13 3+ , SrcSpan "tests/examples/Overlapping.hs" 15 1 15 0+ ]+ }+ (Just+ (Overlapping+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 10 12 25+ , srcInfoPoints = []+ }))+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 35+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 35+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 33+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 30 12 31+ , srcInfoPoints = []+ }+ "C")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 32 12 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 32 12 33+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 34 12 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 12 34 12 35+ , srcInfoPoints = []+ }+ "a"))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 15+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 3 13 4+ , srcInfoPoints = []+ }+ "f")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 5 13 6+ , srcInfoPoints = []+ }+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 7 13 8+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 9 13 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 13 9 13 10 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 13 11 13 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 13 11 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 13 11 13 15+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 1 18 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 15 1 15 9+ , SrcSpan "tests/examples/Overlapping.hs" 15 33 15 38+ , SrcSpan "tests/examples/Overlapping.hs" 16 3 16 3+ , SrcSpan "tests/examples/Overlapping.hs" 18 1 18 0+ ]+ }+ (Just+ (Overlaps+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 10 15 22+ , srcInfoPoints = []+ }))+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 32+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 32+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 30+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 27 15 28+ , srcInfoPoints = []+ }+ "C")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 29 15 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 29 15 30+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 31 15 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 15 31 15 32+ , srcInfoPoints = []+ }+ "a"))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 15+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 3 16 4+ , srcInfoPoints = []+ }+ "f")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 5 16 6+ , srcInfoPoints = []+ }+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 7 16 8+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 9 16 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 16 9 16 10 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 16 11 16 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 16 11 16 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 16 11 16 15+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 1 26 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 18 1 18 9+ , SrcSpan "tests/examples/Overlapping.hs" 18 37 18 42+ , SrcSpan "tests/examples/Overlapping.hs" 19 3 19 3+ , SrcSpan "tests/examples/Overlapping.hs" 26 1 26 0+ ]+ }+ (Just+ (Overlappable+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 10 18 26+ , srcInfoPoints = []+ }))+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 36+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 36+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 34+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 31 18 32+ , srcInfoPoints = []+ }+ "C")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 33 18 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 33 18 34+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 35 18 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 18 35 18 36+ , srcInfoPoints = []+ }+ "a"))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 15+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 3 19 4+ , srcInfoPoints = []+ }+ "f")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 5 19 6+ , srcInfoPoints = []+ }+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 7 19 8+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 9 19 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Overlapping.hs" 19 9 19 10 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Overlapping.hs" 19 11 19 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 19 11 19 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Overlapping.hs" 19 11 19 15+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ])+ ])+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/Overlapping.hs" 21 1 21 17)+ " >>> f 'a' 'b'"+ , Comment+ False (SrcSpan "tests/examples/Overlapping.hs" 22 1 22 8) " True"+ , Comment+ False (SrcSpan "tests/examples/Overlapping.hs" 23 1 23 3) ""+ , Comment+ False+ (SrcSpan "tests/examples/Overlapping.hs" 24 1 24 24)+ " >>> f 'a' \"starfish\""+ , Comment+ False (SrcSpan "tests/examples/Overlapping.hs" 25 1 25 9) " False"+ ]+ )
+ tests/examples/Overlapping.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Overlapping.hs.prettyprinter.golden view
@@ -0,0 +1,18 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+module Overlapping where++class C a b where+ f :: a -> b -> Bool++instance C a b where+ f _ _ = False++instance {-# OVERLAPPING #-} C a a where+ f _ _ = True++instance {-# OVERLAPS #-} C a a where+ f _ _ = True++instance {-# OVERLAPPABLE #-} C a a where+ f _ _ = True
+ tests/examples/OverloadedLabels.hs view
@@ -0,0 +1,29 @@+-- Basic tests of overloaded labels++{-# LANGUAGE OverloadedLabels+ , DataKinds+ , FlexibleContexts+ , FlexibleInstances+ , MultiParamTypeClasses+ , NoMonomorphismRestriction+ #-}++import GHC.OverloadedLabels++instance IsLabel "true" Bool where+ fromLabel _ = True++instance IsLabel "_False1'" Bool where+ fromLabel _ = False++a :: IsLabel "true" t => t+a = #true++b = #_False1'++c :: Bool+c = #true++main = do print (a :: Bool)+ print (b :: Bool)+ print c
+ tests/examples/OverloadedLabels.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OverloadedLabels.hs.parser.golden view
@@ -0,0 +1,911 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 30 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 3 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 13 1 13 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 16 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 24 1 24 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 27 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 30 1 30 1+ , SrcSpan "tests/examples/OverloadedLabels.hs" 30 1 30 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 9 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 3 1 3 13+ , SrcSpan "tests/examples/OverloadedLabels.hs" 4 12 4 13+ , SrcSpan "tests/examples/OverloadedLabels.hs" 5 12 5 13+ , SrcSpan "tests/examples/OverloadedLabels.hs" 6 12 6 13+ , SrcSpan "tests/examples/OverloadedLabels.hs" 7 12 7 13+ , SrcSpan "tests/examples/OverloadedLabels.hs" 8 12 8 13+ , SrcSpan "tests/examples/OverloadedLabels.hs" 9 3 9 6+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 3 14 3 30+ , srcInfoPoints = []+ }+ "OverloadedLabels"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 4 14 4 23+ , srcInfoPoints = []+ }+ "DataKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 5 14 5 30+ , srcInfoPoints = []+ }+ "FlexibleContexts"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 6 14 6 31+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 7 14 7 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 8 14 8 39+ , srcInfoPoints = []+ }+ "NoMonomorphismRestriction"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 11 1 11 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 11 8 11 28+ , srcInfoPoints = []+ }+ "GHC.OverloadedLabels"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 1 16 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 13 1 13 9+ , SrcSpan "tests/examples/OverloadedLabels.hs" 13 30 13 35+ , SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 3+ , SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 16 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 29+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 29+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 24+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 10 13 17+ , srcInfoPoints = []+ }+ "IsLabel")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 18 13 24+ , srcInfoPoints = []+ }+ (PromotedString+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 18 13 24+ , srcInfoPoints = []+ }+ "true"+ "true")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 25 13 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 25 13 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 13 25 13 29+ , srcInfoPoints = []+ }+ "Bool")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 21+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 21+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 3 14 12+ , srcInfoPoints = []+ }+ "fromLabel")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 13 14 14+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 15 14 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 14 15 14 16 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 17 14 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 17 14 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 14 17 14 21+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 19 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 16 1 16 9+ , SrcSpan "tests/examples/OverloadedLabels.hs" 16 34 16 39+ , SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 3+ , SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 33+ , srcInfoPoints = []+ }+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 28+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 10 16 17+ , srcInfoPoints = []+ }+ "IsLabel")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 18 16 28+ , srcInfoPoints = []+ }+ (PromotedString+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 18 16 28+ , srcInfoPoints = []+ }+ "_False1'"+ "_False1'")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 29 16 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 29 16 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 16 29 16 33+ , srcInfoPoints = []+ }+ "Bool")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 22+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 22+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 3 17 12+ , srcInfoPoints = []+ }+ "fromLabel")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 13 17 14+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 15 17 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 17 15 17 16 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 17 17 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 17 17 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 17 17 17 22+ , srcInfoPoints = []+ }+ "False"))))+ Nothing+ ])+ ])+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 3 19 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 1 19 2+ , srcInfoPoints = []+ }+ "a"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 27+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13+ , srcInfoPoints = []+ }+ "IsLabel")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20+ , srcInfoPoints = []+ }+ (PromotedString+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20+ , srcInfoPoints = []+ }+ "true"+ "true")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22+ , srcInfoPoints = []+ }+ "t"))))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 26 19 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 19 26 19 27+ , srcInfoPoints = []+ }+ "t")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 20 1 20 2+ , srcInfoPoints = []+ }+ "a"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 20 3 20 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 20 3 20 4 ]+ }+ (OverloadedLabel+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 20 5 20 10+ , srcInfoPoints = []+ }+ "true"))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 22 1 22 2+ , srcInfoPoints = []+ }+ "b"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 22 3 22 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 22 3 22 4 ]+ }+ (OverloadedLabel+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 22 5 22 14+ , srcInfoPoints = []+ }+ "_False1'"))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 24 1 24 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 24 3 24 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 24 1 24 2+ , srcInfoPoints = []+ }+ "c"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 24 6 24 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 24 6 24 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 24 6 24 10+ , srcInfoPoints = []+ }+ "Bool")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 25 1 25 2+ , srcInfoPoints = []+ }+ "c"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 25 3 25 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 25 3 25 4 ]+ }+ (OverloadedLabel+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 25 5 25 10+ , srcInfoPoints = []+ }+ "true"))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 29 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 27 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 1 27 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 6 29 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 6 27 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 8 29 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 8 27 10+ , SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 11+ , SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 11+ , SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 11+ , SrcSpan "tests/examples/OverloadedLabels.hs" 30 1 30 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 11 27 16+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 17 27 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 17 27 18+ , SrcSpan "tests/examples/OverloadedLabels.hs" 27 27 27 28+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 27 20 27 22 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 18 27 19+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 23 27 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 23 27 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 27 23 27 27+ , srcInfoPoints = []+ }+ "Bool"))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 11 28 16+ , srcInfoPoints = []+ }+ "print")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 17 28 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 28 17 28 18+ , SrcSpan "tests/examples/OverloadedLabels.hs" 28 27 28 28+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/OverloadedLabels.hs" 28 20 28 22 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 18 28 19+ , srcInfoPoints = []+ }+ "b")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 23 28 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 23 28 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 28 23 28 27+ , srcInfoPoints = []+ }+ "Bool"))))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 18+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 11 29 16+ , srcInfoPoints = []+ }+ "print")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 17 29 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 17 29 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/OverloadedLabels.hs" 29 17 29 18+ , srcInfoPoints = []+ }+ "c"))))+ ]))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/OverloadedLabels.hs" 1 1 1 36)+ " Basic tests of overloaded labels"+ ]+ )
+ tests/examples/OverloadedLabels.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/OverloadedLabels.hs.prettyprinter.golden view
@@ -0,0 +1,21 @@+{-# LANGUAGE OverloadedLabels, DataKinds, FlexibleContexts,+ FlexibleInstances, MultiParamTypeClasses, NoMonomorphismRestriction+ #-}+import GHC.OverloadedLabels++instance IsLabel "true" Bool where+ fromLabel _ = True++instance IsLabel "_False1'" Bool where+ fromLabel _ = False++a :: IsLabel "true" t => t+a = #true+b = #_False1'++c :: Bool+c = #true+main+ = do print (a :: Bool)+ print (b :: Bool)+ print c
+ tests/examples/PackageImports.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE PackageImports #-}+module PackageImports where++import "wibble" PackageImports.Default+import "wibble" PackageImports.Builtin.All
+ tests/examples/PackageImports.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PackageImports.hs.parser.golden view
@@ -0,0 +1,100 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PackageImports.hs" 1 1 1 1+ , SrcSpan "tests/examples/PackageImports.hs" 2 1 2 1+ , SrcSpan "tests/examples/PackageImports.hs" 2 1 2 1+ , SrcSpan "tests/examples/PackageImports.hs" 4 1 4 1+ , SrcSpan "tests/examples/PackageImports.hs" 5 1 5 1+ , SrcSpan "tests/examples/PackageImports.hs" 6 1 6 1+ , SrcSpan "tests/examples/PackageImports.hs" 6 1 6 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 2 1 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PackageImports.hs" 2 1 2 7+ , SrcSpan "tests/examples/PackageImports.hs" 2 23 2 28+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 2 8 2 22+ , srcInfoPoints = []+ }+ "PackageImports")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PackageImports.hs" 1 1 1 13+ , SrcSpan "tests/examples/PackageImports.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PackageImports.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "PackageImports"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 4 1 4 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PackageImports.hs" 4 1 4 7+ , SrcSpan "tests/examples/PackageImports.hs" 4 8 4 16+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PackageImports.hs" 4 17 4 39+ , srcInfoPoints = []+ }+ "PackageImports.Default"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Just "wibble"+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PackageImports.hs" 5 1 5 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PackageImports.hs" 5 1 5 7+ , SrcSpan "tests/examples/PackageImports.hs" 5 8 5 16+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PackageImports.hs" 5 17 5 43+ , srcInfoPoints = []+ }+ "PackageImports.Builtin.All"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Just "wibble"+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ []+ , []+ )
+ tests/examples/PackageImports.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PackageImports.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE PackageImports #-}+module PackageImports where+import "wibble" PackageImports.Default+import "wibble" PackageImports.Builtin.All
+ tests/examples/PackageImportsMissing.hs view
@@ -0,0 +1,4 @@+module PackageImportsMissing where++import "wibble" PackageImports.Default+import "wibble" PackageImports.Builtin.All
+ tests/examples/PackageImportsMissing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17) "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/PackageImportsMissing.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17)+ "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/PackageImportsMissing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17) "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/PackageImportsMissing.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/PackageImportsMissing.hs" 3 17) "PackageImports language extension is not enabled. Please add {-# LANGUAGE PackageImports #-} pragma at the top of your module."
+ tests/examples/ParallelArrays.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE ParallelArrays #-}++dotp_double :: [:Double:] -> [:Double:] -> Double+dotp_double xs ys = sumP [:x * y | x <- xs | y <- ys:]++
+ tests/examples/ParallelArrays.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelArrays.hs.parser.golden view
@@ -0,0 +1,384 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 1 1 1 1+ , SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 1+ , SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 1+ , SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 1+ , SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 1+ , SrcSpan "tests/examples/ParallelArrays.hs" 7 1 7 1+ , SrcSpan "tests/examples/ParallelArrays.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 1 1 1 13+ , SrcSpan "tests/examples/ParallelArrays.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "ParallelArrays"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 3 13 3 15 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 3 1 3 12+ , srcInfoPoints = []+ }+ "dotp_double"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 16 3 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 3 27 3 29 ]+ }+ (TyParArray+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 16 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 3 16 3 18+ , SrcSpan "tests/examples/ParallelArrays.hs" 3 24 3 26+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 18 3 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 18 3 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 18 3 24+ , srcInfoPoints = []+ }+ "Double"))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 30 3 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 3 41 3 43 ]+ }+ (TyParArray+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 30 3 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 3 30 3 32+ , SrcSpan "tests/examples/ParallelArrays.hs" 3 38 3 40+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 32 3 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 32 3 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 32 3 38+ , srcInfoPoints = []+ }+ "Double"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 44 3 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 44 3 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 3 44 3 50+ , srcInfoPoints = []+ }+ "Double")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 55+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParallelArrays.hs" 4 1 4 12+ , srcInfoPoints = []+ }+ "dotp_double")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 13 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 13 4 15+ , srcInfoPoints = []+ }+ "xs")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 16 4 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 16 4 18+ , srcInfoPoints = []+ }+ "ys")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 19 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 4 19 4 20 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 21 4 25+ , srcInfoPoints = []+ }+ "sumP")))+ (ParArrayComp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 26 4 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 4 26 4 28+ , SrcSpan "tests/examples/ParallelArrays.hs" 4 34 4 35+ , SrcSpan "tests/examples/ParallelArrays.hs" 4 44 4 45+ , SrcSpan "tests/examples/ParallelArrays.hs" 4 53 4 55+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 33+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 30 4 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 30 4 31+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 30 4 31+ , srcInfoPoints = []+ }+ "*")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 32 4 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 32 4 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 32 4 33+ , srcInfoPoints = []+ }+ "y"))))+ [ [ QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 4 38 4 40 ]+ }+ (Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 4 38 4 40 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 36 4 37+ , srcInfoPoints = []+ }+ "x"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 41 4 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 41 4 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 41 4 43+ , srcInfoPoints = []+ }+ "xs"))))+ ]+ , [ QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 4 48 4 50 ]+ }+ (Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelArrays.hs" 4 48 4 50 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 46 4 47+ , srcInfoPoints = []+ }+ "y"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 51 4 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 51 4 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelArrays.hs" 4 51 4 53+ , srcInfoPoints = []+ }+ "ys"))))+ ]+ ])))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/ParallelArrays.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelArrays.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ParallelArrays #-}++dotp_double :: [:Double:] -> [:Double:] -> Double+dotp_double xs ys = sumP [:x * y| x <- xs| y <- ys:]
+ tests/examples/ParallelArrays2.hs view
@@ -0,0 +1,4 @@+-- Should fail without extensions.+dotp_double :: [:Double:] -> [:Double:] -> Double+dotp_double xs ys = sumP [:x * y | x <- xs | y <- ys:]+
+ tests/examples/ParallelArrays2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelArrays2.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+ (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelArrays2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelArrays2.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/ParallelArrays2.hs" 2 17) "Parse error: :"
+ tests/examples/ParallelListComp.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE ParallelListComp #-}++f xs ys zs = [ (x,y,z) | x <- xs | y <- ys, y > 2 | z <- zs ]
+ tests/examples/ParallelListComp.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelListComp.hs.parser.golden view
@@ -0,0 +1,402 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 1 1 1 1+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 1+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 1+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 1+ , SrcSpan "tests/examples/ParallelListComp.hs" 4 1 4 1+ , SrcSpan "tests/examples/ParallelListComp.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 1 1 1 13+ , SrcSpan "tests/examples/ParallelListComp.hs" 1 31 1 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "ParallelListComp"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 62+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 3 3 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 3 3 5+ , srcInfoPoints = []+ }+ "xs")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 6 3 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 6 3 8+ , srcInfoPoints = []+ }+ "ys")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ "zs")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 12 3 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 12 3 13 ]+ }+ (ParComp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 14 3 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 14 3 15+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 24 3 25+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 34 3 35+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 43 3 44+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 51 3 52+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 61 3 62+ ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 16 3 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 16 3 17+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 18 3 19+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 20 3 21+ , SrcSpan "tests/examples/ParallelListComp.hs" 3 22 3 23+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ "x"))+ , Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 19 3 20+ , srcInfoPoints = []+ }+ "y"))+ , Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ "z"))+ ])+ [ [ QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 28 3 30 ]+ }+ (Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 28 3 30 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ "x"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 31 3 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 31 3 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 31 3 33+ , srcInfoPoints = []+ }+ "xs"))))+ ]+ , [ QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 38 3 40 ]+ }+ (Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 38 3 40 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 36 3 37+ , srcInfoPoints = []+ }+ "y"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 41 3 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 41 3 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 41 3 43+ , srcInfoPoints = []+ }+ "ys"))))+ , QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 50+ , srcInfoPoints = []+ }+ (Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 50+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 50+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 45 3 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ParallelListComp.hs" 3 45 3 46+ , srcInfoPoints = []+ }+ "y")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 47 3 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 47 3 48+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ParallelListComp.hs" 3 47 3 48+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 49 3 50+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 49 3 50+ , srcInfoPoints = []+ }+ 2+ "2"))))+ ]+ , [ QualStmt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 55 3 57 ]+ }+ (Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParallelListComp.hs" 3 55 3 57 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 53 3 54+ , srcInfoPoints = []+ }+ "z"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 58 3 60+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 58 3 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ParallelListComp.hs" 3 58 3 60+ , srcInfoPoints = []+ }+ "zs"))))+ ]+ ]))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/ParallelListComp.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParallelListComp.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE ParallelListComp #-}+f xs ys zs = [(x, y, z)| x <- xs| y <- ys, y > 2| z <- zs]
+ tests/examples/ParenFunBind.hs view
@@ -0,0 +1,3 @@+module ParenFunBind where++(foo x) y = x + y
+ tests/examples/ParenFunBind.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParenFunBind.hs.parser.golden view
@@ -0,0 +1,137 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 1+ , SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 1+ , SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 1+ , SrcSpan "tests/examples/ParenFunBind.hs" 4 1 4 1+ , SrcSpan "tests/examples/ParenFunBind.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParenFunBind.hs" 1 1 1 7+ , SrcSpan "tests/examples/ParenFunBind.hs" 1 21 1 26+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 1 8 1 20+ , srcInfoPoints = []+ }+ "ParenFunBind")+ Nothing+ Nothing))+ []+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 18+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParenFunBind.hs" 3 1 3 2+ , SrcSpan "tests/examples/ParenFunBind.hs" 3 7 3 8+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 2 3 5+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 11 3 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ParenFunBind.hs" 3 11 3 12 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 13 3 14+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ParenFunBind.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/ParenFunBind.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ParenFunBind.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module ParenFunBind where+foo x y = x + y
+ tests/examples/PartialSignatures.hs view
@@ -0,0 +1,293 @@+{-# LANGUAGE GADTs, NamedWildCards, ScopedTypeVariables #-}++bar :: Int -> _ Int+bar x = Foo True () x+++addAndOr1 :: _+addAndOr1 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y+++addAndOr2 :: _ -> _+addAndOr2 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y+++addAndOr3 :: _ -> _ -> _+addAndOr3 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y+++addAndOr4 :: (_ _ _) -> (_ _ _) -> (_ _ _)+addAndOr4 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y+++addAndOr5 :: (_, _) -> (_, _) -> (_, _)+addAndOr5 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y+++addAndOr6 :: (Int, _) -> (Bool, _) -> (_ Int Bool)+addAndOr6 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y+++bar :: _ -> _+bar x = not x+++alpha :: _+alpha = 3+++bravo :: _ => _+bravo = 3+++bravo :: _ => _+bravo = 3++barry :: _a -> (_b _a, _b _)+barry x = (Left "x", Right x)++foo :: a ~ Bool => (a, _)+foo = (True, False)+++every :: _ -> _ -> Bool+every _ [] = True+every p (x:xs) = p x && every p xs++every :: (_a -> Bool) -> [_a] -> Bool+every _ [] = True+every p (x:xs) = p x && every p xs+++bar :: Bool -> Bool+bar x = (x :: _)++bar :: _a -> _a+bar True = (False :: _a)+bar False = (True :: _a)+++arbitCs1 :: _ => a -> String+arbitCs1 x = show (succ x) ++ show (x == x)++arbitCs2 :: (Show a, _) => a -> String+arbitCs2 x = arbitCs1 x++arbitCs3 :: (Show a, Enum a, _) => a -> String+arbitCs3 x = arbitCs1 x++arbitCs4 :: (Eq a, _) => a -> String+arbitCs4 x = arbitCs1 x++arbitCs5 :: (Eq a, Enum a, Show a, _) => a -> String+arbitCs5 x = arbitCs1 x+++foo :: _ => String+foo = "x"++-- No extra constraints++++foo :: _ => a+foo = 3+++foo :: _ => a+foo = 3++fall :: forall a . _ -> a+fall v = v++bar :: _a -> _a+bar x = not x++foo :: (forall a. [a] -> [a]) -> _+foo x = (x [True, False], x ['a', 'b'])++foo :: (forall a. [a] -> [a]) -> (_, _ _)+foo x = (x [True, False], x ['a', 'b'])+++monoLoc :: forall a. a -> ((a, String), (a, _))+monoLoc x = (g True , g False)+ where+ g :: t -> (a, String)+ g _ = (x, "foo")++-- Test case for (fixed) bug that previously generated the following error message:++-- LocalDefinitionBug.hs:9:16:+-- GHC internal error: ‘a’ is not in scope during type checking, but it passed the renamer+-- tcl_env of environment: [alA :-> Type variable ‘_’ = _,+-- alC :-> Identifier[x::a, <NotTopLevel>],+-- alE :-> Type variable ‘t’ = t,+-- rjF :-> Identifier[monoLoc::a+-- -> ((a, String), (a, _)), <NotTopLevel>]]+-- In the type signature for ‘g’: g :: t -> (a, String)+-- In an equation for ‘monoLoc’:+-- monoLoc x+-- = (g True, g False)+-- where+-- g :: t -> (a, String)+-- g _ = (x, "foo")+++-- Fixed by using tcExtendTyVarEnv2 instead of tcExtendTyVarEnv++data NukeMonad a b c++instance Functor (NukeMonad a b) where+ fmap = undefined++instance Applicative (NukeMonad a b) where+ pure = undefined+ (<*>) = undefined++instance Monad (NukeMonad a b) where+ return = undefined+ (>>=) = undefined+++isMeltdown :: NukeMonad param1 param2 Bool+isMeltdown = undefined++unlessMeltdown :: _nm () -> _nm ()+unlessMeltdown c = do m <- isMeltdown+ if m then return () else c++++monoLoc :: forall a. a -> ((a, String), (a, String))+monoLoc x = (g True , g 'v')+ where+ -- g :: b -> (a, String) -- #1+ g :: b -> (a, _) -- #2+ g y = (x, "foo")++-- For #2, we should infer the same type as in #1.++foo :: (_a, b) -> (a, _b)+foo (x, y) = (x, y)+++f :: (_) => a -> a -> Bool+f x y = x == y+++foo :: _+Just foo = Just id+++foo :: Bool -> _+Just foo = Just id++bar :: Bool -> Bool+bar (x :: _) = True+++orr :: a -> a -> a+orr = undefined++g :: _+g = f `orr` True++f :: _+f = g+++test3 :: _+test3 x = const (let x :: _b+ x = True in False) $+ const (let x :: _b+ x = 'a' in True) $+ not x+++-- The named wildcards aren't scoped as the ScopedTypeVariables extension+-- isn't enabled, of which the behaviour is copied. Thus, the _a annotation of+-- x, which must be Bool, isn't the same as the _a in g, which is now+-- generalised over.+foo :: _a -> _+foo x = let v = not x+ g :: _a -> _a+ g x = x+ in (g 'x')++showTwo :: Show _a => _a -> String+showTwo x = show x+++bar :: _ -> Bool+bar _ = True+++data GenParser tok st a = GenParser tok st a++skipMany' :: GenParser tok st a -> GenParser tok st ()+skipMany' = undefined++skipMany :: _ -> _ ()+skipMany = skipMany'++somethingShowable :: Show _x => _x -> _+somethingShowable x = show (not x)+-- Inferred type: Bool -> String+++data I a = I a+instance Functor I where+ fmap f (I a) = I (f a)++newtype B t a = B a+instance Functor (B t) where+ fmap f (B a) = B (f a)++newtype H f = H (f ())++h1 :: _ => _+-- h :: Functor m => (a -> b) -> m a -> H m+h1 f b = (H . fmap (const ())) (fmap f b)++h2 :: _+-- h2 :: Functor m => (a -> b) -> m a -> H m+h2 f b = (H . fmap (const ())) (fmap f b)++app1 :: H (B t)+app1 = h1 (H . I) (B ())++app2 :: H (B t)+app2 = h2 (H . I) (B ())+++foo f = g+ where g r = x+ where x :: _+ x = r+++unc :: (_ -> _ -> _) -> (_, _) -> _+unc = uncurry++unc :: (_a -> _b -> _c) -> (_a, _b) -> _c+unc = uncurry+++foo :: (Show _a, _) => _a -> _+foo x = show (succ x)++bar :: _ -> _ -> _+bar x y = y x
+ tests/examples/PartialSignatures.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PartialSignatures.hs.parser.golden view
@@ -0,0 +1,16739 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 1 1 294 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 1 1 1 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 7 1 7 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 1 8 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 1 14 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 1 20 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 1 26 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 1 32 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 1 38 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 47 1 47 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 51 1 51 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 55 1 55 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 58 1 58 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 61 1 61 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 65 1 65 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 66 1 66 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 67 1 67 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 69 1 69 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 70 1 70 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 71 1 71 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 74 1 74 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 77 1 77 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 78 1 78 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 79 1 79 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 82 1 82 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 85 1 85 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 88 1 88 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 91 1 91 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 94 1 94 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 98 1 98 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 105 1 105 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 109 1 109 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 112 1 112 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 115 1 115 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 118 1 118 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 121 1 121 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 1 125 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 126 1 126 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 153 1 153 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 156 1 156 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 160 1 160 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 168 1 168 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 169 1 169 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 175 1 175 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 187 1 187 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 191 1 191 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 195 1 195 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 198 1 198 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 202 1 202 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 205 1 205 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 208 1 208 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 212 1 212 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 213 1 213 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 224 1 224 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 225 1 225 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 230 1 230 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 234 1 234 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 238 1 238 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 240 1 240 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 243 1 243 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 246 1 246 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 251 1 251 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 252 1 252 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 256 1 256 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 261 1 261 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 265 1 265 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 269 1 269 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 272 1 272 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 276 1 276 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 285 1 285 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 289 1 289 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 292 1 292 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 294 1 294 1+ , SrcSpan "tests/examples/PartialSignatures.hs" 294 1 294 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 1 1 1 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 1 1 1 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 1 19 1 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 1 35 1 36+ , SrcSpan "tests/examples/PartialSignatures.hs" 1 57 1 60+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 1 21 1 35+ , srcInfoPoints = []+ }+ "NamedWildCards"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 1 37 1 56+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 3 5 3 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 3 12 3 14 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 8 3 11+ , srcInfoPoints = []+ }+ "Int")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 15 3 20+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ Nothing)+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 17 3 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 17 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 3 17 3 20+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 22+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "bar")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 7 4 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 4 7 4 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 22+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 20+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 17+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ "Foo")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 13 4 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 13 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 13 4 17+ , srcInfoPoints = []+ }+ "True"))))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 4 19 4 20+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 4 19 4 20+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 4 18 4 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 4 19 4 20+ ]+ }))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 21 4 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 21 4 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 4 21 4 22+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 7 1 7 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 7 11 7 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 7 1 7 10+ , srcInfoPoints = []+ }+ "addAndOr1"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ Nothing)+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 1 10 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 9 3 9 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 1 10 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 9 3 9 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 1 8 10+ , srcInfoPoints = []+ }+ "addAndOr1")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 11 8 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 8 11 8 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 13 8 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 16 8 17+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 12 8 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 12 8 13+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 15 8 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 15 8 16+ , srcInfoPoints = []+ }+ "b")+ ]+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 18 8 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 8 18 8 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 20 8 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 23 8 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 19 8 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 19 8 20+ , srcInfoPoints = []+ }+ "c")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 22 8 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 22 8 23+ , srcInfoPoints = []+ }+ "d")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 25 8 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 8 25 8 26 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 27 8 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 8 27 8 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 38 8 39+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 46 8 47+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 28 8 29+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 31 8 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 35 8 36+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 8 30 8 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 31 8 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 8 35 8 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 31 8 35+ , srcInfoPoints = []+ }+ "plus")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 37 8 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 37 8 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 37 8 38+ , srcInfoPoints = []+ }+ "d")))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 40 8 41+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 42 8 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 42 8 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 42 8 44+ , srcInfoPoints = []+ }+ "||")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 45 8 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 45 8 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 8 45 8 46+ , srcInfoPoints = []+ }+ "c")))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 9 10 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 9 9 9 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 9 9 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 9 14 9 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 9 9 13+ , srcInfoPoints = []+ }+ "plus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 9 21 9 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 17 9 20+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 9 28 9 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 24 9 27+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 31 9 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 31 9 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 9 31 9 34+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ "x"))+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 12 10 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 10 11 10 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 10 12 10 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 10 16 10 17+ ]+ }+ "plus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 18 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 18 10 19+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 20 10 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 10 20 10 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 22 10 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 22 10 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 10 22 10 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 10 22 10 23+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 24 10 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 10 24 10 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 10 24 10 25+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 10 26 10 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 10 26 10 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 10 26 10 27+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 13 11 13 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 13 1 13 10+ , srcInfoPoints = []+ }+ "addAndOr2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 13 14 13 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 13 16 13 18 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 13 19 13 20+ , srcInfoPoints = []+ }+ Nothing))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 1 16 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 15 3 15 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 1 16 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 15 3 15 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 1 14 10+ , srcInfoPoints = []+ }+ "addAndOr2")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 11 14 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 14 11 14 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 13 14 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 16 14 17+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 12 14 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 12 14 13+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 15 14 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 15 14 16+ , srcInfoPoints = []+ }+ "b")+ ]+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 18 14 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 14 18 14 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 20 14 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 23 14 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 19 14 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 19 14 20+ , srcInfoPoints = []+ }+ "c")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 22 14 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 22 14 23+ , srcInfoPoints = []+ }+ "d")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 25 14 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 14 25 14 26 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 27 14 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 14 27 14 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 38 14 39+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 46 14 47+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 28 14 29+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 31 14 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 35 14 36+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 14 30 14 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 31 14 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 14 35 14 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 31 14 35+ , srcInfoPoints = []+ }+ "plus")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 37 14 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 37 14 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 37 14 38+ , srcInfoPoints = []+ }+ "d")))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 40 14 41+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 42 14 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 42 14 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 42 14 44+ , srcInfoPoints = []+ }+ "||")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 45 14 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 45 14 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 14 45 14 46+ , srcInfoPoints = []+ }+ "c")))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 9 16 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 15 9 15 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 9 15 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 15 14 15 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 9 15 13+ , srcInfoPoints = []+ }+ "plus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 15 21 15 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 17 15 20+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 24 15 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 15 28 15 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 24 15 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 24 15 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 15 24 15 27+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 31 15 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 15 31 15 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 15 31 15 34+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 9 16 10+ , srcInfoPoints = []+ }+ "x"))+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 12 16 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 16 11 16 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 16 12 16 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 16 16 16 17+ ]+ }+ "plus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 18 16 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 18 16 19+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 20 16 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 16 20 16 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 22 16 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 22 16 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 16 22 16 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 16 22 16 23+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 24 16 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 16 24 16 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 16 24 16 25+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 16 26 16 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 16 26 16 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 16 26 16 27+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 19 11 19 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 19 1 19 10+ , srcInfoPoints = []+ }+ "addAndOr3"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 19 14 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 19 16 19 18 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 19 14 19 15+ , srcInfoPoints = []+ }+ Nothing)+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 19 19 19 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 19 21 19 23 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 19 19 19 20+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 19 24 19 25+ , srcInfoPoints = []+ }+ Nothing)))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 1 22 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 21 3 21 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 1 22 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 21 3 21 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 1 20 10+ , srcInfoPoints = []+ }+ "addAndOr3")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 11 20 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 20 11 20 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 13 20 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 16 20 17+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 12 20 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 12 20 13+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 15 20 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 15 20 16+ , srcInfoPoints = []+ }+ "b")+ ]+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 18 20 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 20 18 20 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 20 20 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 23 20 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 19 20 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 19 20 20+ , srcInfoPoints = []+ }+ "c")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 22 20 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 22 20 23+ , srcInfoPoints = []+ }+ "d")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 25 20 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 20 25 20 26 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 27 20 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 20 27 20 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 38 20 39+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 46 20 47+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 28 20 29+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 31 20 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 35 20 36+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 20 30 20 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 31 20 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 20 35 20 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 31 20 35+ , srcInfoPoints = []+ }+ "plus")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 37 20 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 37 20 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 37 20 38+ , srcInfoPoints = []+ }+ "d")))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 40 20 41+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 42 20 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 42 20 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 42 20 44+ , srcInfoPoints = []+ }+ "||")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 45 20 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 45 20 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 20 45 20 46+ , srcInfoPoints = []+ }+ "c")))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 9 22 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 21 9 21 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 9 21 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 21 14 21 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 9 21 13+ , srcInfoPoints = []+ }+ "plus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 21 21 21 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 17 21 20+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 24 21 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 21 28 21 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 24 21 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 24 21 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 21 24 21 27+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 31 21 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 21 31 21 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 21 31 21 34+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 9 22 10+ , srcInfoPoints = []+ }+ "x"))+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 12 22 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 22 11 22 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 22 12 22 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 22 16 22 17+ ]+ }+ "plus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 18 22 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 18 22 19+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 20 22 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 22 20 22 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 22 22 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 22 22 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 22 22 22 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 22 22 22 23+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 24 22 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 22 24 22 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 22 24 22 25+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 22 26 22 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 22 26 22 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 22 26 22 27+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 25 11 25 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 1 25 10+ , srcInfoPoints = []+ }+ "addAndOr4"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 14 25 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 25 22 25 24 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 14 25 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 25 14 25 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 25 20 25 21+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 15 25 20+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 15 25 18+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 15 25 16+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 17 25 18+ , srcInfoPoints = []+ }+ Nothing))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 19 25 20+ , srcInfoPoints = []+ }+ Nothing)))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 25 25 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 25 33 25 35 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 25 25 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 25 25 25 26+ , SrcSpan "tests/examples/PartialSignatures.hs" 25 31 25 32+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 26 25 31+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 26 25 29+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 26 25 27+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 28 25 29+ , srcInfoPoints = []+ }+ Nothing))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 30 25 31+ , srcInfoPoints = []+ }+ Nothing)))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 36 25 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 25 36 25 37+ , SrcSpan "tests/examples/PartialSignatures.hs" 25 42 25 43+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 37 25 42+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 37 25 40+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 37 25 38+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 39 25 40+ , srcInfoPoints = []+ }+ Nothing))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 25 41 25 42+ , srcInfoPoints = []+ }+ Nothing)))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 1 28 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 27 3 27 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 1 28 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 27 3 27 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 1 26 10+ , srcInfoPoints = []+ }+ "addAndOr4")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 11 26 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 26 11 26 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 13 26 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 16 26 17+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 12 26 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 12 26 13+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 15 26 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 15 26 16+ , srcInfoPoints = []+ }+ "b")+ ]+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 18 26 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 26 18 26 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 20 26 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 23 26 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 19 26 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 19 26 20+ , srcInfoPoints = []+ }+ "c")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 22 26 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 22 26 23+ , srcInfoPoints = []+ }+ "d")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 25 26 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 26 25 26 26 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 27 26 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 26 27 26 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 38 26 39+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 46 26 47+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 28 26 29+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 31 26 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 35 26 36+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 26 30 26 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 31 26 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 26 35 26 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 31 26 35+ , srcInfoPoints = []+ }+ "plus")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 37 26 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 37 26 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 37 26 38+ , srcInfoPoints = []+ }+ "d")))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 40 26 41+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 42 26 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 42 26 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 42 26 44+ , srcInfoPoints = []+ }+ "||")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 45 26 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 45 26 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 26 45 26 46+ , srcInfoPoints = []+ }+ "c")))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 9 28 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 27 9 27 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 9 27 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 27 14 27 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 9 27 13+ , srcInfoPoints = []+ }+ "plus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 27 21 27 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 17 27 20+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 24 27 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 27 28 27 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 24 27 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 24 27 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 27 24 27 27+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 31 27 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 27 31 27 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 27 31 27 34+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 9 28 10+ , srcInfoPoints = []+ }+ "x"))+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 12 28 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 28 11 28 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 28 12 28 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 28 16 28 17+ ]+ }+ "plus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 18 28 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 18 28 19+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 20 28 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 28 20 28 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 22 28 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 22 28 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 28 22 28 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 28 22 28 23+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 24 28 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 28 24 28 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 28 24 28 25+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 28 26 28 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 28 26 28 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 28 26 28 27+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 31 11 31 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 1 31 10+ , srcInfoPoints = []+ }+ "addAndOr5"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 14 31 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 31 21 31 23 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 14 31 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 31 14 31 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 16 31 17+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 19 31 20+ ]+ }+ Boxed+ [ TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 15 31 16+ , srcInfoPoints = []+ }+ Nothing+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 18 31 19+ , srcInfoPoints = []+ }+ Nothing+ ])+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 24 31 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 31 31 31 33 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 24 31 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 31 24 31 25+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 26 31 27+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 29 31 30+ ]+ }+ Boxed+ [ TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 25 31 26+ , srcInfoPoints = []+ }+ Nothing+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 28 31 29+ , srcInfoPoints = []+ }+ Nothing+ ])+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 34 31 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 31 34 31 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 36 31 37+ , SrcSpan "tests/examples/PartialSignatures.hs" 31 39 31 40+ ]+ }+ Boxed+ [ TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 35 31 36+ , srcInfoPoints = []+ }+ Nothing+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 31 38 31 39+ , srcInfoPoints = []+ }+ Nothing+ ])))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 1 34 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 33 3 33 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 1 34 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 33 3 33 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 1 32 10+ , srcInfoPoints = []+ }+ "addAndOr5")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 11 32 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 32 11 32 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 13 32 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 16 32 17+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 12 32 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 12 32 13+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 15 32 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 15 32 16+ , srcInfoPoints = []+ }+ "b")+ ]+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 18 32 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 32 18 32 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 20 32 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 23 32 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 19 32 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 19 32 20+ , srcInfoPoints = []+ }+ "c")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 22 32 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 22 32 23+ , srcInfoPoints = []+ }+ "d")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 25 32 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 32 25 32 26 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 27 32 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 32 27 32 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 38 32 39+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 46 32 47+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 28 32 29+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 31 32 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 35 32 36+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 32 30 32 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 31 32 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 32 35 32 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 31 32 35+ , srcInfoPoints = []+ }+ "plus")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 37 32 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 37 32 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 37 32 38+ , srcInfoPoints = []+ }+ "d")))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 40 32 41+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 42 32 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 42 32 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 42 32 44+ , srcInfoPoints = []+ }+ "||")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 45 32 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 45 32 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 32 45 32 46+ , srcInfoPoints = []+ }+ "c")))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 9 34 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 33 9 33 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 9 33 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 33 14 33 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 9 33 13+ , srcInfoPoints = []+ }+ "plus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 33 21 33 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 17 33 20+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 24 33 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 33 28 33 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 24 33 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 24 33 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 33 24 33 27+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 31 33 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 33 31 33 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 33 31 33 34+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 9 34 10+ , srcInfoPoints = []+ }+ "x"))+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 12 34 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 34 11 34 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 34 12 34 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 34 16 34 17+ ]+ }+ "plus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 18 34 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 18 34 19+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 20 34 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 34 20 34 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 22 34 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 22 34 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 34 22 34 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 34 22 34 23+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 24 34 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 34 24 34 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 34 24 34 25+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 34 26 34 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 34 26 34 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 34 26 34 27+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 37 11 37 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 1 37 10+ , srcInfoPoints = []+ }+ "addAndOr6"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 14 37 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 37 23 37 25 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 14 37 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 37 14 37 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 37 18 37 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 37 21 37 22+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 15 37 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 15 37 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 15 37 18+ , srcInfoPoints = []+ }+ "Int"))+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 20 37 21+ , srcInfoPoints = []+ }+ Nothing+ ])+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 26 37 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 37 36 37 38 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 26 37 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 37 26 37 27+ , SrcSpan "tests/examples/PartialSignatures.hs" 37 31 37 32+ , SrcSpan "tests/examples/PartialSignatures.hs" 37 34 37 35+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 27 37 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 27 37 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 27 37 31+ , srcInfoPoints = []+ }+ "Bool"))+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 33 37 34+ , srcInfoPoints = []+ }+ Nothing+ ])+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 39 37 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 37 39 37 40+ , SrcSpan "tests/examples/PartialSignatures.hs" 37 50 37 51+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 40 37 50+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 40 37 45+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 40 37 41+ , srcInfoPoints = []+ }+ Nothing)+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 42 37 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 42 37 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 42 37 45+ , srcInfoPoints = []+ }+ "Int"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 46 37 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 46 37 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 37 46 37 50+ , srcInfoPoints = []+ }+ "Bool")))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 1 40 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 39 3 39 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 1 40 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 39 3 39 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 1 38 10+ , srcInfoPoints = []+ }+ "addAndOr6")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 11 38 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 38 11 38 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 13 38 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 16 38 17+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 12 38 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 12 38 13+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 15 38 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 15 38 16+ , srcInfoPoints = []+ }+ "b")+ ]+ , PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 18 38 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 38 18 38 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 20 38 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 23 38 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 19 38 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 19 38 20+ , srcInfoPoints = []+ }+ "c")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 22 38 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 22 38 23+ , srcInfoPoints = []+ }+ "d")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 25 38 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 38 25 38 26 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 27 38 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 38 27 38 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 38 38 39+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 46 38 47+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 28 38 29+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 31 38 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 35 38 36+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 38 30 38 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 31 38 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 38 35 38 36+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 31 38 35+ , srcInfoPoints = []+ }+ "plus")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 37 38 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 37 38 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 37 38 38+ , srcInfoPoints = []+ }+ "d")))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 46+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 40 38 41+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 42 38 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 42 38 44+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 42 38 44+ , srcInfoPoints = []+ }+ "||")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 45 38 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 45 38 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 38 45 38 46+ , srcInfoPoints = []+ }+ "c")))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 9 40 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 39 9 39 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 9 39 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 39 14 39 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 9 39 13+ , srcInfoPoints = []+ }+ "plus"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 39 21 39 23 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 17 39 20+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 24 39 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 39 28 39 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 24 39 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 24 39 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 39 24 39 27+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 31 39 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 39 31 39 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 39 31 39 34+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 27+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 9 40 10+ , srcInfoPoints = []+ }+ "x"))+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 12 40 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 40 11 40 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 40 12 40 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 40 16 40 17+ ]+ }+ "plus")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 18 40 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 18 40 19+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 20 40 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 40 20 40 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 22 40 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 22 40 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 40 22 40 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 40 22 40 23+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 24 40 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 40 24 40 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 40 24 40 25+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 40 26 40 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 40 26 40 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 40 26 40 27+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 43 5 43 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 43 1 43 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 43 8 43 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 43 10 43 12 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 43 8 43 9+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 43 13 43 14+ , srcInfoPoints = []+ }+ Nothing))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 14+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 1 44 4+ , srcInfoPoints = []+ }+ "bar")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 5 44 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 5 44 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 7 44 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 44 7 44 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 9 44 12+ , srcInfoPoints = []+ }+ "not")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 13 44 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 13 44 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 44 13 44 14+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 47 1 47 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 47 7 47 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 47 1 47 6+ , srcInfoPoints = []+ }+ "alpha"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 47 10 47 11+ , srcInfoPoints = []+ }+ Nothing)+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 48 1 48 6+ , srcInfoPoints = []+ }+ "alpha"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 48 7 48 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 48 7 48 8 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 48 9 48 10+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 48 9 48 10+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 51 1 51 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 51 7 51 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 51 1 51 6+ , srcInfoPoints = []+ }+ "bravo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 16+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]+ }+ Nothing))))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 51 15 51 16+ , srcInfoPoints = []+ }+ Nothing))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 52 1 52 6+ , srcInfoPoints = []+ }+ "bravo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 52 7 52 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 52 7 52 8 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 52 9 52 10+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 52 9 52 10+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 55 1 55 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 55 7 55 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 55 1 55 6+ , srcInfoPoints = []+ }+ "bravo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 16+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]+ }+ Nothing))))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 55 15 55 16+ , srcInfoPoints = []+ }+ Nothing))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 56 1 56 6+ , srcInfoPoints = []+ }+ "bravo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 56 7 56 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 56 7 56 8 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 56 9 56 10+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 56 9 56 10+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 1 58 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 58 7 58 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 1 58 6+ , srcInfoPoints = []+ }+ "barry"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 10 58 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 58 13 58 15 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 10 58 12+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 11 58 12+ , srcInfoPoints = []+ }+ "a")))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 16 58 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 58 16 58 17+ , SrcSpan "tests/examples/PartialSignatures.hs" 58 22 58 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 58 28 58 29+ ]+ }+ Boxed+ [ TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 17 58 22+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 17 58 19+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 18 58 19+ , srcInfoPoints = []+ }+ "b")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 20 58 22+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 21 58 22+ , srcInfoPoints = []+ }+ "a")))+ , TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 24 58 28+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 24 58 26+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 25 58 26+ , srcInfoPoints = []+ }+ "b")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 58 27 58 28+ , srcInfoPoints = []+ }+ Nothing)+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 30+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 1 59 6+ , srcInfoPoints = []+ }+ "barry")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 7 59 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 7 59 8+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 9 59 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 59 9 59 10 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 11 59 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 59 11 59 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 59 20 59 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 59 29 59 30+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 20+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 12 59 16+ , srcInfoPoints = []+ }+ "Left")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 17 59 20+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 17 59 20+ , srcInfoPoints = []+ }+ "x"+ "x"))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 29+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 22 59 27+ , srcInfoPoints = []+ }+ "Right")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 28 59 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 28 59 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 59 28 59 29+ , srcInfoPoints = []+ }+ "x")))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 1 61 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 61 5 61 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 1 61 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 26+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19+ ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16+ , srcInfoPoints = []+ }+ "Bool")))))))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 20 61 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 61 20 61 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 61 22 61 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 61 25 61 26+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 21 61 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 21 61 22+ , srcInfoPoints = []+ }+ "a")+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 61 24 61 25+ , srcInfoPoints = []+ }+ Nothing+ ]))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 1 62 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 5 62 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 62 5 62 6 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 7 62 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 62 7 62 8+ , SrcSpan "tests/examples/PartialSignatures.hs" 62 12 62 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 62 19 62 20+ ]+ }+ Boxed+ [ Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 8 62 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 8 62 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 8 62 12+ , srcInfoPoints = []+ }+ "True"))+ , Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 14 62 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 14 62 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 62 14 62 19+ , srcInfoPoints = []+ }+ "False"))+ ]))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 1 65 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 65 7 65 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 1 65 6+ , srcInfoPoints = []+ }+ "every"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 10 65 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 65 12 65 14 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 10 65 11+ , srcInfoPoints = []+ }+ Nothing)+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 15 65 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 65 17 65 19 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 15 65 16+ , srcInfoPoints = []+ }+ Nothing)+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 20 65 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 20 65 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 65 20 65 24+ , srcInfoPoints = []+ }+ "Bool")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 1 67 35+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 1 66 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 1 66 6+ , srcInfoPoints = []+ }+ "every")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 7 66 8+ , srcInfoPoints = []+ }+ , PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 9 66 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 66 9 66 10+ , SrcSpan "tests/examples/PartialSignatures.hs" 66 10 66 11+ ]+ }+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 12 66 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 66 12 66 13 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 14 66 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 14 66 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 66 14 66 18+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 1 67 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 1 67 6+ , srcInfoPoints = []+ }+ "every")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 7 67 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 7 67 8+ , srcInfoPoints = []+ }+ "p")+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 9 67 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 67 9 67 10+ , SrcSpan "tests/examples/PartialSignatures.hs" 67 14 67 15+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 10 67 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 10 67 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 10 67 11+ , srcInfoPoints = []+ }+ "x"))+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 11 67 12+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 11 67 12+ , srcInfoPoints = []+ }))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 12 67 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 12 67 14+ , srcInfoPoints = []+ }+ "xs")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 16 67 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 67 16 67 17 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 18 67 19+ , srcInfoPoints = []+ }+ "p")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 20 67 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 20 67 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 20 67 21+ , srcInfoPoints = []+ }+ "x"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 22 67 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 22 67 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 22 67 24+ , srcInfoPoints = []+ }+ "&&")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 25 67 30+ , srcInfoPoints = []+ }+ "every")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 31 67 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 31 67 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 31 67 32+ , srcInfoPoints = []+ }+ "p"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 33 67 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 33 67 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 67 33 67 35+ , srcInfoPoints = []+ }+ "xs"))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 1 69 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 69 7 69 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 1 69 6+ , srcInfoPoints = []+ }+ "every"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 10 69 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 69 23 69 25 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 10 69 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 69 10 69 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 69 21 69 22+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 11 69 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 69 14 69 16 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 11 69 13+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 12 69 13+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 17 69 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 17 69 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 17 69 21+ , srcInfoPoints = []+ }+ "Bool")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 26 69 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 69 31 69 33 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 26 69 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 69 26 69 27+ , SrcSpan "tests/examples/PartialSignatures.hs" 69 29 69 30+ ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 27 69 29+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 28 69 29+ , srcInfoPoints = []+ }+ "a"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 34 69 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 34 69 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 69 34 69 38+ , srcInfoPoints = []+ }+ "Bool")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 1 71 35+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 1 70 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 1 70 6+ , srcInfoPoints = []+ }+ "every")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 7 70 8+ , srcInfoPoints = []+ }+ , PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 9 70 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 70 9 70 10+ , SrcSpan "tests/examples/PartialSignatures.hs" 70 10 70 11+ ]+ }+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 12 70 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 70 12 70 13 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 14 70 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 14 70 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 70 14 70 18+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 1 71 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 1 71 6+ , srcInfoPoints = []+ }+ "every")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 7 71 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 7 71 8+ , srcInfoPoints = []+ }+ "p")+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 9 71 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 71 9 71 10+ , SrcSpan "tests/examples/PartialSignatures.hs" 71 14 71 15+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 10 71 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 10 71 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 10 71 11+ , srcInfoPoints = []+ }+ "x"))+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 11 71 12+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 11 71 12+ , srcInfoPoints = []+ }))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 12 71 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 12 71 14+ , srcInfoPoints = []+ }+ "xs")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 16 71 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 71 16 71 17 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 18 71 19+ , srcInfoPoints = []+ }+ "p")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 20 71 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 20 71 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 20 71 21+ , srcInfoPoints = []+ }+ "x"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 22 71 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 22 71 24+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 22 71 24+ , srcInfoPoints = []+ }+ "&&")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 25 71 30+ , srcInfoPoints = []+ }+ "every")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 31 71 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 31 71 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 31 71 32+ , srcInfoPoints = []+ }+ "p"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 33 71 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 33 71 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 71 33 71 35+ , srcInfoPoints = []+ }+ "xs"))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 1 74 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 74 5 74 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 1 74 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 74 13 74 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 8 74 12+ , srcInfoPoints = []+ }+ "Bool")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 16 74 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 16 74 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 74 16 74 20+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 17+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 1 75 4+ , srcInfoPoints = []+ }+ "bar")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 5 75 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 5 75 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 7 75 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 75 7 75 8 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 9 75 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 75 9 75 10+ , SrcSpan "tests/examples/PartialSignatures.hs" 75 16 75 17+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 75 12 75 14 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 10 75 11+ , srcInfoPoints = []+ }+ "x")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 75 15 75 16+ , srcInfoPoints = []+ }+ Nothing))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 77 1 77 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 77 5 77 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 77 1 77 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 77 8 77 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 77 11 77 13 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 77 8 77 10+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 77 9 77 10+ , srcInfoPoints = []+ }+ "a")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 77 14 77 16+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 77 15 77 16+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 1 79 25+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 1 78 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 1 78 4+ , srcInfoPoints = []+ }+ "bar")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 5 78 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 5 78 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 5 78 9+ , srcInfoPoints = []+ }+ "True"))+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 11 78 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 78 11 78 12 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 13 78 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 78 13 78 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 78 25 78 26+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 78 20 78 22 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 14 78 19+ , srcInfoPoints = []+ }+ "False")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 23 78 25+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 78 24 78 25+ , srcInfoPoints = []+ }+ "a"))))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 1 79 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 1 79 4+ , srcInfoPoints = []+ }+ "bar")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 5 79 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 5 79 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 5 79 10+ , srcInfoPoints = []+ }+ "False"))+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 11 79 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 79 11 79 12 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 13 79 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 79 13 79 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 79 24 79 25+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 79 19 79 21 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 14 79 18+ , srcInfoPoints = []+ }+ "True")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 22 79 24+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 79 23 79 24+ , srcInfoPoints = []+ }+ "a"))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 1 82 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 82 10 82 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 1 82 9+ , srcInfoPoints = []+ }+ "arbitCs1"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 29+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]+ }+ Nothing))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 18 82 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 82 20 82 22 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 18 82 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 18 82 19+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 23 82 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 23 82 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 82 23 82 29+ , srcInfoPoints = []+ }+ "String")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 44+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 1 83 9+ , srcInfoPoints = []+ }+ "arbitCs1")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 10 83 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 10 83 11+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 12 83 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 83 12 83 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 44+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 14 83 18+ , srcInfoPoints = []+ }+ "show")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 19 83 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 83 19 83 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 83 26 83 27+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 20 83 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 20 83 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 20 83 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 83 20 83 24+ , srcInfoPoints = []+ }+ "succ")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 25 83 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 25 83 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 83 25 83 26+ , srcInfoPoints = []+ }+ "x"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 28 83 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 28 83 30+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 28 83 30+ , srcInfoPoints = []+ }+ "++")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 44+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 31 83 35+ , srcInfoPoints = []+ }+ "show")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 36 83 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 83 36 83 37+ , SrcSpan "tests/examples/PartialSignatures.hs" 83 43 83 44+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 37 83 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 37 83 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 37 83 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 83 37 83 38+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 39 83 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 39 83 41+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 83 39 83 41+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 42 83 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 83 42 83 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 83 42 83 43+ , srcInfoPoints = []+ }+ "x"))))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 1 85 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 85 10 85 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 1 85 9+ , srcInfoPoints = []+ }+ "arbitCs2"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 13 85 39+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 13 85 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 85 13 85 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 85 20 85 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 85 23 85 24+ , SrcSpan "tests/examples/PartialSignatures.hs" 85 25 85 27+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23+ , srcInfoPoints = []+ }+ Nothing)+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 28 85 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 85 30 85 32 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 28 85 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 28 85 29+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 33 85 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 33 85 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 85 33 85 39+ , srcInfoPoints = []+ }+ "String")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 1 86 9+ , srcInfoPoints = []+ }+ "arbitCs2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 10 86 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 10 86 11+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 12 86 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 86 12 86 13 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 14 86 22+ , srcInfoPoints = []+ }+ "arbitCs1")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 23 86 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 23 86 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 86 23 86 24+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 1 88 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 88 10 88 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 1 88 9+ , srcInfoPoints = []+ }+ "arbitCs3"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 13 88 47+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 13 88 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 88 13 88 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 88 20 88 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 88 28 88 29+ , SrcSpan "tests/examples/PartialSignatures.hs" 88 31 88 32+ , SrcSpan "tests/examples/PartialSignatures.hs" 88 33 88 35+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26+ , srcInfoPoints = []+ }+ "Enum")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31+ , srcInfoPoints = []+ }+ Nothing)+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 36 88 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 88 38 88 40 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 36 88 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 36 88 37+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 41 88 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 41 88 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 88 41 88 47+ , srcInfoPoints = []+ }+ "String")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 1 89 9+ , srcInfoPoints = []+ }+ "arbitCs3")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 10 89 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 10 89 11+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 12 89 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 89 12 89 13 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 14 89 22+ , srcInfoPoints = []+ }+ "arbitCs1")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 23 89 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 23 89 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 89 23 89 24+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 1 91 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 91 10 91 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 1 91 9+ , srcInfoPoints = []+ }+ "arbitCs4"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 13 91 37+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 13 91 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 91 13 91 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 91 18 91 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 91 21 91 22+ , SrcSpan "tests/examples/PartialSignatures.hs" 91 23 91 25+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21+ , srcInfoPoints = []+ }+ Nothing)+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 26 91 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 91 28 91 30 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 26 91 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 26 91 27+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 31 91 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 31 91 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 91 31 91 37+ , srcInfoPoints = []+ }+ "String")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 1 92 9+ , srcInfoPoints = []+ }+ "arbitCs4")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 10 92 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 10 92 11+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 12 92 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 92 12 92 13 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 14 92 22+ , srcInfoPoints = []+ }+ "arbitCs1")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 23 92 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 23 92 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 92 23 92 24+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 1 94 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 94 10 94 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 1 94 9+ , srcInfoPoints = []+ }+ "arbitCs5"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 13 94 53+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 13 94 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 94 13 94 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 94 18 94 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 94 26 94 27+ , SrcSpan "tests/examples/PartialSignatures.hs" 94 34 94 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 94 37 94 38+ , SrcSpan "tests/examples/PartialSignatures.hs" 94 39 94 41+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24+ , srcInfoPoints = []+ }+ "Enum")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37+ , srcInfoPoints = []+ }+ Nothing)+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 42 94 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 94 44 94 46 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 42 94 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 42 94 43+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 47 94 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 47 94 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 94 47 94 53+ , srcInfoPoints = []+ }+ "String")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 1 95 9+ , srcInfoPoints = []+ }+ "arbitCs5")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 10 95 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 10 95 11+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 12 95 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 95 12 95 13 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 14 95 22+ , srcInfoPoints = []+ }+ "arbitCs1")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 23 95 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 23 95 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 95 23 95 24+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 1 98 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 98 5 98 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 1 98 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 19+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]+ }+ Nothing))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 13 98 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 13 98 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 98 13 98 19+ , srcInfoPoints = []+ }+ "String"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 10+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 99 1 99 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 99 5 99 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 99 5 99 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 99 7 99 10+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 99 7 99 10+ , srcInfoPoints = []+ }+ "x"+ "x")))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 1 105 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 105 5 105 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 1 105 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 14+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]+ }+ Nothing))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 13 105 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 105 13 105 14+ , srcInfoPoints = []+ }+ "a")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 106 1 106 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 106 5 106 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 106 5 106 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 106 7 106 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 106 7 106 8+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 1 109 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 109 5 109 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 1 109 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 14+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]+ }+ Nothing))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 13 109 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 109 13 109 14+ , srcInfoPoints = []+ }+ "a")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 8+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 110 1 110 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 110 5 110 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 110 5 110 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 110 7 110 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 110 7 110 8+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 1 112 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 112 6 112 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 1 112 5+ , srcInfoPoints = []+ }+ "fall"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 9 112 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 112 9 112 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 112 18 112 19+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 16 112 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 16 112 17+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 20 112 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 112 22 112 24 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 20 112 21+ , srcInfoPoints = []+ }+ Nothing)+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 25 112 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 112 25 112 26+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 11+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 1 113 5+ , srcInfoPoints = []+ }+ "fall")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 6 113 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 6 113 7+ , srcInfoPoints = []+ }+ "v")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 8 113 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 113 8 113 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 10 113 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 10 113 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 113 10 113 11+ , srcInfoPoints = []+ }+ "v"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 115 1 115 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 115 5 115 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 115 1 115 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 115 8 115 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 115 11 115 13 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 115 8 115 10+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 115 9 115 10+ , srcInfoPoints = []+ }+ "a")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 115 14 115 16+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 115 15 115 16+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 14+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 1 116 4+ , srcInfoPoints = []+ }+ "bar")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 5 116 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 5 116 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 7 116 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 116 7 116 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 9 116 12+ , srcInfoPoints = []+ }+ "not")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 13 116 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 13 116 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 116 13 116 14+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 1 118 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 118 5 118 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 1 118 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 8 118 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 118 31 118 33 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 8 118 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 118 8 118 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 118 29 118 30+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 9 118 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 118 9 118 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 118 17 118 18+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 16 118 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 16 118 17+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 19 118 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 118 23 118 25 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 19 118 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 118 19 118 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 118 21 118 22+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 20 118 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 20 118 21+ , srcInfoPoints = []+ }+ "a")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 26 118 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 118 26 118 27+ , SrcSpan "tests/examples/PartialSignatures.hs" 118 28 118 29+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 27 118 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 27 118 28+ , srcInfoPoints = []+ }+ "a"))))))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 118 34 118 35+ , srcInfoPoints = []+ }+ Nothing))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 40+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 1 119 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 5 119 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 5 119 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 7 119 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 119 7 119 8 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 9 119 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 119 9 119 10+ , SrcSpan "tests/examples/PartialSignatures.hs" 119 25 119 26+ , SrcSpan "tests/examples/PartialSignatures.hs" 119 39 119 40+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 10 119 11+ , srcInfoPoints = []+ }+ "x")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 12 119 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 119 12 119 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 119 17 119 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 119 24 119 25+ ]+ }+ [ Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 13 119 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 13 119 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 119 13 119 17+ , srcInfoPoints = []+ }+ "True"))+ , Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 19 119 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 19 119 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 119 19 119 24+ , srcInfoPoints = []+ }+ "False"))+ ])+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 27 119 28+ , srcInfoPoints = []+ }+ "x")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 29 119 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 119 29 119 30+ , SrcSpan "tests/examples/PartialSignatures.hs" 119 33 119 34+ , SrcSpan "tests/examples/PartialSignatures.hs" 119 38 119 39+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 30 119 33+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 30 119 33+ , srcInfoPoints = []+ }+ 'a'+ "a")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 35 119 38+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 119 35 119 38+ , srcInfoPoints = []+ }+ 'b'+ "b")+ ])+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 1 121 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 5 121 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 1 121 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 8 121 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 31 121 33 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 8 121 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 8 121 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 121 29 121 30+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 9 121 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 9 121 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 121 17 121 18+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 16 121 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 16 121 17+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 19 121 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 23 121 25 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 19 121 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 19 121 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 121 21 121 22+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 20 121 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 20 121 21+ , srcInfoPoints = []+ }+ "a")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 26 121 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 26 121 27+ , SrcSpan "tests/examples/PartialSignatures.hs" 121 28 121 29+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 27 121 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 27 121 28+ , srcInfoPoints = []+ }+ "a"))))))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 34 121 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 121 34 121 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 121 36 121 37+ , SrcSpan "tests/examples/PartialSignatures.hs" 121 41 121 42+ ]+ }+ Boxed+ [ TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 35 121 36+ , srcInfoPoints = []+ }+ Nothing+ , TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 38 121 41+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 38 121 39+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 121 40 121 41+ , srcInfoPoints = []+ }+ Nothing)+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 40+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 1 122 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 5 122 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 5 122 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 7 122 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 122 7 122 8 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 9 122 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 122 9 122 10+ , SrcSpan "tests/examples/PartialSignatures.hs" 122 25 122 26+ , SrcSpan "tests/examples/PartialSignatures.hs" 122 39 122 40+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 10 122 11+ , srcInfoPoints = []+ }+ "x")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 12 122 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 122 12 122 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 122 17 122 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 122 24 122 25+ ]+ }+ [ Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 13 122 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 13 122 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 122 13 122 17+ , srcInfoPoints = []+ }+ "True"))+ , Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 19 122 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 19 122 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 122 19 122 24+ , srcInfoPoints = []+ }+ "False"))+ ])+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 27 122 28+ , srcInfoPoints = []+ }+ "x")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 29 122 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 122 29 122 30+ , SrcSpan "tests/examples/PartialSignatures.hs" 122 33 122 34+ , SrcSpan "tests/examples/PartialSignatures.hs" 122 38 122 39+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 30 122 33+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 30 122 33+ , srcInfoPoints = []+ }+ 'a'+ "a")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 35 122 38+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 122 35 122 38+ , srcInfoPoints = []+ }+ 'b'+ "b")+ ])+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 1 125 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 125 9 125 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 1 125 8+ , srcInfoPoints = []+ }+ "monoLoc"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 12 125 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 125 12 125 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 20 125 21+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 19 125 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 19 125 20+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 22 125 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 125 24 125 26 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 22 125 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 22 125 23+ , srcInfoPoints = []+ }+ "a"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 27 125 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 125 27 125 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 39 125 40+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 47 125 48+ ]+ }+ Boxed+ [ TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 28 125 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 125 28 125 29+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 30 125 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 38 125 39+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 29 125 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 29 125 30+ , srcInfoPoints = []+ }+ "a")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 32 125 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 32 125 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 32 125 38+ , srcInfoPoints = []+ }+ "String"))+ ]+ , TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 41 125 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 125 41 125 42+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 43 125 44+ , SrcSpan "tests/examples/PartialSignatures.hs" 125 46 125 47+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 42 125 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 42 125 43+ , srcInfoPoints = []+ }+ "a")+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 125 45 125 46+ , srcInfoPoints = []+ }+ Nothing+ ]+ ])))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 1 129 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 127 3 127 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 1 129 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 127 3 127 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 1 126 8+ , srcInfoPoints = []+ }+ "monoLoc")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 9 126 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 9 126 10+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 11 126 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 126 11 126 12 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 13 126 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 126 13 126 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 126 21 126 22+ , SrcSpan "tests/examples/PartialSignatures.hs" 126 30 126 31+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 14 126 15+ , srcInfoPoints = []+ }+ "g")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 16 126 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 16 126 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 16 126 20+ , srcInfoPoints = []+ }+ "True")))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 23 126 24+ , srcInfoPoints = []+ }+ "g")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 25 126 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 25 126 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 126 25 126 30+ , srcInfoPoints = []+ }+ "False")))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 5 129 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 128 5 128 5+ , SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 5+ , SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 5 128 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 128 7 128 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 5 128 6+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 10 128 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 128 12 128 14 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 10 128 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 10 128 11+ , srcInfoPoints = []+ }+ "t"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 15 128 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 128 15 128 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 128 17 128 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 128 25 128 26+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 16 128 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 128 16 128 17+ , srcInfoPoints = []+ }+ "a")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 128 19 128 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 128 19 128 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 128 19 128 25+ , srcInfoPoints = []+ }+ "String"))+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 21+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 129 5 129 6+ , srcInfoPoints = []+ }+ "g")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 129 7 129 8+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 129 9 129 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 129 9 129 10 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 129 11 129 21+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 129 11 129 12+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 129 13 129 14+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 129 20 129 21+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 129 12 129 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 129 12 129 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 129+ 12+ 129+ 13+ , srcInfoPoints = []+ }+ "x"))+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 129 15 129 20+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 129 15 129 20+ , srcInfoPoints = []+ }+ "foo"+ "foo")+ ]))+ Nothing+ ]+ ]))+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 1 151 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 21+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 19+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 6 151 15+ , srcInfoPoints = []+ }+ "NukeMonad"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 16 151 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 16 151 17+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 18 151 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 18 151 19+ , srcInfoPoints = []+ }+ "b")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 20 151 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 151 20 151 21+ , srcInfoPoints = []+ }+ "c")))+ []+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 1 156 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 153 1 153 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 153 34 153 39+ , SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 3+ , SrcSpan "tests/examples/PartialSignatures.hs" 156 1 156 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 33+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 10 153 17+ , srcInfoPoints = []+ }+ "Functor")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 18 153 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 153 18 153 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 153 32 153 33+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 19 153 28+ , srcInfoPoints = []+ }+ "NukeMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 29 153 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 29 153 30+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 31 153 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 153 31 153 32+ , srcInfoPoints = []+ }+ "b"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 3 154 7+ , srcInfoPoints = []+ }+ "fmap"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 8 154 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 154 8 154 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 10 154 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 10 154 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 154 10 154 19+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 1 160 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 156 1 156 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 156 38 156 43+ , SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 3+ , SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 3+ , SrcSpan "tests/examples/PartialSignatures.hs" 160 1 160 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 37+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 37+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 10 156 21+ , srcInfoPoints = []+ }+ "Applicative")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 22 156 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 156 22 156 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 156 36 156 37+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 36+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 23 156 32+ , srcInfoPoints = []+ }+ "NukeMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 33 156 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 33 156 34+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 35 156 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 156 35 156 36+ , srcInfoPoints = []+ }+ "b"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 19+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 3 157 7+ , srcInfoPoints = []+ }+ "pure"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 8 157 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 157 8 157 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 10 157 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 10 157 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 157 10 157 19+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 158 3 158 4+ , SrcSpan "tests/examples/PartialSignatures.hs" 158 4 158 7+ , SrcSpan "tests/examples/PartialSignatures.hs" 158 7 158 8+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 4 158 7+ , srcInfoPoints = []+ }+ "<*>"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 9 158 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 158 9 158 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 11 158 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 11 158 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 158 11 158 20+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing)+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 1 165 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 160 1 160 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 160 32 160 37+ , SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 3+ , SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 3+ , SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 31+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 31+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 10 160 15+ , srcInfoPoints = []+ }+ "Monad")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 16 160 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 160 16 160 17+ , SrcSpan "tests/examples/PartialSignatures.hs" 160 30 160 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 28+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 17 160 26+ , srcInfoPoints = []+ }+ "NukeMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 27 160 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 27 160 28+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 29 160 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 160 29 160 30+ , srcInfoPoints = []+ }+ "b"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 21+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 3 161 9+ , srcInfoPoints = []+ }+ "return"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 10 161 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 161 10 161 11 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 12 161 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 12 161 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 161 12 161 21+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 162 3 162 4+ , SrcSpan "tests/examples/PartialSignatures.hs" 162 4 162 7+ , SrcSpan "tests/examples/PartialSignatures.hs" 162 7 162 8+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 4 162 7+ , srcInfoPoints = []+ }+ ">>="))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 9 162 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 162 9 162 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 11 162 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 11 162 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 162 11 162 20+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing)+ ])+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 165 12 165 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 1 165 11+ , srcInfoPoints = []+ }+ "isMeltdown"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 43+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 38+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 31+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 15 165 24+ , srcInfoPoints = []+ }+ "NukeMonad")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 25 165 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 25 165 31+ , srcInfoPoints = []+ }+ "param1")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 32 165 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 32 165 38+ , srcInfoPoints = []+ }+ "param2")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 39 165 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 39 165 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 165 39 165 43+ , srcInfoPoints = []+ }+ "Bool"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 23+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 166 1 166 11+ , srcInfoPoints = []+ }+ "isMeltdown"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 166 12 166 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 166 12 166 13 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 166 14 166 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 166 14 166 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 166 14 166 23+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 1 168 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 16 168 18 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 1 168 15+ , srcInfoPoints = []+ }+ "unlessMeltdown"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 19 168 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 26 168 28 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 19 168 25+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 19 168 22+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 20 168 22+ , srcInfoPoints = []+ }+ "nm")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 24+ , SrcSpan "tests/examples/PartialSignatures.hs" 168 24 168 25+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 24+ , SrcSpan "tests/examples/PartialSignatures.hs" 168 24 168 25+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 23 168 24+ , SrcSpan "tests/examples/PartialSignatures.hs" 168 24 168 25+ ]+ }))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 30 168 36+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 30 168 33+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 31 168 33+ , srcInfoPoints = []+ }+ "nm")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 168 35 168 36+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 168 35 168 36+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 168 34 168 35+ , SrcSpan "tests/examples/PartialSignatures.hs" 168 35 168 36+ ]+ })))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 1 170 49+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 1 170 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 1 169 15+ , srcInfoPoints = []+ }+ "unlessMeltdown")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 16 169 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 16 169 17+ , srcInfoPoints = []+ }+ "c")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 18 170 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 169 18 169 19 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 20 170 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 169 20 169 22+ , SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 169 25 169 27 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 23 169 24+ , srcInfoPoints = []+ }+ "m"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 28 169 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 28 169 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 169 28 169 38+ , srcInfoPoints = []+ }+ "isMeltdown")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 25+ , SrcSpan "tests/examples/PartialSignatures.hs" 170 28 170 32+ , SrcSpan "tests/examples/PartialSignatures.hs" 170 43 170 47+ ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 170 23 170 25+ , SrcSpan "tests/examples/PartialSignatures.hs" 170 28 170 32+ , SrcSpan "tests/examples/PartialSignatures.hs" 170 43 170 47+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 26 170 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 26 170 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 26 170 27+ , srcInfoPoints = []+ }+ "m")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 33 170 42+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 33 170 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 33 170 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 33 170 39+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 40 170 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 170 40 170 41+ , SrcSpan "tests/examples/PartialSignatures.hs" 170 41 170 42+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 40 170 42+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 40 170 41+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 170 41 170 42+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 40 170 42+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 40 170 41+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 170 41 170 42+ ]+ }))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 48 170 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 170 48 170 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 170 48 170 49+ , srcInfoPoints = []+ }+ "c"))))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 174 9 174 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 1 174 8+ , srcInfoPoints = []+ }+ "monoLoc"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 12 174 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 174 12 174 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 20 174 21+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 19 174 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 19 174 20+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 22 174 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 174 24 174 26 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 22 174 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 22 174 23+ , srcInfoPoints = []+ }+ "a"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 27 174 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 174 27 174 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 39 174 40+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 52 174 53+ ]+ }+ Boxed+ [ TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 28 174 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 174 28 174 29+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 30 174 31+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 38 174 39+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 29 174 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 29 174 30+ , srcInfoPoints = []+ }+ "a")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 32 174 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 32 174 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 32 174 38+ , srcInfoPoints = []+ }+ "String"))+ ]+ , TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 41 174 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 174 41 174 42+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 43 174 44+ , SrcSpan "tests/examples/PartialSignatures.hs" 174 51 174 52+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 42 174 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 42 174 43+ , srcInfoPoints = []+ }+ "a")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 45 174 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 45 174 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 174 45 174 51+ , srcInfoPoints = []+ }+ "String"))+ ]+ ])))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 1 179 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 176 3 176 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 1 179 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 176 3 176 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 1 175 8+ , srcInfoPoints = []+ }+ "monoLoc")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 9 175 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 9 175 10+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 11 175 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 175 11 175 12 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 13 175 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 175 13 175 14+ , SrcSpan "tests/examples/PartialSignatures.hs" 175 21 175 22+ , SrcSpan "tests/examples/PartialSignatures.hs" 175 28 175 29+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 14 175 15+ , srcInfoPoints = []+ }+ "g")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 16 175 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 16 175 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 16 175 20+ , srcInfoPoints = []+ }+ "True")))+ , App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 23 175 24+ , srcInfoPoints = []+ }+ "g")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 25 175 28+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 175 25 175 28+ , srcInfoPoints = []+ }+ 'v'+ "v"))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 5 179 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 178 5 178 5+ , SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 5+ , SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 5 178 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 178 7 178 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 5 178 6+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 10 178 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 178 12 178 14 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 10 178 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 10 178 11+ , srcInfoPoints = []+ }+ "b"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 15 178 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 178 15 178 16+ , SrcSpan "tests/examples/PartialSignatures.hs" 178 17 178 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 178 20 178 21+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 16 178 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 178 16 178 17+ , srcInfoPoints = []+ }+ "a")+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 178 19 178 20+ , srcInfoPoints = []+ }+ Nothing+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 21+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 179 5 179 6+ , srcInfoPoints = []+ }+ "g")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 179 7 179 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 179 7 179 8+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 179 9 179 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 179 9 179 10 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 179 11 179 21+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 179 11 179 12+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 179 13 179 14+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 179 20 179 21+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 179 12 179 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 179 12 179 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 179+ 12+ 179+ 13+ , srcInfoPoints = []+ }+ "x"))+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 179 15 179 20+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 179 15 179 20+ , srcInfoPoints = []+ }+ "foo"+ "foo")+ ]))+ Nothing+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 183 5 183 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 1 183 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 8 183 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 183 16 183 18 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 8 183 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 183 8 183 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 183 11 183 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 183 14 183 15+ ]+ }+ Boxed+ [ TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 9 183 11+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 10 183 11+ , srcInfoPoints = []+ }+ "a"))+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 13 183 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 13 183 14+ , srcInfoPoints = []+ }+ "b")+ ])+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 19 183 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 183 19 183 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 183 21 183 22+ , SrcSpan "tests/examples/PartialSignatures.hs" 183 25 183 26+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 20 183 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 20 183 21+ , srcInfoPoints = []+ }+ "a")+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 23 183 25+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 183 24 183 25+ , srcInfoPoints = []+ }+ "b"))+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 20+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 1 184 4+ , srcInfoPoints = []+ }+ "foo")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 5 184 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 184 5 184 6+ , SrcSpan "tests/examples/PartialSignatures.hs" 184 7 184 8+ , SrcSpan "tests/examples/PartialSignatures.hs" 184 10 184 11+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 6 184 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 6 184 7+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 9 184 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 9 184 10+ , srcInfoPoints = []+ }+ "y")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 12 184 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 184 12 184 13 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 14 184 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 184 14 184 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 184 16 184 17+ , SrcSpan "tests/examples/PartialSignatures.hs" 184 19 184 20+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 15 184 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 15 184 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 15 184 16+ , srcInfoPoints = []+ }+ "x"))+ , Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 18 184 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 18 184 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 184 18 184 19+ , srcInfoPoints = []+ }+ "y"))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 1 187 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 187 3 187 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 1 187 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 27+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 7+ , SrcSpan "tests/examples/PartialSignatures.hs" 187 8 187 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 187 10 187 12+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 187 6 187 7+ , SrcSpan "tests/examples/PartialSignatures.hs" 187 8 187 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 187 10 187 12+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8+ , srcInfoPoints = []+ }+ Nothing)))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 13 187 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 187 15 187 17 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 13 187 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 13 187 14+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 18 187 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 187 20 187 22 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 18 187 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 18 187 19+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 23 187 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 23 187 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 187 23 187 27+ , srcInfoPoints = []+ }+ "Bool"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 1 188 2+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 3 188 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 3 188 4+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 5 188 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 5 188 6+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 7 188 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 188 7 188 8 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 9 188 10+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 11 188 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 11 188 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 11 188 13+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 14 188 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 14 188 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 188 14 188 15+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 191 1 191 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 191 5 191 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 191 1 191 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 191 8 191 9+ , srcInfoPoints = []+ }+ Nothing)+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 19+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 1 192 5+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 6 192 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 6 192 9+ , srcInfoPoints = []+ }+ "foo")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 10 192 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 192 10 192 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 19+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 12 192 16+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 17 192 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 17 192 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 192 17 192 19+ , srcInfoPoints = []+ }+ "id")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 195 1 195 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 195 5 195 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 195 1 195 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 195 13 195 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 195 8 195 12+ , srcInfoPoints = []+ }+ "Bool")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 195 16 195 17+ , srcInfoPoints = []+ }+ Nothing))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 19+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 1 196 5+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 6 196 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 6 196 9+ , srcInfoPoints = []+ }+ "foo")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 10 196 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 196 10 196 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 19+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 12 196 16+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 17 196 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 17 196 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 196 17 196 19+ , srcInfoPoints = []+ }+ "id")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 1 198 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 198 5 198 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 1 198 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 198 13 198 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 8 198 12+ , srcInfoPoints = []+ }+ "Bool")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 16 198 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 16 198 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 198 16 198 20+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 20+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 1 199 4+ , srcInfoPoints = []+ }+ "bar")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 5 199 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 199 5 199 6+ , SrcSpan "tests/examples/PartialSignatures.hs" 199 12 199 13+ ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 6 199 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 199 8 199 10 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 6 199 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 6 199 7+ , srcInfoPoints = []+ }+ "x"))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 11 199 12+ , srcInfoPoints = []+ }+ Nothing))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 14 199 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 199 14 199 15 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 16 199 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 16 199 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 199 16 199 20+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 1 202 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 202 5 202 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 1 202 4+ , srcInfoPoints = []+ }+ "orr"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 8 202 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 202 10 202 12 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 8 202 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 8 202 9+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 13 202 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 202 15 202 17 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 13 202 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 13 202 14+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 18 202 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 202 18 202 19+ , srcInfoPoints = []+ }+ "a"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 203 1 203 4+ , srcInfoPoints = []+ }+ "orr"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 203 5 203 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 203 5 203 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 203 7 203 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 203 7 203 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 203 7 203 16+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 205 1 205 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 205 3 205 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 205 1 205 2+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 205 6 205 7+ , srcInfoPoints = []+ }+ Nothing)+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 1 206 2+ , srcInfoPoints = []+ }+ "g"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 3 206 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 206 3 206 4 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 5 206 6+ , srcInfoPoints = []+ }+ "f")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 8+ , SrcSpan "tests/examples/PartialSignatures.hs" 206 8 206 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 206 11 206 12+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 206 7 206 8+ , SrcSpan "tests/examples/PartialSignatures.hs" 206 8 206 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 206 11 206 12+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 8 206 11+ , srcInfoPoints = []+ }+ "orr")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 13 206 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 13 206 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 206 13 206 17+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 208 1 208 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 208 3 208 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 208 1 208 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 208 6 208 7+ , srcInfoPoints = []+ }+ Nothing)+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 6+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 209 1 209 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 209 3 209 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 209 3 209 4 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 209 5 209 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 209 5 209 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 209 5 209 6+ , srcInfoPoints = []+ }+ "g"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 212 1 212 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 212 7 212 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 212 1 212 6+ , srcInfoPoints = []+ }+ "test3"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 212 10 212 11+ , srcInfoPoints = []+ }+ Nothing)+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 1 217 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 1 217 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 1 213 6+ , srcInfoPoints = []+ }+ "test3")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 7 213 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 7 213 8+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 9 217 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 213 9 213 10 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 11 217 16+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 11 214 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 11 213 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 11 213 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 11 213 16+ , srcInfoPoints = []+ }+ "const")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 17 214 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 213 17 213 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 214 39 214 40+ ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 18 214 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 213 18 213 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 214 31 214 33+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 213 22 214 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 213 22 213 22+ , SrcSpan "tests/examples/PartialSignatures.hs" 214 22 214 22+ , SrcSpan "tests/examples/PartialSignatures.hs" 214 31 214 31+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 213 22 213 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 213 24 213 26+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 213 22 213 23+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 213 27 213 29+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 213+ 28+ 213+ 29+ , srcInfoPoints = []+ }+ "b")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 214 22 214 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 214 22 214 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 214+ 22+ 214+ 23+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 214 24 214 30+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 214 24 214 25+ ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 214+ 26+ 214+ 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 214+ 26+ 214+ 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 214+ 26+ 214+ 30+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ])+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 214 34 214 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 214 34 214 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 214 34 214 39+ , srcInfoPoints = []+ }+ "False"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 214 41 214 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 214 41 214 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 214 41 214 42+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 11 217 16+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 11 216 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 11 215 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 11 215 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 11 215 16+ , srcInfoPoints = []+ }+ "const")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 17 216 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 215 17 215 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 216 37 216 38+ ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 18 216 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 215 18 215 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 216 30 216 32+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 215 22 216 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 215 22 215 22+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 216 22 216 22+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 216 30 216 30+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 215 22 215 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 215 24 215 26+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 215+ 22+ 215+ 23+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 215+ 27+ 215+ 29+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 215+ 28+ 215+ 29+ , srcInfoPoints = []+ }+ "b")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 216 22 216 29+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 216+ 22+ 216+ 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 216+ 22+ 216+ 23+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 216+ 24+ 216+ 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 216+ 24+ 216+ 25+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 216+ 26+ 216+ 29+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 216+ 26+ 216+ 29+ , srcInfoPoints = []+ }+ 'a'+ "a")))+ Nothing+ ])+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 216 33 216 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 216 33 216 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 216 33 216 37+ , srcInfoPoints = []+ }+ "True"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 216 39 216 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 216 39 216 40+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 216 39 216 40+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 217 11 217 14+ , srcInfoPoints = []+ }+ "not")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 217 15 217 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 217 15 217 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 217 15 217 16+ , srcInfoPoints = []+ }+ "x")))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 224 1 224 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 224 5 224 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 224 1 224 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 224 8 224 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 224 11 224 13 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 224 8 224 10+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 224 9 224 10+ , srcInfoPoints = []+ }+ "a")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 224 14 224 15+ , srcInfoPoints = []+ }+ Nothing))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 1 228 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 1 228 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 1 225 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 5 225 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 5 225 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 7 228 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 225 7 225 8 ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 9 228 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 225 9 225 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 228 9 228 11+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 13 227 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 226 13 226 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 228 9 228 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 13 225 14+ , srcInfoPoints = []+ }+ "v"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 15 225 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 225 15 225 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 225 17 225 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 225 17 225 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 225 17 225 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 225+ 17+ 225+ 20+ , srcInfoPoints = []+ }+ "not")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 225 21 225 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 225 21 225 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 225+ 21+ 225+ 22+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 226 13 226 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 226 15 226 17 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 226 13 226 14+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 226 18 226 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 226 21 226 23 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 226 18 226 20+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 226 19 226 20+ , srcInfoPoints = []+ }+ "a")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 226 24 226 26+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 226 25 226 26+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 20+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 227 13 227 14+ , srcInfoPoints = []+ }+ "g")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 227 15 227 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 227 15 227 16+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 227 17 227 20+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 227 17 227 18+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 227 19 227 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 227 19 227 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 227+ 19+ 227+ 20+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ ])+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 228 12 228 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 228 12 228 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 228 18 228 19+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 228 13 228 14+ , srcInfoPoints = []+ }+ "g")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 228 15 228 18+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 228 15 228 18+ , srcInfoPoints = []+ }+ 'x'+ "x"))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 1 230 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 230 9 230 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 1 230 8+ , srcInfoPoints = []+ }+ "showTwo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 35+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16+ , srcInfoPoints = []+ }+ "Show")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 17 230 19+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 18 230 19+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 23 230 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 230 26 230 28 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 23 230 25+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 24 230 25+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 29 230 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 29 230 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 230 29 230 35+ , srcInfoPoints = []+ }+ "String")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 1 231 8+ , srcInfoPoints = []+ }+ "showTwo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 9 231 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 9 231 10+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 11 231 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 231 11 231 12 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 13 231 17+ , srcInfoPoints = []+ }+ "show")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 18 231 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 18 231 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 231 18 231 19+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 234 1 234 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 234 5 234 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 234 1 234 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 234 8 234 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 234 10 234 12 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 234 8 234 9+ , srcInfoPoints = []+ }+ Nothing)+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 234 13 234 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 234 13 234 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 234 13 234 17+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 13+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 1 235 4+ , srcInfoPoints = []+ }+ "bar")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 5 235 6+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 7 235 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 235 7 235 8 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 9 235 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 9 235 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 235 9 235 13+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 1 238 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 238 25 238 26 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 1 238 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 24+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 22+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 19+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 6 238 15+ , srcInfoPoints = []+ }+ "GenParser"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 16 238 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 16 238 19+ , srcInfoPoints = []+ }+ "tok")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 20 238 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 20 238 22+ , srcInfoPoints = []+ }+ "st")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 23 238 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 23 238 24+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 27 238 45+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 27 238 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 27 238 36+ , srcInfoPoints = []+ }+ "GenParser")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 37 238 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 37 238 40+ , srcInfoPoints = []+ }+ "tok")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 41 238 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 41 238 43+ , srcInfoPoints = []+ }+ "st")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 44 238 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 238 44 238 45+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 1 240 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 240 11 240 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 1 240 10+ , srcInfoPoints = []+ }+ "skipMany'"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 240 33 240 35 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 27+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 14 240 23+ , srcInfoPoints = []+ }+ "GenParser")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 24 240 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 24 240 27+ , srcInfoPoints = []+ }+ "tok")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 28 240 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 28 240 30+ , srcInfoPoints = []+ }+ "st")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 31 240 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 31 240 32+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 52+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 49+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 36 240 45+ , srcInfoPoints = []+ }+ "GenParser")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 46 240 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 46 240 49+ , srcInfoPoints = []+ }+ "tok")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 50 240 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 50 240 52+ , srcInfoPoints = []+ }+ "st")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 54+ , SrcSpan "tests/examples/PartialSignatures.hs" 240 54 240 55+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 54+ , SrcSpan "tests/examples/PartialSignatures.hs" 240 54 240 55+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 240 53 240 54+ , SrcSpan "tests/examples/PartialSignatures.hs" 240 54 240 55+ ]+ })))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 241 1 241 10+ , srcInfoPoints = []+ }+ "skipMany'"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 241 11 241 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 241 11 241 12 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 241 13 241 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 241 13 241 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 241 13 241 22+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 1 243 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 243 10 243 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 1 243 9+ , srcInfoPoints = []+ }+ "skipMany"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 13 243 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 243 15 243 17 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 13 243 14+ , srcInfoPoints = []+ }+ Nothing)+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 18 243 22+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 18 243 19+ , srcInfoPoints = []+ }+ Nothing)+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 243 21 243 22+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 243 21 243 22+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 243 20 243 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 243 21 243 22+ ]+ })))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 244 1 244 9+ , srcInfoPoints = []+ }+ "skipMany"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 244 10 244 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 244 10 244 11 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 244 12 244 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 244 12 244 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 244 12 244 21+ , srcInfoPoints = []+ }+ "skipMany'"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 1 246 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 246 19 246 21 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 1 246 18+ , srcInfoPoints = []+ }+ "somethingShowable"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 40+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26+ , srcInfoPoints = []+ }+ "Show")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 27 246 29+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 28 246 29+ , srcInfoPoints = []+ }+ "x")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 33 246 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 246 36 246 38 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 33 246 35+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 34 246 35+ , srcInfoPoints = []+ }+ "x")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 246 39 246 40+ , srcInfoPoints = []+ }+ Nothing)))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 35+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 1 247 18+ , srcInfoPoints = []+ }+ "somethingShowable")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 19 247 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 19 247 20+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 21 247 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 247 21 247 22 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 23 247 27+ , srcInfoPoints = []+ }+ "show")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 28 247 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 247 28 247 29+ , SrcSpan "tests/examples/PartialSignatures.hs" 247 34 247 35+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 29 247 32+ , srcInfoPoints = []+ }+ "not")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 33 247 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 33 247 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 247 33 247 34+ , srcInfoPoints = []+ }+ "x")))))))+ Nothing+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 1 251 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 251 10 251 11 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 1 251 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 6 251 9+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 6 251 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 6 251 7+ , srcInfoPoints = []+ }+ "I"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 8 251 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 8 251 9+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 12 251 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 12 251 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 12 251 13+ , srcInfoPoints = []+ }+ "I")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 14 251 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 251 14 251 15+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 1 255 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 252 1 252 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 252 20 252 25+ , SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 5+ , SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 19+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 10 252 17+ , srcInfoPoints = []+ }+ "Functor")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 18 252 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 18 252 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 252 18 252 19+ , srcInfoPoints = []+ }+ "I")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 27+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 5 253 9+ , srcInfoPoints = []+ }+ "fmap")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 10 253 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 10 253 11+ , srcInfoPoints = []+ }+ "f")+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 12 253 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 253 12 253 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 253 16 253 17+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 13 253 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 13 253 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 253 13 253 14+ , srcInfoPoints = []+ }+ "I"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 15 253 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 253 15 253 16+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 18 253 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 253 18 253 19 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 20 253 27+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 20 253 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 253 20 253 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 253 20 253 21+ , srcInfoPoints = []+ }+ "I")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 253 22 253 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 253 22 253 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 253 26 253 27+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 253 23 253 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 253 23 253 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 253+ 23+ 253+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 253+ 23+ 253+ 24+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 253 25 253 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 253+ 25+ 253+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 253+ 25+ 253+ 26+ , srcInfoPoints = []+ }+ "a")))))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 255 15 255 16 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 1 255 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 14+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 9 255 10+ , srcInfoPoints = []+ }+ "B"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 11 255 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 11 255 12+ , srcInfoPoints = []+ }+ "t")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 13 255 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 13 255 14+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 17 255 20+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 17 255 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 17 255 18+ , srcInfoPoints = []+ }+ "B")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 19 255 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 255 19 255 20+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 1 259 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 256 1 256 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 256 24 256 29+ , SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 5+ , SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 23+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 10 256 17+ , srcInfoPoints = []+ }+ "Functor")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 18 256 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 256 18 256 19+ , SrcSpan "tests/examples/PartialSignatures.hs" 256 22 256 23+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 19 256 20+ , srcInfoPoints = []+ }+ "B")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 21 256 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 256 21 256 22+ , srcInfoPoints = []+ }+ "t"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 27+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 5 257 9+ , srcInfoPoints = []+ }+ "fmap")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 10 257 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 10 257 11+ , srcInfoPoints = []+ }+ "f")+ , PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 12 257 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 257 12 257 13+ , SrcSpan "tests/examples/PartialSignatures.hs" 257 16 257 17+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 13 257 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 13 257 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 257 13 257 14+ , srcInfoPoints = []+ }+ "B"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 15 257 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 257 15 257 16+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 18 257 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 257 18 257 19 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 20 257 27+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 20 257 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 257 20 257 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 257 20 257 21+ , srcInfoPoints = []+ }+ "B")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 257 22 257 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 257 22 257 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 257 26 257 27+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 257 23 257 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 257 23 257 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 257+ 23+ 257+ 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 257+ 23+ 257+ 24+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 257 25 257 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 257+ 25+ 257+ 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 257+ 25+ 257+ 26+ , srcInfoPoints = []+ }+ "a")))))))+ Nothing+ ])+ ])+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 259 13 259 14 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 1 259 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 9 259 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 9 259 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 9 259 10+ , srcInfoPoints = []+ }+ "H"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 11 259 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 11 259 12+ , srcInfoPoints = []+ }+ "f")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 15 259 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 15 259 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 15 259 16+ , srcInfoPoints = []+ }+ "H")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 17 259 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 259 17 259 18+ , SrcSpan "tests/examples/PartialSignatures.hs" 259 22 259 23+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 18 259 22+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 18 259 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 18 259 19+ , srcInfoPoints = []+ }+ "f"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 259 21 259 22+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 259 21 259 22+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 259 20 259 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 259 21 259 22+ ]+ }))))+ ])+ ]+ []+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 261 1 261 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 261 4 261 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 261 1 261 3+ , srcInfoPoints = []+ }+ "h1"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 13+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]+ }+ Nothing))))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 261 12 261 13+ , srcInfoPoints = []+ }+ Nothing))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 42+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 1 263 3+ , srcInfoPoints = []+ }+ "h1")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 4 263 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 4 263 5+ , srcInfoPoints = []+ }+ "f")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 6 263 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 6 263 7+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 8 263 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 263 8 263 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 10 263 42+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 10 263 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 263 10 263 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 263 30 263 31+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 30+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 11 263 12+ , srcInfoPoints = []+ }+ "H")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 13 263 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 13 263 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 13 263 14+ , srcInfoPoints = []+ }+ ".")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 15 263 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 15 263 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 15 263 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 15 263 19+ , srcInfoPoints = []+ }+ "fmap")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 20 263 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 263 20 263 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 263 29 263 30+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 21 263 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 21 263 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 21 263 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 263+ 21+ 263+ 26+ , srcInfoPoints = []+ }+ "const")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 27 263 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 27 263 28+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 263 28 263 29+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 27 263 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 263+ 27+ 263+ 28+ , SrcSpan+ "tests/examples/PartialSignatures.hs"+ 263+ 28+ 263+ 29+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 263+ 27+ 263+ 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 263+ 27+ 263+ 28+ , SrcSpan+ "tests/examples/PartialSignatures.hs"+ 263+ 28+ 263+ 29+ ]+ }))))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 32 263 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 263 32 263 33+ , SrcSpan "tests/examples/PartialSignatures.hs" 263 41 263 42+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 41+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 33 263 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 33 263 37+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 38 263 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 38 263 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 263 38 263 39+ , srcInfoPoints = []+ }+ "f"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 40 263 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 40 263 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 263 40 263 41+ , srcInfoPoints = []+ }+ "b")))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 265 1 265 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 265 4 265 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 265 1 265 3+ , srcInfoPoints = []+ }+ "h2"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 265 7 265 8+ , srcInfoPoints = []+ }+ Nothing)+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 42+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 1 267 3+ , srcInfoPoints = []+ }+ "h2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 4 267 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 4 267 5+ , srcInfoPoints = []+ }+ "f")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 6 267 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 6 267 7+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 8 267 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 267 8 267 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 10 267 42+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 10 267 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 267 10 267 11+ , SrcSpan "tests/examples/PartialSignatures.hs" 267 30 267 31+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 30+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 11 267 12+ , srcInfoPoints = []+ }+ "H")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 13 267 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 13 267 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 13 267 14+ , srcInfoPoints = []+ }+ ".")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 15 267 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 15 267 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 15 267 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 15 267 19+ , srcInfoPoints = []+ }+ "fmap")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 20 267 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 267 20 267 21+ , SrcSpan "tests/examples/PartialSignatures.hs" 267 29 267 30+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 21 267 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 21 267 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 21 267 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 267+ 21+ 267+ 26+ , srcInfoPoints = []+ }+ "const")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 27 267 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 27 267 28+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 267 28 267 29+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 27 267 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 267+ 27+ 267+ 28+ , SrcSpan+ "tests/examples/PartialSignatures.hs"+ 267+ 28+ 267+ 29+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 267+ 27+ 267+ 29+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 267+ 27+ 267+ 28+ , SrcSpan+ "tests/examples/PartialSignatures.hs"+ 267+ 28+ 267+ 29+ ]+ }))))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 32 267 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 267 32 267 33+ , SrcSpan "tests/examples/PartialSignatures.hs" 267 41 267 42+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 41+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 33 267 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 33 267 37+ , srcInfoPoints = []+ }+ "fmap")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 38 267 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 38 267 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 267 38 267 39+ , srcInfoPoints = []+ }+ "f"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 40 267 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 40 267 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 267 40 267 41+ , srcInfoPoints = []+ }+ "b")))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 1 269 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 269 6 269 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 1 269 5+ , srcInfoPoints = []+ }+ "app1"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 9 269 10+ , srcInfoPoints = []+ }+ "H")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 11 269 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 269 11 269 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 269 15 269 16+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 15+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 12 269 13+ , srcInfoPoints = []+ }+ "B")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 14 269 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 269 14 269 15+ , srcInfoPoints = []+ }+ "t")))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 1 270 5+ , srcInfoPoints = []+ }+ "app1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 6 270 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 270 6 270 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 8 270 10+ , srcInfoPoints = []+ }+ "h1")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 11 270 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 270 11 270 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 270 17 270 18+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 17+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 12 270 13+ , srcInfoPoints = []+ }+ "H")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 14 270 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 14 270 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 14 270 15+ , srcInfoPoints = []+ }+ ".")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 16 270 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 16 270 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 16 270 17+ , srcInfoPoints = []+ }+ "I"))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 19 270 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 270 19 270 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 270 24 270 25+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 24+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 20 270 21+ , srcInfoPoints = []+ }+ "B")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 270 23 270 24+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 270 23 270 24+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 270 22 270 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 270 23 270 24+ ]+ })))))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 1 272 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 272 6 272 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 1 272 5+ , srcInfoPoints = []+ }+ "app2"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 9 272 10+ , srcInfoPoints = []+ }+ "H")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 11 272 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 272 11 272 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 272 15 272 16+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 15+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 12 272 13+ , srcInfoPoints = []+ }+ "B")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 14 272 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 272 14 272 15+ , srcInfoPoints = []+ }+ "t")))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 25+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 1 273 5+ , srcInfoPoints = []+ }+ "app2"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 6 273 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 273 6 273 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 25+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 8 273 10+ , srcInfoPoints = []+ }+ "h2")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 11 273 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 273 11 273 12+ , SrcSpan "tests/examples/PartialSignatures.hs" 273 17 273 18+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 17+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 12 273 13+ , srcInfoPoints = []+ }+ "H")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 14 273 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 14 273 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 14 273 15+ , srcInfoPoints = []+ }+ ".")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 16 273 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 16 273 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 16 273 17+ , srcInfoPoints = []+ }+ "I"))))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 19 273 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 273 19 273 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 273 24 273 25+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 24+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 20 273 21+ , srcInfoPoints = []+ }+ "B")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 273 23 273 24+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 273 23 273 24+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 273 22 273 23+ , SrcSpan "tests/examples/PartialSignatures.hs" 273 23 273 24+ ]+ })))))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 1 279 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 277 3 277 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 1 279 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 277 3 277 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 1 276 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 5 276 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 5 276 6+ , srcInfoPoints = []+ }+ "f")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 7 276 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 276 7 276 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 9 276 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 9 276 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 276 9 276 10+ , srcInfoPoints = []+ }+ "g"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 9 279 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 277 9 277 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 0+ ]+ }+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 9 279 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 278 11 278 16 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 9 279 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 278 11 278 16 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 9 277 10+ , srcInfoPoints = []+ }+ "g")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 11 277 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 11 277 12+ , srcInfoPoints = []+ }+ "r")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 13 277 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 277 13 277 14 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 277 15 277 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 277 15 277 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 277 15 277 16+ , srcInfoPoints = []+ }+ "x"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 278 17 279 22+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 278 17 278 17+ , SrcSpan+ "tests/examples/PartialSignatures.hs" 279 17 279 17+ , SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 0+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 278 17 278 23+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs" 278 19 278 21+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 278+ 17+ 278+ 18+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 278 22 278 23+ , srcInfoPoints = []+ }+ Nothing)+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 279 17 279 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 279 17 279 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 279+ 17+ 279+ 18+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs" 279 19 279 22+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 279+ 19+ 279+ 20+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 279+ 21+ 279+ 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 279+ 21+ 279+ 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PartialSignatures.hs"+ 279+ 21+ 279+ 22+ , srcInfoPoints = []+ }+ "r"))))+ Nothing+ ]))+ ]+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 282 5 282 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 1 282 4+ , srcInfoPoints = []+ }+ "unc"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 8 282 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 282 22 282 24 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 8 282 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 282 8 282 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 282 20 282 21+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 9 282 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 282 11 282 13 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 9 282 10+ , srcInfoPoints = []+ }+ Nothing)+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 14 282 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 282 16 282 18 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 14 282 15+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 19 282 20+ , srcInfoPoints = []+ }+ Nothing))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 25 282 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 282 32 282 34 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 25 282 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 282 25 282 26+ , SrcSpan "tests/examples/PartialSignatures.hs" 282 27 282 28+ , SrcSpan "tests/examples/PartialSignatures.hs" 282 30 282 31+ ]+ }+ Boxed+ [ TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 26 282 27+ , srcInfoPoints = []+ }+ Nothing+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 29 282 30+ , srcInfoPoints = []+ }+ Nothing+ ])+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 282 35 282 36+ , srcInfoPoints = []+ }+ Nothing)))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 283 1 283 4+ , srcInfoPoints = []+ }+ "unc"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 283 5 283 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 283 5 283 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 283 7 283 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 283 7 283 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 283 7 283 14+ , srcInfoPoints = []+ }+ "uncurry"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 1 285 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 285 5 285 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 1 285 4+ , srcInfoPoints = []+ }+ "unc"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 8 285 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 285 25 285 27 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 8 285 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 285 8 285 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 285 23 285 24+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 9 285 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 285 12 285 14 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 9 285 11+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 10 285 11+ , srcInfoPoints = []+ }+ "a")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 15 285 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 285 18 285 20 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 15 285 17+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 16 285 17+ , srcInfoPoints = []+ }+ "b")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 21 285 23+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 22 285 23+ , srcInfoPoints = []+ }+ "c"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 28 285 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 285 37 285 39 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 28 285 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 285 28 285 29+ , SrcSpan "tests/examples/PartialSignatures.hs" 285 31 285 32+ , SrcSpan "tests/examples/PartialSignatures.hs" 285 35 285 36+ ]+ }+ Boxed+ [ TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 29 285 31+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 30 285 31+ , srcInfoPoints = []+ }+ "a"))+ , TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 33 285 35+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 34 285 35+ , srcInfoPoints = []+ }+ "b"))+ ])+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 40 285 42+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 285 41 285 42+ , srcInfoPoints = []+ }+ "c")))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 286 1 286 4+ , srcInfoPoints = []+ }+ "unc"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 286 5 286 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 286 5 286 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 286 7 286 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 286 7 286 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 286 7 286 14+ , srcInfoPoints = []+ }+ "uncurry"))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 1 289 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 289 5 289 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 1 289 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 8 289 31+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 8 289 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 289 8 289 9+ , SrcSpan "tests/examples/PartialSignatures.hs" 289 16 289 17+ , SrcSpan "tests/examples/PartialSignatures.hs" 289 19 289 20+ , SrcSpan "tests/examples/PartialSignatures.hs" 289 21 289 23+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13+ , srcInfoPoints = []+ }+ "Show")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 14 289 16+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 15 289 16+ , srcInfoPoints = []+ }+ "a"))))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19+ , srcInfoPoints = []+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19+ , srcInfoPoints = []+ }+ Nothing)+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 24 289 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 289 27 289 29 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 24 289 26+ , srcInfoPoints = []+ }+ (Just+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 25 289 26+ , srcInfoPoints = []+ }+ "a")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 289 30 289 31+ , srcInfoPoints = []+ }+ Nothing)))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 22+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 1 290 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 5 290 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 5 290 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 7 290 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 290 7 290 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 9 290 13+ , srcInfoPoints = []+ }+ "show")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 14 290 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 290 14 290 15+ , SrcSpan "tests/examples/PartialSignatures.hs" 290 21 290 22+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 15 290 19+ , srcInfoPoints = []+ }+ "succ")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 20 290 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 20 290 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 290 20 290 21+ , srcInfoPoints = []+ }+ "x")))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 292 1 292 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 292 5 292 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 292 1 292 4+ , srcInfoPoints = []+ }+ "bar"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 292 8 292 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 292 10 292 12 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 292 8 292 9+ , srcInfoPoints = []+ }+ Nothing)+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 292 13 292 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 292 15 292 17 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 292 13 292 14+ , srcInfoPoints = []+ }+ Nothing)+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 292 18 292 19+ , srcInfoPoints = []+ }+ Nothing)))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 14+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 1 293 4+ , srcInfoPoints = []+ }+ "bar")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 5 293 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 5 293 6+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 7 293 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 7 293 8+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 9 293 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PartialSignatures.hs" 293 9 293 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 11 293 12+ , srcInfoPoints = []+ }+ "y")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 13 293 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 13 293 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PartialSignatures.hs" 293 13 293 14+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 101 1 101 24)+ " No extra constraints"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 131 1 131 84)+ " Test case for (fixed) bug that previously generated the following error message:"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 133 1 133 31)+ " LocalDefinitionBug.hs:9:16:"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 134 1 134 95)+ " GHC internal error: \8216a\8217 is not in scope during type checking, but it passed the renamer"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 135 1 135 63)+ " tcl_env of environment: [alA :-> Type variable \8216_\8217 = _,"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 136 1 136 73)+ " alC :-> Identifier[x::a, <NotTopLevel>],"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 137 1 137 63)+ " alE :-> Type variable \8216t\8217 = t,"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 138 1 138 62)+ " rjF :-> Identifier[monoLoc::a"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 139 1 139 102)+ " -> ((a, String), (a, _)), <NotTopLevel>]]"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 140 1 140 60)+ " In the type signature for \8216g\8217: g :: t -> (a, String)"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 141 1 141 37)+ " In an equation for \8216monoLoc\8217:"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 142 1 142 21)+ " monoLoc x"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 143 1 143 33)+ " = (g True, g False)"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 144 1 144 19)+ " where"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 145 1 145 39)+ " g :: t -> (a, String)"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 146 1 146 34)+ " g _ = (x, \"foo\")"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 149 1 149 64)+ " Fixed by using tcExtendTyVarEnv2 instead of tcExtendTyVarEnv"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 177 5 177 35)+ " g :: b -> (a, String) -- #1"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 178 22 178 27)+ " #2"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 181 1 181 51)+ " For #2, we should infer the same type as in #1."+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 220 1 220 74)+ " The named wildcards aren't scoped as the ScopedTypeVariables extension"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 221 1 221 79)+ " isn't enabled, of which the behaviour is copied. Thus, the _a annotation of"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 222 1 222 70)+ " x, which must be Bool, isn't the same as the _a in g, which is now"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 223 1 223 21)+ " generalised over."+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 248 1 248 33)+ " Inferred type: Bool -> String"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 262 1 262 44)+ " h :: Functor m => (a -> b) -> m a -> H m"+ , Comment+ False+ (SrcSpan "tests/examples/PartialSignatures.hs" 266 1 266 45)+ " h2 :: Functor m => (a -> b) -> m a -> H m"+ ]+ )
+ tests/examples/PartialSignatures.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PartialSignatures.hs.prettyprinter.golden view
@@ -0,0 +1,236 @@+{-# LANGUAGE GADTs, NamedWildCards, ScopedTypeVariables #-}++bar :: Int -> _ Int+bar x = Foo True () x++addAndOr1 :: _+addAndOr1 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y++addAndOr2 :: _ -> _+addAndOr2 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y++addAndOr3 :: _ -> _ -> _+addAndOr3 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y++addAndOr4 :: (_ _ _) -> (_ _ _) -> (_ _ _)+addAndOr4 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y++addAndOr5 :: (_, _) -> (_, _) -> (_, _)+addAndOr5 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y++addAndOr6 :: (Int, _) -> (Bool, _) -> (_ Int Bool)+addAndOr6 (a, b) (c, d) = (a `plus` d, b || c)+ where plus :: Int -> Int -> Int+ x `plus` y = x + y++bar :: _ -> _+bar x = not x++alpha :: _+alpha = 3++bravo :: _ => _+bravo = 3++bravo :: _ => _+bravo = 3++barry :: _a -> (_b _a, _b _)+barry x = (Left "x", Right x)++foo :: a ~ Bool => (a, _)+foo = (True, False)++every :: _ -> _ -> Bool+every _ [] = True+every p (x : xs) = p x && every p xs++every :: (_a -> Bool) -> [_a] -> Bool+every _ [] = True+every p (x : xs) = p x && every p xs++bar :: Bool -> Bool+bar x = (x :: _)++bar :: _a -> _a+bar True = (False :: _a)+bar False = (True :: _a)++arbitCs1 :: _ => a -> String+arbitCs1 x = show (succ x) ++ show (x == x)++arbitCs2 :: (Show a, _) => a -> String+arbitCs2 x = arbitCs1 x++arbitCs3 :: (Show a, Enum a, _) => a -> String+arbitCs3 x = arbitCs1 x++arbitCs4 :: (Eq a, _) => a -> String+arbitCs4 x = arbitCs1 x++arbitCs5 :: (Eq a, Enum a, Show a, _) => a -> String+arbitCs5 x = arbitCs1 x++foo :: _ => String+foo = "x"++foo :: _ => a+foo = 3++foo :: _ => a+foo = 3++fall :: forall a . _ -> a+fall v = v++bar :: _a -> _a+bar x = not x++foo :: (forall a . [a] -> [a]) -> _+foo x = (x [True, False], x ['a', 'b'])++foo :: (forall a . [a] -> [a]) -> (_, _ _)+foo x = (x [True, False], x ['a', 'b'])++monoLoc :: forall a . a -> ((a, String), (a, _))+monoLoc x = (g True, g False)+ where g :: t -> (a, String)+ g _ = (x, "foo")++data NukeMonad a b c++instance Functor (NukeMonad a b) where+ fmap = undefined++instance Applicative (NukeMonad a b) where+ pure = undefined+ (<*>) = undefined++instance Monad (NukeMonad a b) where+ return = undefined+ (>>=) = undefined++isMeltdown :: NukeMonad param1 param2 Bool+isMeltdown = undefined++unlessMeltdown :: _nm () -> _nm ()+unlessMeltdown c+ = do m <- isMeltdown+ if m then return () else c++monoLoc :: forall a . a -> ((a, String), (a, String))+monoLoc x = (g True, g 'v')+ where g :: b -> (a, _)+ g y = (x, "foo")++foo :: (_a, b) -> (a, _b)+foo (x, y) = (x, y)++f :: (_) => a -> a -> Bool+f x y = x == y++foo :: _+Just foo = Just id++foo :: Bool -> _+Just foo = Just id++bar :: Bool -> Bool+bar (x :: _) = True++orr :: a -> a -> a+orr = undefined++g :: _+g = f `orr` True++f :: _+f = g++test3 :: _+test3 x+ = const+ (let x :: _b+ x = True+ in False)+ $+ const+ (let x :: _b+ x = 'a'+ in True)+ $ not x++foo :: _a -> _+foo x+ = let v = not x+ + g :: _a -> _a+ g x = x+ in (g 'x')++showTwo :: Show _a => _a -> String+showTwo x = show x++bar :: _ -> Bool+bar _ = True++data GenParser tok st a = GenParser tok st a++skipMany' :: GenParser tok st a -> GenParser tok st ()+skipMany' = undefined++skipMany :: _ -> _ ()+skipMany = skipMany'++somethingShowable :: Show _x => _x -> _+somethingShowable x = show (not x)++data I a = I a++instance Functor I where+ fmap f (I a) = I (f a)++newtype B t a = B a++instance Functor (B t) where+ fmap f (B a) = B (f a)++newtype H f = H (f ())++h1 :: _ => _+h1 f b = (H . fmap (const ())) (fmap f b)++h2 :: _+h2 f b = (H . fmap (const ())) (fmap f b)++app1 :: H (B t)+app1 = h1 (H . I) (B ())++app2 :: H (B t)+app2 = h2 (H . I) (B ())+foo f = g+ where g r = x+ where x :: _+ x = r++unc :: (_ -> _ -> _) -> (_, _) -> _+unc = uncurry++unc :: (_a -> _b -> _c) -> (_a, _b) -> _c+unc = uncurry++foo :: (Show _a, _) => _a -> _+foo x = show (succ x)++bar :: _ -> _ -> _+bar x y = y x
+ tests/examples/PatSynFix.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE PatternSynonyms #-}+pattern A <- (True, True) where A = (not $ False && True, True)+exp = not $ False && True
+ tests/examples/PatSynFix.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatSynFix.hs.parser.golden view
@@ -0,0 +1,381 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatSynFix.hs" 1 1 1 1+ , SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 1+ , SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 1+ , SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 1+ , SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 1+ , SrcSpan "tests/examples/PatSynFix.hs" 4 1 4 1+ , SrcSpan "tests/examples/PatSynFix.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatSynFix.hs" 1 1 1 13+ , SrcSpan "tests/examples/PatSynFix.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ ]+ []+ [ PatSyn+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatSynFix.hs" 2 1 2 8+ , SrcSpan "tests/examples/PatSynFix.hs" 2 11 2 13+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ "A"))+ [])+ (PTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 14 2 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatSynFix.hs" 2 14 2 15+ , SrcSpan "tests/examples/PatSynFix.hs" 2 19 2 20+ , SrcSpan "tests/examples/PatSynFix.hs" 2 25 2 26+ ]+ }+ Boxed+ [ PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 15 2 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 15 2 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 15 2 19+ , srcInfoPoints = []+ }+ "True"))+ []+ , PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 21 2 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 21 2 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 21 2 25+ , srcInfoPoints = []+ }+ "True"))+ []+ ])+ (ExplicitBidirectional+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 27 3 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatSynFix.hs" 2 27 2 32+ , SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 33+ , SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 64+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 33 2 34+ , srcInfoPoints = []+ }+ "A"))+ [])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 35 2 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatSynFix.hs" 2 35 2 36 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 37 2 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatSynFix.hs" 2 37 2 38+ , SrcSpan "tests/examples/PatSynFix.hs" 2 57 2 58+ , SrcSpan "tests/examples/PatSynFix.hs" 2 63 2 64+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 57+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 38 2 41+ , srcInfoPoints = []+ }+ "not")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 42 2 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 42 2 43+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 42 2 43+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 57+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 44 2 49+ , srcInfoPoints = []+ }+ "False")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 50 2 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 50 2 52+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 50 2 52+ , srcInfoPoints = []+ }+ "&&")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 53 2 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 53 2 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatSynFix.hs" 2 53 2 57+ , srcInfoPoints = []+ }+ "True"))))+ , Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 59 2 63+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 59 2 63+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 2 59 2 63+ , srcInfoPoints = []+ }+ "True"))+ ]))+ Nothing+ ])+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "exp"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 5 3 26+ , srcInfoPoints = [ SrcSpan "tests/examples/PatSynFix.hs" 3 5 3 6 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 7 3 10+ , srcInfoPoints = []+ }+ "not")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 26+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 13 3 18+ , srcInfoPoints = []+ }+ "False")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 19 3 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 19 3 21+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 19 3 21+ , srcInfoPoints = []+ }+ "&&")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 22 3 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 22 3 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatSynFix.hs" 3 22 3 26+ , srcInfoPoints = []+ }+ "True"))))))+ Nothing+ ]+ , []+ )
+ tests/examples/PatSynFix.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatSynFix.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE PatternSynonyms #-}++pattern A <- (True, True)+ where A = (not $ False && True, True)+exp = not $ False && True
+ tests/examples/PatternSplice.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-}+module PatternSpliceTest where++foo :: Int -> Bool+foo $( [p| 42 |] ) = True+foo _ = False
+ tests/examples/PatternSplice.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSplice.hs.parser.golden view
@@ -0,0 +1,235 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 1 1 1 1+ , SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 1+ , SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 1+ , SrcSpan "tests/examples/PatternSplice.hs" 4 1 4 1+ , SrcSpan "tests/examples/PatternSplice.hs" 5 1 5 1+ , SrcSpan "tests/examples/PatternSplice.hs" 6 1 6 1+ , SrcSpan "tests/examples/PatternSplice.hs" 7 1 7 1+ , SrcSpan "tests/examples/PatternSplice.hs" 7 1 7 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 2 1 2 7+ , SrcSpan "tests/examples/PatternSplice.hs" 2 26 2 31+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 2 8 2 25+ , srcInfoPoints = []+ }+ "PatternSpliceTest")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 1 1 1 13+ , SrcSpan "tests/examples/PatternSplice.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 1 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 4 5 4 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 4 12 4 14 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 8 4 11+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 15 4 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 15 4 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 4 15 4 19+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 1 6 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 1 5 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ "foo")+ [ PSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 7+ , SrcSpan "tests/examples/PatternSplice.hs" 5 18 5 19+ ]+ }+ (ParenSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 5 5 5 7+ , SrcSpan "tests/examples/PatternSplice.hs" 5 18 5 19+ ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 11+ , SrcSpan "tests/examples/PatternSplice.hs" 5 15 5 17+ ]+ }+ (PatBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 5 8 5 11+ , SrcSpan "tests/examples/PatternSplice.hs" 5 15 5 17+ ]+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 12 5 14+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSplice.hs" 5 12 5 14+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSplice.hs" 5 12 5 14+ , srcInfoPoints = []+ }+ 42+ "42")))))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 20 5 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 5 20 5 21 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 22 5 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 22 5 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 5 22 5 26+ , srcInfoPoints = []+ }+ "True"))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 1 6 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ "foo")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 5 6 6+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 20 6 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSplice.hs" 6 20 6 21 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 22 6 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 22 6 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PatternSplice.hs" 6 22 6 27+ , srcInfoPoints = []+ }+ "False"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/PatternSplice.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSplice.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-}+module PatternSpliceTest where++foo :: Int -> Bool+foo $( [p| 42 |] ) = True+foo _ = False
+ tests/examples/PatternSynonymImport.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE PatternSynonyms #-}++module Main (pattern Foo, pattern (:>)) where++import Foo (pattern Foo, pattern (:>))
+ tests/examples/PatternSynonymImport.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymImport.hs.parser.golden view
@@ -0,0 +1,208 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 1 1+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 1+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 1+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 1 5 1+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 6 1 6 1+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 6 1 6 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 1 3 7+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 41 3 46+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 8 3 12+ , srcInfoPoints = []+ }+ "Main")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 13 3 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 13 3 14+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 25 3 26+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 39 3 40+ ]+ }+ [ EAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 14 3 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 14 3 21 ]+ }+ (PatternNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 14 3 21+ , srcInfoPoints = []+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 22 3 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 22 3 25+ , srcInfoPoints = []+ }+ "Foo"))+ , EAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 27 3 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 27 3 34 ]+ }+ (PatternNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 27 3 34+ , srcInfoPoints = []+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 35 3 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 35 3 36+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 36 3 38+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 3 38 3 39+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 3 36 3 38+ , srcInfoPoints = []+ }+ ":>"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 1 1 1 13+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 1 5 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 1 5 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 8 5 11+ , srcInfoPoints = []+ }+ "Foo"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 12 5 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 12 5 13+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 24 5 25+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 38 5 39+ ]+ }+ False+ [ IAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 20+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 21 5 24+ ]+ }+ (PatternNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 13 5 20 ]+ })+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 21 5 24+ , srcInfoPoints = []+ }+ "Foo")+ , IAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 33+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 34 5 38+ ]+ }+ (PatternNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 26 5 33 ]+ })+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 34 5 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymImport.hs" 5 34 5 35+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 35 5 37+ , SrcSpan "tests/examples/PatternSynonymImport.hs" 5 37 5 38+ ]+ }+ ":>")+ ])+ }+ ]+ []+ , []+ )
+ tests/examples/PatternSynonymImport.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymImport.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE PatternSynonyms #-}+module Main (pattern Foo, pattern (:>)) where+import Foo (pattern Foo, pattern (:>))
+ tests/examples/PatternSynonymSignatures.hs view
@@ -0,0 +1,15 @@+{-# LANGUAGE PatternSynonyms #-}+++pattern Syn :: Typ++pattern Syn :: () => () => Typ++pattern Syn :: Show a => Show b => Typ++pattern Syn :: Show b => Typ++pattern Syn :: Show b => () => Typ++pattern Syn :: () => Show b => Typ+
+ tests/examples/PatternSynonymSignatures.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymSignatures.hs.parser.golden view
@@ -0,0 +1,607 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 16 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 1 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 1 6 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 1 8 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 1 10 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 1 12 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 1 14 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 16 1 16 1+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 16 1 16 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 1 1 13+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ ]+ []+ [ PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 1 4 8+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 13 4 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ "Syn"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 16 4 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 16 4 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 4 16 4 19+ , srcInfoPoints = []+ }+ "Typ")))+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 1 6 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 1 6 8+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 13 6 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 9 6 12+ , srcInfoPoints = []+ }+ "Syn"+ ]+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 16 6 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 16 6 17+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 17 6 18+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 19 6 21+ ]+ }))+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 22 6 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 22 6 23+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 23 6 24+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 25 6 27+ ]+ }))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 28 6 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 28 6 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 28 6 31+ , srcInfoPoints = []+ }+ "Typ")))+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 1 8 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 1 8 8+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 13 8 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 9 8 12+ , srcInfoPoints = []+ }+ "Syn"+ ]+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22+ , srcInfoPoints = []+ }+ "a"))))))+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32+ , srcInfoPoints = []+ }+ "b"))))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 36 8 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 36 8 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 36 8 39+ , srcInfoPoints = []+ }+ "Typ")))+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 1 10 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 1 10 8+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 13 10 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 9 10 12+ , srcInfoPoints = []+ }+ "Syn"+ ]+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22+ , srcInfoPoints = []+ }+ "b"))))))+ Nothing+ Nothing+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 26 10 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 26 10 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 26 10 29+ , srcInfoPoints = []+ }+ "Typ")))+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 1 12 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 1 12 8+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 13 12 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 9 12 12+ , srcInfoPoints = []+ }+ "Syn"+ ]+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22+ , srcInfoPoints = []+ }+ "b"))))))+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 26 12 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 26 12 27+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 27 12 28+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 29 12 31+ ]+ }))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 32 12 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 32 12 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 32 12 35+ , srcInfoPoints = []+ }+ "Typ")))+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 1 14 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 1 14 8+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 13 14 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 9 14 12+ , srcInfoPoints = []+ }+ "Syn"+ ]+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 16 14 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 16 14 17+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 17 14 18+ , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 19 14 21+ ]+ }))+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28+ , srcInfoPoints = []+ }+ "b"))))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 32 14 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 32 14 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 32 14 35+ , srcInfoPoints = []+ }+ "Typ")))+ ]+ , []+ )
+ tests/examples/PatternSynonymSignatures.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonymSignatures.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE PatternSynonyms #-}++pattern Syn :: Typ++pattern Syn :: () => () => Typ++pattern Syn :: Show a => Show b => Typ++pattern Syn :: Show b => Typ++pattern Syn :: Show b => () => Typ++pattern Syn :: () => Show b => Typ
+ tests/examples/PatternSynonyms.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE PatternSynonyms #-}++pattern A = Nothing++pattern B a = Just a++pattern a :+: b = (a,b)++pattern Tuple a b = (a,b)++pattern A = Nothing++pattern B a = Just a++pattern a :+: b = (a,b)+
+ tests/examples/PatternSynonyms.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms.hs.parser.golden view
@@ -0,0 +1,575 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 17 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 1 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 5 1 5 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 7 1 7 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 9 1 9 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 11 1 11 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 13 1 13 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 15 1 15 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 17 1 17 1+ , SrcSpan "tests/examples/PatternSynonyms.hs" 17 1 17 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 1 1 1 13+ , SrcSpan "tests/examples/PatternSynonyms.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ ]+ []+ [ PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 3 1 3 8+ , SrcSpan "tests/examples/PatternSynonyms.hs" 3 11 3 12+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ "A"))+ [])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 3 13 3 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 3 13 3 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 3 13 3 20+ , srcInfoPoints = []+ }+ "Nothing"))+ [])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 1 5 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 5 1 5 8+ , SrcSpan "tests/examples/PatternSynonyms.hs" 5 13 5 14+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 9 5 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ "B"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "a")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 15 5 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 15 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 15 5 19+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 20 5 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 5 20 5 21+ , srcInfoPoints = []+ }+ "a")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 1 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 7 1 7 8+ , SrcSpan "tests/examples/PatternSynonyms.hs" 7 17 7 18+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 9 7 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ "a"))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 11 7 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 11 7 14+ , srcInfoPoints = []+ }+ ":+:"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 15 7 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 15 7 16+ , srcInfoPoints = []+ }+ "b")))+ (PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 19 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 7 19 7 20+ , SrcSpan "tests/examples/PatternSynonyms.hs" 7 21 7 22+ , SrcSpan "tests/examples/PatternSynonyms.hs" 7 23 7 24+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 20 7 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 20 7 21+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 22 7 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 7 22 7 23+ , srcInfoPoints = []+ }+ "b")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 1 9 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 9 1 9 8+ , SrcSpan "tests/examples/PatternSynonyms.hs" 9 19 9 20+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 9 9 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 9 9 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 9 9 14+ , srcInfoPoints = []+ }+ "Tuple"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 15 9 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 15 9 16+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 17 9 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 17 9 18+ , srcInfoPoints = []+ }+ "b")+ ])+ (PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 21 9 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 9 21 9 22+ , SrcSpan "tests/examples/PatternSynonyms.hs" 9 23 9 24+ , SrcSpan "tests/examples/PatternSynonyms.hs" 9 25 9 26+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 22 9 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 22 9 23+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 24 9 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 9 24 9 25+ , srcInfoPoints = []+ }+ "b")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 11 1 11 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 11 1 11 8+ , SrcSpan "tests/examples/PatternSynonyms.hs" 11 14 11 15+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 11 12 11 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 11 12 11 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 11 12 11 13+ , srcInfoPoints = []+ }+ "A"))+ [])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 11 16 11 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 11 16 11 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 11 16 11 23+ , srcInfoPoints = []+ }+ "Nothing"))+ [])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 1 13 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 13 1 13 8+ , SrcSpan "tests/examples/PatternSynonyms.hs" 13 16 13 17+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 9 13 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ "B"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 11 13 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 11 13 12+ , srcInfoPoints = []+ }+ "a")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 18 13 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 18 13 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 18 13 22+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 23 13 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 13 23 13 24+ , srcInfoPoints = []+ }+ "a")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 1 15 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 15 1 15 8+ , SrcSpan "tests/examples/PatternSynonyms.hs" 15 17 15 18+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 9 15 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ "a"))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 11 15 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 11 15 14+ , srcInfoPoints = []+ }+ ":+:"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 15 15 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 15 15 16+ , srcInfoPoints = []+ }+ "b")))+ (PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 23 15 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms.hs" 15 23 15 24+ , SrcSpan "tests/examples/PatternSynonyms.hs" 15 25 15 26+ , SrcSpan "tests/examples/PatternSynonyms.hs" 15 27 15 28+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 24 15 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 24 15 25+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 26 15 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms.hs" 15 26 15 27+ , srcInfoPoints = []+ }+ "b")+ ])+ ImplicitBidirectional+ ]+ , []+ )
+ tests/examples/PatternSynonyms.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# LANGUAGE PatternSynonyms #-}++pattern A = Nothing++pattern B a = Just a++pattern a :+: b = (a, b)++pattern Tuple a b = (a, b)++pattern A = Nothing++pattern B a = Just a++pattern a :+: b = (a, b)
+ tests/examples/PatternSynonyms2.hs view
@@ -0,0 +1,18 @@+{-# LANGUAGE PatternSynonyms, ScopedTypeVariables, KindSignatures #-}+module Foo (pattern Single) where++++pattern Single x <- [x]+ where Single 4 = [x]+ Single 5 = [x]++pattern Double x = [x]++++++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing
+ tests/examples/PatternSynonyms2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms2.hs.parser.golden view
@@ -0,0 +1,664 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 19 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 1 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 6 1 6 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 16 1 16 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 17 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 18 1 18 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 19 1 19 1+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 19 1 19 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 1 2 7+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 29 2 34+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 8 2 11+ , srcInfoPoints = []+ }+ "Foo")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 12 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 12 2 13+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 2 27 2 28+ ]+ }+ [ EAbs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 13 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 13 2 20 ]+ }+ (PatternNamespace+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 13 2 20+ , srcInfoPoints = []+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 21 2 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 2 21 2 27+ , srcInfoPoints = []+ }+ "Single"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 1 71+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 1 1 13+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 1 29 1 30+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 1 50 1 51+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 1 68 1 71+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 31 1 50+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 1 52 1 66+ , srcInfoPoints = []+ }+ "KindSignatures"+ ]+ ]+ []+ [ PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 1 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 1 6 8+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 6 18 6 20+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 9 6 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 9 6 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 9 6 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 21 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 21 6 22+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 6 23 6 24+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 22 6 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 6 22 6 23+ , srcInfoPoints = []+ }+ "x")+ ])+ (ExplicitBidirectional+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 3 10 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 3 7 8+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 9+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 9+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 23+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 9 7 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 16 7 17+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ 4+ "4")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 18 7 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 18 7 19 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 20 7 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 20 7 21+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 7 22 7 23+ ]+ }+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 21 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 21 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 7 21 7 22+ , srcInfoPoints = []+ }+ "x"))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 23+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 9 8 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 16 8 17+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ 5+ "5")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 18 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 18 8 19 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 20 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 20 8 21+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 8 22 8 23+ ]+ }+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 21 8 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 21 8 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 8 21 8 22+ , srcInfoPoints = []+ }+ "x"))+ ]))+ Nothing+ ])+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 1 10 8+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 18 10 19+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 9 10 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 9 10 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 9 10 15+ , srcInfoPoints = []+ }+ "Double"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 16 10 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 16 10 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 20 10 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 20 10 21+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 10 22 10 23+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 21 10 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 10 21 10 22+ , srcInfoPoints = []+ }+ "x")+ ])+ ImplicitBidirectional+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 1 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 8 16 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 1 16 7+ , srcInfoPoints = []+ }+ "single"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 11 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 15 16 17 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 11 16 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 11 16 12+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 16 13 16 14+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 12 16 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 12 16 13+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 18 16 23+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 24 16 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 16 24 16 25+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 18 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 17 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 1 17 7+ , srcInfoPoints = []+ }+ "single")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 8 17 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 8 17 9+ , SrcSpan "tests/examples/PatternSynonyms2.hs" 17 17 17 18+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 9 17 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 9 17 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 9 17 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 16 17 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 16 17 17+ , srcInfoPoints = []+ }+ "x")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 19 17 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 19 17 20 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 27+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 21 17 25+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 26 17 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 26 17 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 17 26 17 27+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 1 18 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 1 18 7+ , srcInfoPoints = []+ }+ "single")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 8 18 9+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 10 18 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 10 18 11 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 12 18 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 12 18 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms2.hs" 18 12 18 19+ , srcInfoPoints = []+ }+ "Nothing"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/PatternSynonyms2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms2.hs.prettyprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE PatternSynonyms, ScopedTypeVariables, KindSignatures+ #-}+module Foo (pattern Single) where++pattern Single x <- [x]+ where Single 4 = [x]+ Single 5 = [x]++pattern Double x = [x]++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing
+ tests/examples/PatternSynonyms3.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE PatternSynonyms, BangPatterns, PolyKinds, DataKinds, GADTs,+ FlexibleContexts, ViewPatterns #-}+{-# LANGUAGE ExplicitForAll #-}++pattern Single x <- [x]+++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing++pattern Single :: a -> [a]+pattern Single x = [x]+++pattern Single :: () => (Show a) => a -> [a]+pattern Single x = [x]++f :: (Show a) => [a] -> a+f (Single x) = x++pattern SinglePair :: (a, a) -> [(a, a)]+pattern SinglePair x = [x]++f :: (Show a) => [(a, a)] -> String+f (SinglePair x) = show x++pattern Q = D++pattern C :: a -> X Maybe (Maybe a)+pattern C x = Y (Just x)+++pattern Syn :: forall a b c . () => () => Int++pattern C :: (Show (a, Bool)) => a -> X Maybe (Maybe (a, Bool))+pattern C x = Y (Just (x, True))++pattern P :: T Bool b+pattern P <- MkT True++pattern D :: a -> T (Maybe a) Bool+pattern D x = MkT (Just x)+++pattern P a b = Just (a, b)++pattern Single x = [x]++pattern a :+: b = (a, b)+++pattern P x <- MkT 42 x+++pattern P x y <- MkT x y++pattern P x <- MkT (f -> True) x++data T where+ MkT :: b -> (b -> Bool) -> T++pattern P x f <- MkT x f++pattern Single x <- [x]++pattern P <- Just True++pattern P = 42+++pattern P = ()+++pattern Single x <- [x]+
+ tests/examples/PatternSynonyms3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms3.hs.parser.golden view
@@ -0,0 +1,3805 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 77 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 1 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 3 1 3 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 8 1 8 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 9 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 10 1 10 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 12 1 12 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 13 1 13 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 1 16 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 17 1 17 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 1 19 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 1 22 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 23 1 23 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 1 25 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 28 1 28 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 30 1 30 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 31 1 31 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 1 34 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 1 36 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 1 37 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 39 1 39 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 40 1 40 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 42 1 42 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 43 1 43 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 1 46 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 48 1 48 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 1 50 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 53 1 53 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 56 1 56 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 58 1 58 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 60 1 60 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 65 1 65 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 67 1 67 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 69 1 69 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 1 72 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 75 1 75 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 77 1 77 1+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 77 1 77 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 2 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 1 1 13+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 29 1 30+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 43 1 44+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 54 1 55+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 65 1 66+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 1 72 1 73+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 2 18 2 19+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 2 33 2 36+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 31 1 43+ , srcInfoPoints = []+ }+ "BangPatterns"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 45 1 54+ , srcInfoPoints = []+ }+ "PolyKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 56 1 65+ , srcInfoPoints = []+ }+ "DataKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 1 67 1 72+ , srcInfoPoints = []+ }+ "GADTs"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 2 2 2 18+ , srcInfoPoints = []+ }+ "FlexibleContexts"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 2 20 2 32+ , srcInfoPoints = []+ }+ "ViewPatterns"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 3 1 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 3 1 3 13+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 3 29 3 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 3 14 3 28+ , srcInfoPoints = []+ }+ "ExplicitForAll"+ ]+ ]+ []+ [ PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 1 5 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 18 5 20+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 9 5 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 9 5 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 9 5 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 21 5 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 21 5 22+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 5 23 5 24+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 22 5 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 5 22 5 23+ , srcInfoPoints = []+ }+ "x")+ ])+ Unidirectional+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 1 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 8 8 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 1 8 7+ , srcInfoPoints = []+ }+ "single"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 11 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 15 8 17 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 11 8 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 11 8 12+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 8 13 8 14+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 12 8 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 12 8 13+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 25+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 18 8 23+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 24 8 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 8 24 8 25+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 10 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 9 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 1 9 7+ , srcInfoPoints = []+ }+ "single")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 8 9 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 8 9 9+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 9 17 9 18+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 9 9 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 9 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 9 9 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ "x")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 19 9 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 19 9 20 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 27+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 21 9 25+ , srcInfoPoints = []+ }+ "Just")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 26 9 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 26 9 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 9 26 9 27+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 1 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 1 10 7+ , srcInfoPoints = []+ }+ "single")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 8 10 9+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 10 10 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 10 10 11 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 12 10 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 12 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 10 12 10 19+ , srcInfoPoints = []+ }+ "Nothing"))))+ Nothing+ ]+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 1 12 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 1 12 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 12 16 12 18+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 9 12 15+ , srcInfoPoints = []+ }+ "Single"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 19 12 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 21 12 23 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 19 12 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 19 12 20+ , srcInfoPoints = []+ }+ "a"))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 24 12 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 24 12 25+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 12 26 12 27+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 25 12 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 12 25 12 26+ , srcInfoPoints = []+ }+ "a"))))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 1 13 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 1 13 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 13 18 13 19+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 9 13 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 9 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 9 13 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 20 13 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 20 13 21+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 13 22 13 23+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 21 13 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 13 21 13 22+ , srcInfoPoints = []+ }+ "x")+ ])+ ImplicitBidirectional+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 1 16 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 1 16 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 16 16 18+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 9 16 15+ , srcInfoPoints = []+ }+ "Single"+ ]+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 19 16 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 19 16 20+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 20 16 21+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 22 16 24+ ]+ }))+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 26+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 32 16 33+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 34 16 36+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 25 16 26+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 32 16 33+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 34 16 36+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 37 16 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 39 16 41 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 37 16 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 37 16 38+ , srcInfoPoints = []+ }+ "a"))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 42 16 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 42 16 43+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 44 16 45+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 43 16 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 16 43 16 44+ , srcInfoPoints = []+ }+ "a"))))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 1 17 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 1 17 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 17 18 17 19+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 9 17 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 9 17 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 9 17 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 16 17 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 16 17 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 20 17 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 20 17 21+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 17 22 17 23+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 21 17 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 17 21 17 22+ , srcInfoPoints = []+ }+ "x")+ ])+ ImplicitBidirectional+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 1 19 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 3 19 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 1 19 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 26+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 7+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 13 19 14+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 15 19 17+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 6 19 7+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 13 19 14+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 15 19 17+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 18 19 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 22 19 24 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 18 19 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 18 19 19+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 20 19 21+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 19 19 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 19 19 20+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 25 19 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 19 25 19 26+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 17+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 1 20 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 3 20 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 3 20 4+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 20 12 20 13+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 4 20 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 4 20 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 4 20 10+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 11 20 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 11 20 12+ , srcInfoPoints = []+ }+ "x")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 14 20 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 14 20 15 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 16 20 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 16 20 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 20 16 20 17+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 1 22 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 1 22 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 20 22 22+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 9 22 19+ , srcInfoPoints = []+ }+ "SinglePair"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 23 22 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 30 22 32 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 23 22 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 23 22 24+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 25 22 26+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 28 22 29+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 24 22 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 24 22 25+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 27 22 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 27 22 28+ , srcInfoPoints = []+ }+ "a")+ ])+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 33 22 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 33 22 34+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 40 22 41+ ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 34 22 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 34 22 35+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 36 22 37+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 22 39 22 40+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 35 22 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 35 22 36+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 38 22 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 22 38 22 39+ , srcInfoPoints = []+ }+ "a")+ ])))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 1 23 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 1 23 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 23 22 23 23+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 9 23 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 9 23 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 9 23 19+ , srcInfoPoints = []+ }+ "SinglePair"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 20 23 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 20 23 21+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 24 23 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 24 23 25+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 23 26 23 27+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 25 23 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 23 25 23 26+ , srcInfoPoints = []+ }+ "x")+ ])+ ImplicitBidirectional+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 1 25 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 3 25 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 1 25 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 36+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 7+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 13 25 14+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 15 25 17+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 6 25 7+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 13 25 14+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 15 25 17+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 18 25 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 27 25 29 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 18 25 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 18 25 19+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 25 25 26+ ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 19 25 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 19 25 20+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 21 25 22+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 24 25 25+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 20 25 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 20 25 21+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 23 25 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 23 25 24+ , srcInfoPoints = []+ }+ "a")+ ]))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 30 25 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 30 25 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 25 30 25 36+ , srcInfoPoints = []+ }+ "String")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 26+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 1 26 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 3 26 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 3 26 4+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 26 16 26 17+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 4 26 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 4 26 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 4 26 14+ , srcInfoPoints = []+ }+ "SinglePair"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 15 26 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 15 26 16+ , srcInfoPoints = []+ }+ "x")+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 18 26 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 18 26 19 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 20 26 24+ , srcInfoPoints = []+ }+ "show")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 25 26 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 25 26 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 26 25 26 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 1 28 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 1 28 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 28 11 28 12+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 9 28 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 9 28 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 9 28 10+ , srcInfoPoints = []+ }+ "Q"))+ [])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 13 28 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 13 28 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 28 13 28 14+ , srcInfoPoints = []+ }+ "D"))+ [])+ ImplicitBidirectional+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 1 30 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 1 30 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 30 11 30 13+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 9 30 10+ , srcInfoPoints = []+ }+ "C"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 14 30 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 16 30 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 14 30 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 14 30 15+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 36+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 19 30 20+ , srcInfoPoints = []+ }+ "X")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 21 30 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 21 30 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 21 30 26+ , srcInfoPoints = []+ }+ "Maybe"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 27 30 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 27 30 28+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 30 35 30 36+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 28 30 33+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 34 30 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 30 34 30 35+ , srcInfoPoints = []+ }+ "a"))))))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 1 31 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 1 31 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 31 13 31 14+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 9 31 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 9 31 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 9 31 10+ , srcInfoPoints = []+ }+ "C"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 11 31 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 11 31 12+ , srcInfoPoints = []+ }+ "x")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 15 31 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 15 31 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 15 31 16+ , srcInfoPoints = []+ }+ "Y"))+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 17 31 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 17 31 18+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 31 24 31 25+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 18 31 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 18 31 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 18 31 22+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 23 31 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 31 23 31 24+ , srcInfoPoints = []+ }+ "x")+ ])+ ])+ ImplicitBidirectional+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 1 34 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 1 34 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 13 34 15+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 16 34 22+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 32 34 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 9 34 12+ , srcInfoPoints = []+ }+ "Syn"+ ]+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 23 34 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 23 34 24+ , srcInfoPoints = []+ }+ "a")+ , UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 25 34 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 25 34 26+ , srcInfoPoints = []+ }+ "b")+ , UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 27 34 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 27 34 28+ , srcInfoPoints = []+ }+ "c")+ ])+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 34 34 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 34 34 35+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 35 34 36+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 37 34 39+ ]+ }))+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 40 34 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 40 34 41+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 41 34 42+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 43 34 45+ ]+ }))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 46 34 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 46 34 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 34 46 34 49+ , srcInfoPoints = []+ }+ "Int")))+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 1 36 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 1 36 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 11 36 13+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 9 36 10+ , srcInfoPoints = []+ }+ "C"+ ]+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 15+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 29 36 30+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 31 36 33+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 14 36 15+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 29 36 30+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 31 36 33+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19+ , srcInfoPoints = []+ }+ "Show")))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 21+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 22 36 23+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 28 36 29+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22+ , srcInfoPoints = []+ }+ "a")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28+ , srcInfoPoints = []+ }+ "Bool"))+ ]))))))+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 34 36 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 36 36 38 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 34 36 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 34 36 35+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 64+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 46+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 39 36 40+ , srcInfoPoints = []+ }+ "X")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 41 36 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 41 36 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 41 36 46+ , srcInfoPoints = []+ }+ "Maybe"))))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 47 36 64+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 47 36 48+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 63 36 64+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 63+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 48 36 53+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 54 36 63+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 54 36 55+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 56 36 57+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 62 36 63+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 55 36 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 55 36 56+ , srcInfoPoints = []+ }+ "a")+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 58 36 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 58 36 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 58 36 62+ , srcInfoPoints = []+ }+ "Bool"))+ ])))))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 1 37 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 1 37 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 13 37 14+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 9 37 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 9 37 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 9 37 10+ , srcInfoPoints = []+ }+ "C"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 11 37 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 11 37 12+ , srcInfoPoints = []+ }+ "x")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 15 37 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 15 37 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 15 37 16+ , srcInfoPoints = []+ }+ "Y"))+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 17 37 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 17 37 18+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 32 37 33+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 18 37 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 18 37 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 18 37 22+ , srcInfoPoints = []+ }+ "Just"))+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 23 37 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 23 37 24+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 25 37 26+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 37 31 37 32+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 24 37 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 24 37 25+ , srcInfoPoints = []+ }+ "x")+ , PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 27 37 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 27 37 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 37 27 37 31+ , srcInfoPoints = []+ }+ "True"))+ []+ ]+ ])+ ])+ ImplicitBidirectional+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 1 39 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 1 39 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 39 11 39 13+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 9 39 10+ , srcInfoPoints = []+ }+ "P"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 22+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 14 39 15+ , srcInfoPoints = []+ }+ "T")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 16 39 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 16 39 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 16 39 20+ , srcInfoPoints = []+ }+ "Bool"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 21 39 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 39 21 39 22+ , srcInfoPoints = []+ }+ "b")))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 1 40 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 1 40 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 40 11 40 13+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 9 40 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 9 40 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 9 40 10+ , srcInfoPoints = []+ }+ "P"))+ [])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 14 40 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 14 40 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 14 40 17+ , srcInfoPoints = []+ }+ "MkT"))+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 18 40 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 18 40 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 40 18 40 22+ , srcInfoPoints = []+ }+ "True"))+ []+ ])+ Unidirectional+ , PatSynSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 1 42 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 1 42 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 42 11 42 13+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 9 42 10+ , srcInfoPoints = []+ }+ "D"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 14 42 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 16 42 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 14 42 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 14 42 15+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 35+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 30+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 19 42 20+ , srcInfoPoints = []+ }+ "T")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 21 42 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 21 42 22+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 42 29 42 30+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 22 42 27+ , srcInfoPoints = []+ }+ "Maybe")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 28 42 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 28 42 29+ , srcInfoPoints = []+ }+ "a")))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 31 42 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 31 42 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 42 31 42 35+ , srcInfoPoints = []+ }+ "Bool")))))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 1 43 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 1 43 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 43 13 43 14+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 9 43 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 9 43 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 9 43 10+ , srcInfoPoints = []+ }+ "D"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 11 43 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 11 43 12+ , srcInfoPoints = []+ }+ "x")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 15 43 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 15 43 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 15 43 18+ , srcInfoPoints = []+ }+ "MkT"))+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 19 43 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 19 43 20+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 43 26 43 27+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 20 43 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 20 43 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 20 43 24+ , srcInfoPoints = []+ }+ "Just"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 25 43 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 43 25 43 26+ , srcInfoPoints = []+ }+ "x")+ ])+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 1 46 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 1 46 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 15 46 16+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 9 46 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 9 46 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 9 46 10+ , srcInfoPoints = []+ }+ "P"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 11 46 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 11 46 12+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 13 46 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 13 46 14+ , srcInfoPoints = []+ }+ "b")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 17 46 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 17 46 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 17 46 21+ , srcInfoPoints = []+ }+ "Just"))+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 22 46 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 22 46 23+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 24 46 25+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 46 27 46 28+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 23 46 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 23 46 24+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 26 46 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 46 26 46 27+ , srcInfoPoints = []+ }+ "b")+ ]+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 1 48 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 1 48 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 48 18 48 19+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 9 48 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 9 48 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 9 48 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 16 48 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 16 48 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 20 48 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 20 48 21+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 48 22 48 23+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 21 48 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 48 21 48 22+ , srcInfoPoints = []+ }+ "x")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 1 50 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 1 50 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 17 50 18+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 9 50 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 9 50 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 9 50 10+ , srcInfoPoints = []+ }+ "a"))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 11 50 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 11 50 14+ , srcInfoPoints = []+ }+ ":+:"))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 15 50 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 15 50 16+ , srcInfoPoints = []+ }+ "b")))+ (PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 19 50 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 19 50 20+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 21 50 22+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 50 24 50 25+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 20 50 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 20 50 21+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 23 50 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 50 23 50 24+ , srcInfoPoints = []+ }+ "b")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 1 53 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 1 53 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 53 13 53 15+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 9 53 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 9 53 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 9 53 10+ , srcInfoPoints = []+ }+ "P"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 11 53 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 11 53 12+ , srcInfoPoints = []+ }+ "x")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 16 53 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 16 53 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 16 53 19+ , srcInfoPoints = []+ }+ "MkT"))+ [ PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 20 53 22+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 20 53 22+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 20 53 22+ , srcInfoPoints = []+ }+ 42+ "42")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 23 53 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 53 23 53 24+ , srcInfoPoints = []+ }+ "x")+ ])+ Unidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 1 56 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 1 56 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 56 15 56 17+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 9 56 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 9 56 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 9 56 10+ , srcInfoPoints = []+ }+ "P"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 11 56 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 11 56 12+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 13 56 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 13 56 14+ , srcInfoPoints = []+ }+ "y")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 18 56 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 18 56 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 18 56 21+ , srcInfoPoints = []+ }+ "MkT"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 22 56 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 22 56 23+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 24 56 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 56 24 56 25+ , srcInfoPoints = []+ }+ "y")+ ])+ Unidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 1 58 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 1 58 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 58 13 58 15+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 9 58 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 9 58 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 9 58 10+ , srcInfoPoints = []+ }+ "P"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 11 58 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 11 58 12+ , srcInfoPoints = []+ }+ "x")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 16 58 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 16 58 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 16 58 19+ , srcInfoPoints = []+ }+ "MkT"))+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 20 58 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 20 58 21+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 58 30 58 31+ ]+ }+ (PViewPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 23 58 25 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 21 58 22+ , srcInfoPoints = []+ }+ "f")))+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 26 58 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 26 58 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 26 58 30+ , srcInfoPoints = []+ }+ "True"))+ []))+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 32 58 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 58 32 58 33+ , srcInfoPoints = []+ }+ "x")+ ])+ Unidirectional+ , GDataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 60 1 63 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 60 8 60 13+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 61 5 61 5+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 60 1 60 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 60 6 60 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 60 6 60 7+ , srcInfoPoints = []+ }+ "T"))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 5 61 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 9 61 11 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 5 61 8+ , srcInfoPoints = []+ }+ "MkT")+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 12 61 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 14 61 16 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 12 61 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 12 61 13+ , srcInfoPoints = []+ }+ "b"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 17 61 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 29 61 31 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 17 61 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 17 61 18+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 61 27 61 28+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 18 61 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 20 61 22 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 18 61 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 18 61 19+ , srcInfoPoints = []+ }+ "b"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 23 61 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 23 61 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 23 61 27+ , srcInfoPoints = []+ }+ "Bool")))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 32 61 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 32 61 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 61 32 61 33+ , srcInfoPoints = []+ }+ "T")))))+ ]+ []+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 1 63 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 63 15 63 17+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 9 63 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 9 63 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 9 63 10+ , srcInfoPoints = []+ }+ "P"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 11 63 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 11 63 12+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 13 63 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 13 63 14+ , srcInfoPoints = []+ }+ "f")+ ])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 18 63 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 18 63 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 18 63 21+ , srcInfoPoints = []+ }+ "MkT"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 22 63 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 22 63 23+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 24 63 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 63 24 63 25+ , srcInfoPoints = []+ }+ "f")+ ])+ Unidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 1 65 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 1 65 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 65 18 65 20+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 9 65 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 9 65 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 9 65 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 16 65 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 16 65 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 21 65 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 21 65 22+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 65 23 65 24+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 22 65 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 65 22 65 23+ , srcInfoPoints = []+ }+ "x")+ ])+ Unidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 1 67 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 1 67 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 67 11 67 13+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 9 67 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 9 67 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 9 67 10+ , srcInfoPoints = []+ }+ "P"))+ [])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 14 67 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 14 67 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 14 67 18+ , srcInfoPoints = []+ }+ "Just"))+ [ PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 19 67 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 19 67 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 67 19 67 23+ , srcInfoPoints = []+ }+ "True"))+ []+ ])+ Unidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 1 69 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 1 69 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 69 11 69 12+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 9 69 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 9 69 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 9 69 10+ , srcInfoPoints = []+ }+ "P"))+ [])+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 13 69 15+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 13 69 15+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 69 13 69 15+ , srcInfoPoints = []+ }+ 42+ "42"))+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 1 72 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 1 72 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 11 72 12+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 9 72 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 9 72 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 9 72 10+ , srcInfoPoints = []+ }+ "P"))+ [])+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 14+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 14 72 15+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 14+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 14 72 15+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 72 13 72 14+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 72 14 72 15+ ]+ }))+ [])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 1 75 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 1 75 8+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 75 18 75 20+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 9 75 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 9 75 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 9 75 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 16 75 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 16 75 17+ , srcInfoPoints = []+ }+ "x")+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 21 75 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 21 75 22+ , SrcSpan "tests/examples/PatternSynonyms3.hs" 75 23 75 24+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 22 75 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PatternSynonyms3.hs" 75 22 75 23+ , srcInfoPoints = []+ }+ "x")+ ])+ Unidirectional+ ]+ , []+ )
+ tests/examples/PatternSynonyms3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PatternSynonyms3.hs.prettyprinter.golden view
@@ -0,0 +1,74 @@+{-# LANGUAGE PatternSynonyms, BangPatterns, PolyKinds, DataKinds,+ GADTs, FlexibleContexts, ViewPatterns #-}+{-# LANGUAGE ExplicitForAll #-}++pattern Single x <- [x]++single :: [a] -> Maybe a+single (Single x) = Just x+single _ = Nothing++pattern Single :: a -> [a]++pattern Single x = [x]++pattern Single :: () => (Show a) => a -> [a]++pattern Single x = [x]++f :: (Show a) => [a] -> a+f (Single x) = x++pattern SinglePair :: (a, a) -> [(a, a)]++pattern SinglePair x = [x]++f :: (Show a) => [(a, a)] -> String+f (SinglePair x) = show x++pattern Q = D++pattern C :: a -> X Maybe (Maybe a)++pattern C x = Y (Just x)++pattern Syn :: forall a b c . () => () => Int++pattern C :: (Show (a, Bool)) => a -> X Maybe (Maybe (a, Bool))++pattern C x = Y (Just (x, True))++pattern P :: T Bool b++pattern P <- MkT True++pattern D :: a -> T (Maybe a) Bool++pattern D x = MkT (Just x)++pattern P a b = Just (a, b)++pattern Single x = [x]++pattern a :+: b = (a, b)++pattern P x <- MkT 42 x++pattern P x y <- MkT x y++pattern P x <- MkT (f -> True) x++data T where+ MkT :: b -> (b -> Bool) -> T++pattern P x f <- MkT x f++pattern Single x <- [x]++pattern P <- Just True++pattern P = 42++pattern P = ()++pattern Single x <- [x]
+ tests/examples/PolyKindSigs.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE GADTs #-}+--{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE PolyKinds #-}++module Test where++data Foo :: * -> * where+ Foo :: Foo a
+ tests/examples/PolyKindSigs.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKindSigs.hs.parser.golden view
@@ -0,0 +1,163 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 1 1+ , SrcSpan "tests/examples/PolyKindSigs.hs" 3 1 3 1+ , SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 1+ , SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 1+ , SrcSpan "tests/examples/PolyKindSigs.hs" 7 1 7 1+ , SrcSpan "tests/examples/PolyKindSigs.hs" 9 1 9 1+ , SrcSpan "tests/examples/PolyKindSigs.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKindSigs.hs" 5 1 5 7+ , SrcSpan "tests/examples/PolyKindSigs.hs" 5 13 5 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 5 8 5 12+ , srcInfoPoints = []+ }+ "Test")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKindSigs.hs" 1 1 1 13+ , SrcSpan "tests/examples/PolyKindSigs.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 3 1 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKindSigs.hs" 3 1 3 13+ , SrcSpan "tests/examples/PolyKindSigs.hs" 3 29 3 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 3 14 3 23+ , srcInfoPoints = []+ }+ "PolyKinds"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 1 9 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKindSigs.hs" 7 10 7 12+ , SrcSpan "tests/examples/PolyKindSigs.hs" 7 20 7 25+ , SrcSpan "tests/examples/PolyKindSigs.hs" 8 3 8 3+ , SrcSpan "tests/examples/PolyKindSigs.hs" 9 1 9 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 1 7 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 6 7 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 6 7 9+ , srcInfoPoints = []+ }+ "Foo"))+ (Just+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 13 7 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKindSigs.hs" 7 15 7 17 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 13 7 14+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 18 7 19+ , srcInfoPoints = []+ })))+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 3 8 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKindSigs.hs" 8 7 8 9 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 3 8 6+ , srcInfoPoints = []+ }+ "Foo")+ Nothing+ Nothing+ Nothing+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 15+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 10 8 13+ , srcInfoPoints = []+ }+ "Foo")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ "a")))+ ]+ []+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/PolyKindSigs.hs" 2 1 2 34)+ "{-# LANGUAGE KindSignatures #-}"+ ]+ )
+ tests/examples/PolyKindSigs.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKindSigs.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE GADTs #-}+{-# LANGUAGE PolyKinds #-}+module Test where++data Foo :: * -> * where+ Foo :: Foo a
+ tests/examples/PolyKinds.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PolyKinds #-}+data Proxy t = Proxy++class Typeable t where+ typeOf :: Proxy t -> TypeRep++instance Typeable Int where typeOf _ = TypeRep+instance Typeable [] where typeOf _ = TypeRep
+ tests/examples/PolyKinds.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKinds.hs.parser.golden view
@@ -0,0 +1,437 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 1 1 1 1+ , SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 1+ , SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 1+ , SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 1+ , SrcSpan "tests/examples/PolyKinds.hs" 4 1 4 1+ , SrcSpan "tests/examples/PolyKinds.hs" 7 1 7 1+ , SrcSpan "tests/examples/PolyKinds.hs" 8 1 8 1+ , SrcSpan "tests/examples/PolyKinds.hs" 9 1 9 1+ , SrcSpan "tests/examples/PolyKinds.hs" 9 1 9 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 1 1 1 13+ , SrcSpan "tests/examples/PolyKinds.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "PolyKinds"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 2 14 2 15 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 1 2 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 6 2 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 6 2 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 6 2 11+ , srcInfoPoints = []+ }+ "Proxy"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 12 2 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 12 2 13+ , srcInfoPoints = []+ }+ "t")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 16 2 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 16 2 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 2 16 2 21+ , srcInfoPoints = []+ }+ "Proxy")+ [])+ ]+ []+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 1 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 4 1 4 6+ , SrcSpan "tests/examples/PolyKinds.hs" 4 18 4 23+ , SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 3+ , SrcSpan "tests/examples/PolyKinds.hs" 7 1 7 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 7 4 17+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 7 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 7 4 15+ , srcInfoPoints = []+ }+ "Typeable"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ "t")))+ []+ (Just+ [ ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 5 10 5 12 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 5 10 5 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 3 5 9+ , srcInfoPoints = []+ }+ "typeOf"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 5 21 5 23 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 20+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 13 5 18+ , srcInfoPoints = []+ }+ "Proxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ "t")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 24 5 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 24 5 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 5 24 5 31+ , srcInfoPoints = []+ }+ "TypeRep")))))+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 1 8 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 7 1 7 9+ , SrcSpan "tests/examples/PolyKinds.hs" 7 24 7 29+ , SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 30+ , SrcSpan "tests/examples/PolyKinds.hs" 8 1 8 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 22+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 22+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 10 7 18+ , srcInfoPoints = []+ }+ "Typeable")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ "Int")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 48+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 48+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 30 7 36+ , srcInfoPoints = []+ }+ "typeOf")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 37 7 38+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 39 7 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 7 39 7 40 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 41 7 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 7 41 7 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PolyKinds.hs" 7 41 7 48+ , srcInfoPoints = []+ }+ "TypeRep"))))+ Nothing+ ])+ ])+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 1 9 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 8 1 8 9+ , SrcSpan "tests/examples/PolyKinds.hs" 8 24 8 29+ , SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 30+ , SrcSpan "tests/examples/PolyKinds.hs" 9 1 9 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 21+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 10 8 18+ , srcInfoPoints = []+ }+ "Typeable")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 20+ , SrcSpan "tests/examples/PolyKinds.hs" 8 20 8 21+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 20+ , SrcSpan "tests/examples/PolyKinds.hs" 8 20 8 21+ ]+ }+ (ListCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 8 19 8 20+ , SrcSpan "tests/examples/PolyKinds.hs" 8 20 8 21+ ]+ })))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 48+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 48+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 30 8 36+ , srcInfoPoints = []+ }+ "typeOf")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 37 8 38+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 39 8 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PolyKinds.hs" 8 39 8 40 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 41 8 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PolyKinds.hs" 8 41 8 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PolyKinds.hs" 8 41 8 48+ , srcInfoPoints = []+ }+ "TypeRep"))))+ Nothing+ ])+ ])+ ]+ , []+ )
+ tests/examples/PolyKinds.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PolyKinds.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE PolyKinds #-}++data Proxy t = Proxy++class Typeable t where+ typeOf :: Proxy t -> TypeRep++instance Typeable Int where+ typeOf _ = TypeRep++instance Typeable [] where+ typeOf _ = TypeRep
+ tests/examples/Ppr048.hs view
@@ -0,0 +1,10 @@+module Ppr048 where++{-# SCc foo #-}+foo :: Int -> Int+foo x = x++{-# SCc foo2 "label" #-}+foo2 :: ()+foo2 = ()+
+ tests/examples/Ppr048.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/Ppr048.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+ (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/Ppr048.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/Ppr048.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/Ppr048.hs" 3 9) "Parse error: foo"
+ tests/examples/PrimitiveIntHexLiteral.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE MagicHash #-}+minInt = I# (0x8000000000000000#)
+ tests/examples/PrimitiveIntHexLiteral.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PrimitiveIntHexLiteral.hs.parser.golden view
@@ -0,0 +1,112 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 1 1+ , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 1+ , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 1+ , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 1+ , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 3 1 3 1+ , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 3 1 3 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 1 1 13+ , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "MagicHash"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 34+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 1 2 7+ , srcInfoPoints = []+ }+ "minInt"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 8 2 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 8 2 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 34+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 10 2 12+ , srcInfoPoints = []+ }+ "I#")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 13 2 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 13 2 14+ , SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 33 2 34+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 14 2 33+ , srcInfoPoints = []+ }+ (PrimInt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PrimitiveIntHexLiteral.hs" 2 14 2 33+ , srcInfoPoints = []+ }+ 9223372036854775808+ "0x8000000000000000")))))+ Nothing+ ]+ , []+ )
+ tests/examples/PrimitiveIntHexLiteral.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () Nothing [LanguagePragma () [Ident () "MagicHash"]] [] [PatBind () (PVar () (Ident () "minInt")) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "I#"))) (Paren () (Lit () (PrimInt () 9223372036854775808 "0x8000000000000000"))))) Nothing]++AST 2:++Module () Nothing [LanguagePragma () [Ident () "MagicHash"]] [] [PatBind () (PVar () (Ident () "minInt")) (UnGuardedRhs () (App () (Con () (UnQual () (Ident () "I#"))) (Paren () (Lit () (PrimInt () 9223372036854775808 "9223372036854775808"))))) Nothing]+
+ tests/examples/PrimitiveIntHexLiteral.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE MagicHash #-}+minInt = I# (9223372036854775808#)
+ tests/examples/PromotedSpace.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE DataKinds #-}+module PromotedSpace where++-- Promoted list containing promoted constructor with quote+type PL1 = '[ 'True ]++-- Promoted list containing promoted list+type PL2 = '[ '[Int] ]++-- Promoted list containing promoted tuple+type PL3 = '[ '(Int, Bool) ]++-- Promoted tuple containing promoted constructor with quote+type PT1 = '( 'True, False )++-- Promoted tuple containing promoted list+type PT2 = '( '[Int], Bool )++-- Promoted tuple containing promoted tuple+type PT3 = '( '(Int, Bool), Char )
+ tests/examples/PromotedSpace.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PromotedSpace.hs.parser.golden view
@@ -0,0 +1,617 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 21 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 7+ , SrcSpan "tests/examples/PromotedSpace.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "PromotedSpace")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ ]+ []+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 10 5 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ "PL1"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22+ ]+ }+ True+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20+ , srcInfoPoints = []+ }+ "True")))+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 10 8 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ "PL2"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23+ ]+ }+ True+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21+ ]+ }+ True+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+ , srcInfoPoints = []+ }+ "Int"))+ ])+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 10 11 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9+ , srcInfoPoints = []+ }+ "PL3"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29+ ]+ }+ True+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+ , srcInfoPoints = []+ }+ "Bool"))+ ])+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 10 14 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9+ , srcInfoPoints = []+ }+ "PT1"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29+ ]+ }+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20+ , srcInfoPoints = []+ }+ "True")))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+ , srcInfoPoints = []+ }+ "False"))+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 10 17 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9+ , srcInfoPoints = []+ }+ "PT2"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29+ ]+ }+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21+ ]+ }+ True+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+ , srcInfoPoints = []+ }+ "Int"))+ ])+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ "Bool"))+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 10 20 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9+ , srcInfoPoints = []+ }+ "PT3"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35+ ]+ }+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+ , srcInfoPoints = []+ }+ "Bool"))+ ])+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+ , srcInfoPoints = []+ }+ "Char"))+ ]))+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 4 1 4 60)+ " Promoted list containing promoted constructor with quote"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 7 1 7 42)+ " Promoted list containing promoted list"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 10 1 10 43)+ " Promoted list containing promoted tuple"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 13 1 13 61)+ " Promoted tuple containing promoted constructor with quote"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 16 1 16 43)+ " Promoted tuple containing promoted list"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 19 1 19 44)+ " Promoted tuple containing promoted tuple"+ ]+ )
+ tests/examples/PromotedSpace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PromotedSpace.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE DataKinds #-}+module PromotedSpace where++type PL1 = '[ 'True]++type PL2 = '[ '[Int]]++type PL3 = '[ '(Int, Bool)]++type PT1 = '( 'True, False)++type PT2 = '( '[Int], Bool)++type PT3 = '( '(Int, Bool), Char)
+ tests/examples/QQType.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE FlexibleInstances, TemplateHaskell, QuasiQuotes #-}+module QQType where++import Language.Haskell.TH++x :: DecsQ+x = [d| instance Show $(conT (mkName "Int")) |]
+ tests/examples/QQType.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QQType.hs.parser.golden view
@@ -0,0 +1,278 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 1 1 1 1+ , SrcSpan "tests/examples/QQType.hs" 2 1 2 1+ , SrcSpan "tests/examples/QQType.hs" 2 1 2 1+ , SrcSpan "tests/examples/QQType.hs" 4 1 4 1+ , SrcSpan "tests/examples/QQType.hs" 6 1 6 1+ , SrcSpan "tests/examples/QQType.hs" 7 1 7 1+ , SrcSpan "tests/examples/QQType.hs" 8 1 8 1+ , SrcSpan "tests/examples/QQType.hs" 8 1 8 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 2 1 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 2 1 2 7+ , SrcSpan "tests/examples/QQType.hs" 2 15 2 20+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 2 8 2 14+ , srcInfoPoints = []+ }+ "QQType")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 1 1 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 1 1 1 13+ , SrcSpan "tests/examples/QQType.hs" 1 31 1 32+ , SrcSpan "tests/examples/QQType.hs" 1 48 1 49+ , SrcSpan "tests/examples/QQType.hs" 1 62 1 65+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 14 1 31+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 33 1 48+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 1 50 1 61+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 4 1 4 27+ , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 4 8 4 27+ , srcInfoPoints = []+ }+ "Language.Haskell.TH"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 1 6 11+ , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 6 3 6 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 1 6 2+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 6 6 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 6 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 6 6 6 11+ , srcInfoPoints = []+ }+ "DecsQ")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 1 7 48+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 1 7 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 1 7 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 3 7 48+ , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 7 3 7 4 ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 5 7 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 7 5 7 8+ , SrcSpan "tests/examples/QQType.hs" 7 46 7 48+ ]+ }+ (DeclBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 5 7 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 7 9 7 9+ , SrcSpan "tests/examples/QQType.hs" 7 46 7 46+ , SrcSpan "tests/examples/QQType.hs" 7 46 7 48+ ]+ }+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 9 7 45+ , srcInfoPoints = [ SrcSpan "tests/examples/QQType.hs" 7 9 7 17 ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 45+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 45+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 18 7 22+ , srcInfoPoints = []+ }+ "Show")))+ (TySplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 23 7 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 7 23 7 25+ , SrcSpan "tests/examples/QQType.hs" 7 44 7 45+ ]+ }+ (ParenSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 23 7 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 7 23 7 25+ , SrcSpan "tests/examples/QQType.hs" 7 44 7 45+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QQType.hs" 7 25 7 44+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 25 7 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 25 7 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 25 7 29+ , srcInfoPoints = []+ }+ "conT")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 30 7 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QQType.hs" 7 30 7 31+ , SrcSpan "tests/examples/QQType.hs" 7 43 7 44+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 31 7 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 31 7 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 31 7 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QQType.hs" 7 31 7 37+ , srcInfoPoints = []+ }+ "mkName")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 38 7 43+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QQType.hs" 7 38 7 43+ , srcInfoPoints = []+ }+ "Int"+ "Int")))))))))+ Nothing+ ])))+ Nothing+ ]+ , []+ )
+ tests/examples/QQType.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QQType.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE FlexibleInstances, TemplateHaskell, QuasiQuotes #-}+module QQType where+import Language.Haskell.TH++x :: DecsQ+x = [d|+ + instance Show $( conT (mkName "Int") )+ |]
+ tests/examples/QualifiedDot.hs view
@@ -0,0 +1,3 @@+module QualifiedDot where++twoDots = (Prelude..)
+ tests/examples/QualifiedDot.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedDot.hs.parser.golden view
@@ -0,0 +1,87 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 1+ , SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 1+ , SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 1+ , SrcSpan "tests/examples/QualifiedDot.hs" 4 1 4 1+ , SrcSpan "tests/examples/QualifiedDot.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedDot.hs" 1 1 1 7+ , SrcSpan "tests/examples/QualifiedDot.hs" 1 21 1 26+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 1 8 1 20+ , srcInfoPoints = []+ }+ "QualifiedDot")+ Nothing+ Nothing))+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 1 3 8+ , srcInfoPoints = []+ }+ "twoDots"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 9 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedDot.hs" 3 9 3 10 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 12+ , SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+ , SrcSpan "tests/examples/QualifiedDot.hs" 3 21 3 22+ ]+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedDot.hs" 3 11 3 12+ , SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+ , SrcSpan "tests/examples/QualifiedDot.hs" 3 21 3 22+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+ , srcInfoPoints = []+ }+ "Prelude")+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedDot.hs" 3 12 3 21+ , srcInfoPoints = []+ }+ "."))))+ Nothing+ ]+ , []+ )
+ tests/examples/QualifiedDot.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedDot.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module QualifiedDot where+twoDots = (Prelude..)
+ tests/examples/QualifiedQQuote.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE QuasiQuotes #-}+import qualified Language.Haskell.TH as T++x :: T.DecsQ+x = [T.d|id|]+
+ tests/examples/QualifiedQQuote.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedQQuote.hs.parser.golden view
@@ -0,0 +1,145 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 1 1+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 1+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 1+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 1+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 4 1 4 1+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 1+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 7 1 7 1+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedQQuote.hs" 1 1 1 13+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedQQuote.hs" 2 1 2 7+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 8 2 17+ , SrcSpan "tests/examples/QualifiedQQuote.hs" 2 38 2 40+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 2 18 2 37+ , srcInfoPoints = []+ }+ "Language.Haskell.TH"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 2 41 2 42+ , srcInfoPoints = []+ }+ "T")+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 4 1 4 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedQQuote.hs" 4 3 4 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+ , srcInfoPoints = []+ }+ "T")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 4 6 4 13+ , srcInfoPoints = []+ }+ "DecsQ")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QualifiedQQuote.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 5 3 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedQQuote.hs" 5 3 5 4 ]+ }+ (QuasiQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedQQuote.hs" 5 5 5 14+ , srcInfoPoints = []+ }+ "T.d"+ "id"))+ Nothing+ ]+ , []+ )
+ tests/examples/QualifiedQQuote.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedQQuote.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE QuasiQuotes #-}+import qualified Language.Haskell.TH as T++x :: T.DecsQ+x = [T.d|id|]
+ tests/examples/QualifiedRecordfieldPuns.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+f (C {M.a}) = a+
+ tests/examples/QualifiedRecordfieldPuns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedRecordfieldPuns.hs.parser.golden view
@@ -0,0 +1,143 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 1 1+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 1+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 1+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 1+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 4 1 4 1+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 1 1 13+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "NamedFieldPuns"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 3 2 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 3 2 4+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 11 2 12+ ]+ }+ (PRec+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 4 2 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 6 2 7+ , SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 10 2 11+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 4 2 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 4 2 5+ , srcInfoPoints = []+ }+ "C"))+ [ PFieldPun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+ , srcInfoPoints = []+ }+ "M")+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 7 2 10+ , srcInfoPoints = []+ }+ "a"))+ ])+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 13 2 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 13 2 14 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QualifiedRecordfieldPuns.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ "a"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/QualifiedRecordfieldPuns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QualifiedRecordfieldPuns.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE NamedFieldPuns #-}+f (C{M.a}) = a
+ tests/examples/QuantifiedConstraints.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitForAll #-}+{-# LANGUAGE QuantifiedConstraints #-}++class (forall a. Eq (f a)) => C f
+ tests/examples/QuantifiedConstraints.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuantifiedConstraints.hs.parser.golden view
@@ -0,0 +1,222 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 1+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 1+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 13+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "ExplicitForAll"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 13+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 36 2 39+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 14 2 35+ , srcInfoPoints = []+ }+ "QuantifiedConstraints"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 6 ]+ }+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuantifiedConstraints.hs" 4 18 4 20+ , srcInfoPoints = []+ }+ "Eq")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 22+ , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 25 4 26+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 22 4 25+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuantifiedConstraints.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuantifiedConstraints.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ "f"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuantifiedConstraints.hs" 4 24 4 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuantifiedConstraints.hs" 4 24 4 25+ , srcInfoPoints = []+ }+ "a"))))))))))+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 34+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32+ , srcInfoPoints = []+ }+ "C"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ "f")))+ []+ Nothing+ ]+ , []+ )
+ tests/examples/QuantifiedConstraints.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuantifiedConstraints.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE ExplicitForAll #-}+{-# LANGUAGE QuantifiedConstraints #-}++class (forall a . Eq (f a)) => C f
+ tests/examples/QuasiQuoteLines.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE QuasiQuotes #-}++import Here++str :: String+str = [here|test +test +test test |]+++main :: IO()+main = do putStrLn str
+ tests/examples/QuasiQuoteLines.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteLines.hs.parser.golden view
@@ -0,0 +1,285 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 13 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 1 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 1 5 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 6 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 1 11 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 13 1 13 1+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 13 1 13 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 1 1 13+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 1 3 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 3 8 3 12+ , srcInfoPoints = []+ }+ "Here"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 1 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 5 5 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ "str"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 8 5 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 8 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 5 8 5 14+ , srcInfoPoints = []+ }+ "String")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 8 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ "str"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 5 8 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 5 6 6 ]+ }+ (QuasiQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 6 7 8 13+ , srcInfoPoints = []+ }+ "here"+ "test \ntest \ntest test "))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 1 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 6 11 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 1 11 5+ , srcInfoPoints = []+ }+ "main"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 12+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 12 11 13+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 12+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 12 11 13+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 11 11 12+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 11 12 11 13+ ]+ }))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 23+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 1 12 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 6 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 6 12 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 8 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 8 12 10+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 11+ , SrcSpan "tests/examples/QuasiQuoteLines.hs" 13 1 13 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 23+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 20 12 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 20 12 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteLines.hs" 12 20 12 23+ , srcInfoPoints = []+ }+ "str"))))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/QuasiQuoteLines.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteLines.hs.prettyprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE QuasiQuotes #-}+import Here++str :: String+str = [here|test +test +test test |]++main :: IO ()+main = do putStrLn str
+ tests/examples/QuasiQuoteOld.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE QuasiQuotes #-}++import Here++str :: String+str = [$here|test +test +test test |]+++main :: IO()+main = do putStrLn str
+ tests/examples/QuasiQuoteOld.hs.exactprinter.golden view
@@ -0,0 +1,13 @@+{-# LANGUAGE QuasiQuotes #-}++import Here++str :: String+str = [here|test +test +test test |]+++main :: IO()+main = do putStrLn str+
+ tests/examples/QuasiQuoteOld.hs.parser.golden view
@@ -0,0 +1,270 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 13 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 1 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 1 5 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 6 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 1 11 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 13 1 13 1+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 13 1 13 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 1 1 13+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 1 3 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 3 8 3 12+ , srcInfoPoints = []+ }+ "Here"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 1 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 5 5 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 1 5 4+ , srcInfoPoints = []+ }+ "str"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 8 5 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 8 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 5 8 5 14+ , srcInfoPoints = []+ }+ "String")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 8 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ "str"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 5 8 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 5 6 6 ]+ }+ (QuasiQuote+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 6 7 8 13+ , srcInfoPoints = []+ }+ "here"+ "test \ntest \ntest test "))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 1 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 6 11 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 1 11 5+ , srcInfoPoints = []+ }+ "main"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 12+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 12 11 13+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 12+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 12 11 13+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 11 11 12+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 11 12 11 13+ ]+ }))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 23+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 1 12 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 6 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 6 12 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 8 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 8 12 10+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 11+ , SrcSpan "tests/examples/QuasiQuoteOld.hs" 13 1 13 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 23+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 11 12 19+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 20 12 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 20 12 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteOld.hs" 12 20 12 23+ , srcInfoPoints = []+ }+ "str"))))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/QuasiQuoteOld.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteOld.hs.prettyprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE QuasiQuotes #-}+import Here++str :: String+str = [here|test +test +test test |]++main :: IO ()+main = do putStrLn str
+ tests/examples/QuasiQuoteQual2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE QuasiQuotes #-}+f [True] = 1+f _ = 0+
+ tests/examples/QuasiQuoteQual2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteQual2.hs.parser.golden view
@@ -0,0 +1,140 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 1 1+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 1+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 1+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 1+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 5 1 5 1+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 1 1 13+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 3 8+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f")+ [ PList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 3 2 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 3 2 4+ , SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 8 2 9+ ]+ }+ [ PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 4 2 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 4 2 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 4 2 8+ , srcInfoPoints = []+ }+ "True"))+ []+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 10 2 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 10 2 11 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 12 2 13+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 2 12 2 13+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 1 3 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 3 3 4+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 5 3 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 5 3 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 7 3 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteQual2.hs" 3 7 3 8+ , srcInfoPoints = []+ }+ 0+ "0")))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/QuasiQuoteQual2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteQual2.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes #-}+f [True] = 1+f _ = 0
+ tests/examples/QuasiQuoteSplice.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE TemplateHaskell, RankNTypes #-}+{-# OPTIONS_GHC -F -pgmFtrhsx #-}+import Language.Haskell.TH++data PageFunction m a = PF++main = let a = mkName "a" in+ runQ [t| forall m. PageFunction m $(conT (mkName "a")) |] >>= print+
+ tests/examples/QuasiQuoteSplice.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteSplice.hs.parser.golden view
@@ -0,0 +1,589 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 10 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 1 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 1 2 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 1 5 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 7 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 10 1 10 1+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 10 1 10 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 1 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 1 1 13+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 29 1 30+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 42 1 45+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 1 31 1 41+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ , OptionsPragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 1 2 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 1 2 31+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 2 31 2 34+ ]+ }+ (Just GHC)+ "-F -pgmFtrhsx "+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 1 3 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 3 8 3 27+ , srcInfoPoints = []+ }+ "Language.Haskell.TH"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 1 5 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 23 5 24 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 1 5 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 22+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 6 5 18+ , srcInfoPoints = []+ }+ "PageFunction"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ "m")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 25 5 27+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 25 5 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 5 25 5 27+ , srcInfoPoints = []+ }+ "PF")+ [])+ ]+ []+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 8 75+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 6 8 75+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 6 7 7 ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 8 8 75+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 8 7 11+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 27 7 29+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 12+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 27 7 27+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 12 7 13+ , srcInfoPoints = []+ }+ "a"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 14 7 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 14 7 15 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 16 7 22+ , srcInfoPoints = []+ }+ "mkName")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 23 7 26+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 7 23 7 26+ , srcInfoPoints = []+ }+ "a"+ "a"))))+ Nothing+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 75+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 65+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 8 8 12+ , srcInfoPoints = []+ }+ "runQ")))+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 16+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 63 8 65+ ]+ }+ (TypeBracket+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 65+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 13 8 16+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 63 8 65+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 17 8 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 17 8 23+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 25 8 26+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 24 8 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 24 8 25+ , srcInfoPoints = []+ }+ "m")+ ])+ Nothing+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 27 8 62+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 27 8 41+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 27 8 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 27 8 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 27 8 39+ , srcInfoPoints = []+ }+ "PageFunction")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 40 8 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 40 8 41+ , srcInfoPoints = []+ }+ "m")))+ (TySplice+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 42 8 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 42 8 44+ , SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 61 8 62+ ]+ }+ (ParenSplice+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 42 8 62+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 42 8 44+ , SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 61 8 62+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 44 8 61+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 44 8 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 44+ 8+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 44+ 8+ 48+ , srcInfoPoints = []+ }+ "conT")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs" 8 49 8 61+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 49+ 8+ 50+ , SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 60+ 8+ 61+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 50+ 8+ 60+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 50+ 8+ 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 50+ 8+ 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 50+ 8+ 56+ , srcInfoPoints = []+ }+ "mkName")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 57+ 8+ 60+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/QuasiQuoteSplice.hs"+ 8+ 57+ 8+ 60+ , srcInfoPoints = []+ }+ "a"+ "a"))))))))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 66 8 69+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 66 8 69+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 66 8 69+ , srcInfoPoints = []+ }+ ">>=")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 70 8 75+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 70 8 75+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteSplice.hs" 8 70 8 75+ , srcInfoPoints = []+ }+ "print"))))))+ Nothing+ ]+ , []+ )
+ tests/examples/QuasiQuoteSplice.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteSplice.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE TemplateHaskell, RankNTypes #-}+{-# OPTIONS_GHC -F -pgmFtrhsx #-}+import Language.Haskell.TH++data PageFunction m a = PF+main+ = let a = mkName "a" in+ runQ [t| forall m . PageFunction m $( conT (mkName "a") ) |] >>=+ print
+ tests/examples/QuasiQuoteToplevel.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE QuasiQuotes #-}++[undefined|+this quasiquote is acceptable to ghc's+parser. Previously hse would reject this+because -XTemplateHaskell is not enabled+to allow "expressions" at top-level+|]
+ tests/examples/QuasiQuoteToplevel.hs.exactprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE QuasiQuotes #-}++[undefined|+this quasiquote is acceptable to ghc's+parser. Previously hse would reject this+because -XTemplateHaskell is not enabled+to allow "expressions" at top-level|]++
+ tests/examples/QuasiQuoteToplevel.hs.parser.golden view
@@ -0,0 +1,51 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 1 1+ , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 3 1+ , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 9 1 9 1+ , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 9 1 9 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 1 1 13+ , SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ []+ [ SpliceDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 8 3+ , srcInfoPoints = []+ }+ (QuasiQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteToplevel.hs" 3 1 8 3+ , srcInfoPoints = []+ }+ "undefined"+ "\nthis quasiquote is acceptable to ghc's\nparser. Previously hse would reject this\nbecause -XTemplateHaskell is not enabled\nto allow \"expressions\" at top-level\n")+ ]+ , []+ )
+ tests/examples/QuasiQuoteToplevel.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteToplevel.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE QuasiQuotes #-}++[undefined|+this quasiquote is acceptable to ghc's+parser. Previously hse would reject this+because -XTemplateHaskell is not enabled+to allow "expressions" at top-level+|]
+ tests/examples/QuasiQuoteUnit.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}++unNest n = conP '()+
+ tests/examples/QuasiQuoteUnit.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteUnit.hs.parser.golden view
@@ -0,0 +1,139 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 1 1+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 1 2 1+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 1+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 1+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 1+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 6 1 6 1+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 1 1 13+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 1 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 1 2 13+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 30 2 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 2 14 2 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 20+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 1 4 7+ , srcInfoPoints = []+ }+ "unNest")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ "n")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 10 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 10 4 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 12 4 16+ , srcInfoPoints = []+ }+ "conP")))+ (VarQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 17 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 17 4 18 ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 19+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 19 4 20+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 18 4 19+ , SrcSpan "tests/examples/QuasiQuoteUnit.hs" 4 19 4 20+ ]+ })))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/QuasiQuoteUnit.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/QuasiQuoteUnit.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+unNest n = conP '()
+ tests/examples/RCategory.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds, MultiParamTypeClasses #-}+module Control.RCategory where+++import qualified Prelude++import GHC.Prim++infixr 9 .+infixr 1 >>>, <<<++-- | A class for categories.+-- id and (.) must form a monoid.+class RCategory cat where+ type RCategoryCtxt cat a b :: Constraint++ -- | the identity morphism+ id :: RCategoryCtxt cat a a+ => cat a a++ -- | morphism composition+ (.) :: (RCategoryCtxt cat b c, RCategoryCtxt cat a b, RCategoryCtxt cat a c)+ => cat b c -> cat a b -> cat a c++{-# RULES+"identity/left" forall p .+ id . p = p+"identity/right" forall p .+ p . id = p+ #-}++instance RCategory (->) where+ type RCategoryCtxt (->) a a = ()+ id = Prelude.id+ (.) = (Prelude..)++-- | Right-to-left composition+(<<<) :: (RCategoryCtxt cat a c, RCategoryCtxt cat a b, RCategoryCtxt cat b c, RCategory cat)+ => cat b c -> cat a b -> cat a c+(<<<) = (.)++-- | Left-to-right composition+(>>>) :: (RCategoryCtxt cat a c, RCategoryCtxt cat a b, RCategoryCtxt cat b c, RCategory cat)+ => cat a b -> cat b c -> cat a c+f >>> g = g . f
+ tests/examples/RCategory.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory.hs.parser.golden view
@@ -0,0 +1,2479 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 1 46 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 1 1 1 1+ , SrcSpan "tests/examples/RCategory.hs" 2 1 2 1+ , SrcSpan "tests/examples/RCategory.hs" 2 1 2 1+ , SrcSpan "tests/examples/RCategory.hs" 5 1 5 1+ , SrcSpan "tests/examples/RCategory.hs" 7 1 7 1+ , SrcSpan "tests/examples/RCategory.hs" 9 1 9 1+ , SrcSpan "tests/examples/RCategory.hs" 10 1 10 1+ , SrcSpan "tests/examples/RCategory.hs" 14 1 14 1+ , SrcSpan "tests/examples/RCategory.hs" 25 1 25 1+ , SrcSpan "tests/examples/RCategory.hs" 32 1 32 1+ , SrcSpan "tests/examples/RCategory.hs" 38 1 38 1+ , SrcSpan "tests/examples/RCategory.hs" 40 1 40 1+ , SrcSpan "tests/examples/RCategory.hs" 43 1 43 1+ , SrcSpan "tests/examples/RCategory.hs" 45 1 45 1+ , SrcSpan "tests/examples/RCategory.hs" 46 1 46 1+ , SrcSpan "tests/examples/RCategory.hs" 46 1 46 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 2 1 2 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 2 1 2 7+ , SrcSpan "tests/examples/RCategory.hs" 2 26 2 31+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 2 8 2 25+ , srcInfoPoints = []+ }+ "Control.RCategory")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 1 1 70+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 1 1 1 13+ , SrcSpan "tests/examples/RCategory.hs" 1 26 1 27+ , SrcSpan "tests/examples/RCategory.hs" 1 43 1 44+ , SrcSpan "tests/examples/RCategory.hs" 1 67 1 70+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 28 1 43+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 1 45 1 66+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 5 1 5 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 5 1 5 7+ , SrcSpan "tests/examples/RCategory.hs" 5 8 5 17+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 5 18 5 25+ , srcInfoPoints = []+ }+ "Prelude"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 7 1 7 16+ , srcInfoPoints = [ SrcSpan "tests/examples/RCategory.hs" 7 1 7 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 7 8 7 16+ , srcInfoPoints = []+ }+ "GHC.Prim"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 1 9 11+ , srcInfoPoints = [ SrcSpan "tests/examples/RCategory.hs" 9 8 9 9 ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 1 9 7+ , srcInfoPoints = []+ })+ (Just 9)+ [ VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 10 9 11+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 9 10 9 11+ , srcInfoPoints = []+ }+ ".")+ ]+ , InfixDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 1 10 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 10 8 10 9+ , SrcSpan "tests/examples/RCategory.hs" 10 13 10 14+ ]+ }+ (AssocRight+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 1 10 7+ , srcInfoPoints = []+ })+ (Just 1)+ [ VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 10 10 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 10 10 13+ , srcInfoPoints = []+ }+ ">>>")+ , VarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 15 10 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 10 15 10 18+ , srcInfoPoints = []+ }+ "<<<")+ ]+ , ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 1 23 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 14 1 14 6+ , SrcSpan "tests/examples/RCategory.hs" 14 21 14 26+ , SrcSpan "tests/examples/RCategory.hs" 15 3 15 3+ , SrcSpan "tests/examples/RCategory.hs" 18 3 18 3+ , SrcSpan "tests/examples/RCategory.hs" 22 3 22 3+ , SrcSpan "tests/examples/RCategory.hs" 25 1 25 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 7 14 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 7 14 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 7 14 16+ , srcInfoPoints = []+ }+ "RCategory"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 17 14 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 14 17 14 20+ , srcInfoPoints = []+ }+ "cat")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 3 15 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 15 3 15 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 29+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 27+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 25+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 8 15 21+ , srcInfoPoints = []+ }+ "RCategoryCtxt"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 22 15 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 22 15 25+ , srcInfoPoints = []+ }+ "cat")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 26 15 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 26 15 27+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 28 15 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 28 15 29+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (KindSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 30 15 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 15 30 15 32 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43+ , srcInfoPoints = []+ }+ "Constraint")))))+ Nothing+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 18 5+ , srcInfoPoints = []+ }+ "id"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 16+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 9 19 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 18 9 18 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 18 9 18 22+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 23 18 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 18 23 18 26+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 27 18 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 27 18 28+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 29 18 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 18 29 18 30+ , srcInfoPoints = []+ }+ "a"))))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 16+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 14+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 19 9 19 12+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 13 19 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 19 13 19 14+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16+ , srcInfoPoints = []+ }+ "a")))))+ , ClsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]+ }+ (TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 22 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 22 3 22 4+ , SrcSpan "tests/examples/RCategory.hs" 22 4 22 5+ , SrcSpan "tests/examples/RCategory.hs" 22 5 22 6+ ]+ }+ "."+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 39+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 22 10 22 11+ , SrcSpan "tests/examples/RCategory.hs" 22 32 22 33+ , SrcSpan "tests/examples/RCategory.hs" 22 55 22 56+ , SrcSpan "tests/examples/RCategory.hs" 22 78 22 79+ , SrcSpan "tests/examples/RCategory.hs" 23 7 23 9+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 11 22 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 11 22 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 11 22 24+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 25 22 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 25 22 28+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 29 22 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 29 22 30+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 31 22 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 31 22 32+ , srcInfoPoints = []+ }+ "c")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 34 22 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 34 22 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 34 22 47+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 48 22 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 48 22 51+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 52 22 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 52 22 53+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 54 22 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 54 22 55+ , srcInfoPoints = []+ }+ "b")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 57 22 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 57 22 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 57 22 70+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 71 22 74+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RCategory.hs" 22 71 22 74+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 75 22 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 75 22 76+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 77 22 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 22 77 22 78+ , srcInfoPoints = []+ }+ "c")))+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 23 18 23 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 17+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 15+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 10 23 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 10 23 13+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 14 23 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 14 23 15+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 16 23 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 16 23 17+ , srcInfoPoints = []+ }+ "c")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 23 29 23 31 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 21 23 26+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 21 23 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 21 23 24+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 25 23 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 25 23 26+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 27 23 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 27 23 28+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 32 23 39+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 32 23 37+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 32 23 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 32 23 35+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 36 23 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 36 23 37+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 38 23 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 23 38 23 39+ , srcInfoPoints = []+ }+ "c")))))))+ ])+ , RulePragmaDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 25 1 30 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 25 1 25 10+ , SrcSpan "tests/examples/RCategory.hs" 30 2 30 5+ ]+ }+ [ Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 1 27 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 26 1 26 16+ , SrcSpan "tests/examples/RCategory.hs" 26 17 26 23+ , SrcSpan "tests/examples/RCategory.hs" 26 26 26 27+ , SrcSpan "tests/examples/RCategory.hs" 27 24 27 25+ ]+ }+ "identity/left"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25+ , srcInfoPoints = []+ }+ "p")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19+ , srcInfoPoints = []+ }+ "id")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23+ , srcInfoPoints = []+ }+ "p"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27+ , srcInfoPoints = []+ }+ "p")))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 1 29 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 28 1 28 17+ , SrcSpan "tests/examples/RCategory.hs" 28 25 28 31+ , SrcSpan "tests/examples/RCategory.hs" 28 34 28 35+ , SrcSpan "tests/examples/RCategory.hs" 29 24 29 25+ ]+ }+ "identity/right"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33+ , srcInfoPoints = []+ }+ "p")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18+ , srcInfoPoints = []+ }+ "p")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23+ , srcInfoPoints = []+ }+ "id"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27+ , srcInfoPoints = []+ }+ "p")))+ ]+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 1 38 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 32 1 32 9+ , SrcSpan "tests/examples/RCategory.hs" 32 25 32 30+ , SrcSpan "tests/examples/RCategory.hs" 33 3 33 3+ , SrcSpan "tests/examples/RCategory.hs" 34 3 34 3+ , SrcSpan "tests/examples/RCategory.hs" 35 3 35 3+ , SrcSpan "tests/examples/RCategory.hs" 38 1 38 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19+ , srcInfoPoints = []+ }+ "RCategory")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21+ , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23+ , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21+ , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23+ , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21+ , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23+ , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24+ ]+ })))))+ (Just+ [ InsType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 3 33 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 33 3 33 7+ , SrcSpan "tests/examples/RCategory.hs" 33 31 33 32+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 33 8 33 21+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23+ , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25+ , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23+ , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25+ , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 33 22 33 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23+ , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25+ , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26+ ]+ }))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34+ , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34+ , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34+ , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35+ ]+ })))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5+ , srcInfoPoints = []+ }+ "id"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 6 34 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 34 6 34 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+ , srcInfoPoints = []+ }+ "Prelude")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18+ , srcInfoPoints = []+ }+ "id"))))+ Nothing)+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20+ , srcInfoPoints = []+ }+ (PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 35 3 35 4+ , SrcSpan "tests/examples/RCategory.hs" 35 4 35 5+ , SrcSpan "tests/examples/RCategory.hs" 35 5 35 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 4 35 5+ , srcInfoPoints = []+ }+ "."))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 7 35 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 35 7 35 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10+ , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+ , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20+ ]+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10+ , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+ , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+ , srcInfoPoints = []+ }+ "Prelude")+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19+ , srcInfoPoints = []+ }+ "."))))+ Nothing)+ ])+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 39 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 38 7 38 9 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 38 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 38 1 38 2+ , SrcSpan "tests/examples/RCategory.hs" 38 2 38 5+ , SrcSpan "tests/examples/RCategory.hs" 38 5 38 6+ ]+ }+ "<<<"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 39+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 38 10 38 11+ , SrcSpan "tests/examples/RCategory.hs" 38 32 38 33+ , SrcSpan "tests/examples/RCategory.hs" 38 55 38 56+ , SrcSpan "tests/examples/RCategory.hs" 38 78 38 79+ , SrcSpan "tests/examples/RCategory.hs" 38 93 38 94+ , SrcSpan "tests/examples/RCategory.hs" 39 7 39 9+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 11 38 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 11 38 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 11 38 24+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 25 38 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 25 38 28+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 29 38 30+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32+ , srcInfoPoints = []+ }+ "c")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 34 38 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 34 38 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 34 38 47+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 48 38 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 48 38 51+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 52 38 53+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55+ , srcInfoPoints = []+ }+ "b")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 57 38 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 57 38 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 57 38 70+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 71 38 74+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 71 38 74+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 75 38 76+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78+ , srcInfoPoints = []+ }+ "c")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 38 80 38 89+ , srcInfoPoints = []+ }+ "RCategory")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93+ , srcInfoPoints = []+ }+ "cat")))+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 39 18 39 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 17+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 15+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17+ , srcInfoPoints = []+ }+ "c")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 39 29 39 31 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 26+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28+ , srcInfoPoints = []+ }+ "b")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 39+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 37+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39+ , srcInfoPoints = []+ }+ "c"))))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 12+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 40 1 40 2+ , SrcSpan "tests/examples/RCategory.hs" 40 2 40 5+ , SrcSpan "tests/examples/RCategory.hs" 40 5 40 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 2 40 5+ , srcInfoPoints = []+ }+ "<<<"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 7 40 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 40 7 40 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10+ , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11+ , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10+ , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11+ , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 10 40 11+ , srcInfoPoints = []+ }+ "."))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 44 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 43 7 43 9 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 43 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 43 1 43 2+ , SrcSpan "tests/examples/RCategory.hs" 43 2 43 5+ , SrcSpan "tests/examples/RCategory.hs" 43 5 43 6+ ]+ }+ ">>>"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 39+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 43 10 43 11+ , SrcSpan "tests/examples/RCategory.hs" 43 32 43 33+ , SrcSpan "tests/examples/RCategory.hs" 43 55 43 56+ , SrcSpan "tests/examples/RCategory.hs" 43 78 43 79+ , SrcSpan "tests/examples/RCategory.hs" 43 93 43 94+ , SrcSpan "tests/examples/RCategory.hs" 44 7 44 9+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 11 43 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 11 43 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 11 43 24+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 25 43 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 25 43 28+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 29 43 30+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32+ , srcInfoPoints = []+ }+ "c")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 34 43 55+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 34 43 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 34 43 47+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 48 43 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 48 43 51+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 52 43 53+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55+ , srcInfoPoints = []+ }+ "b")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 57 43 78+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 57 43 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 57 43 70+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 71 43 74+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 71 43 74+ , srcInfoPoints = []+ }+ "cat")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 75 43 76+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78+ , srcInfoPoints = []+ }+ "c")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory.hs" 43 80 43 89+ , srcInfoPoints = []+ }+ "RCategory")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93+ , srcInfoPoints = []+ }+ "cat")))+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 44 18 44 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 17+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 15+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 10 44 13+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 14 44 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 14 44 15+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 16 44 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 16 44 17+ , srcInfoPoints = []+ }+ "b")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 44 29 44 31 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 26+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 21 44 24+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 25 44 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 25 44 26+ , srcInfoPoints = []+ }+ "b")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 27 44 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 27 44 28+ , srcInfoPoints = []+ }+ "c")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 39+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 37+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 32 44 35+ , srcInfoPoints = []+ }+ "cat"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 36 44 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 36 44 37+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 38 44 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 44 38 44 39+ , srcInfoPoints = []+ }+ "c"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 16+ , srcInfoPoints = []+ }+ [ InfixMatch+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 1 45 2+ , srcInfoPoints = []+ }+ "f"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 3 45 6+ , srcInfoPoints = []+ }+ ">>>")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 7 45 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 7 45 8+ , srcInfoPoints = []+ }+ "g")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 9 45 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory.hs" 45 9 45 10 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 11 45 12+ , srcInfoPoints = []+ }+ "g")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 13 45 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 13 45 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 13 45 14+ , srcInfoPoints = []+ }+ ".")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 15 45 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 15 45 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 45 15 45 16+ , srcInfoPoints = []+ }+ "f")))))+ Nothing+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/RCategory.hs" 12 1 12 29)+ " | A class for categories."+ , Comment+ False+ (SrcSpan "tests/examples/RCategory.hs" 13 1 13 36)+ " id and (.) must form a monoid."+ , Comment+ False+ (SrcSpan "tests/examples/RCategory.hs" 17 3 17 29)+ " | the identity morphism"+ , Comment+ False+ (SrcSpan "tests/examples/RCategory.hs" 21 3 21 28)+ " | morphism composition"+ , Comment+ False+ (SrcSpan "tests/examples/RCategory.hs" 37 1 37 31)+ " | Right-to-left composition"+ , Comment+ False+ (SrcSpan "tests/examples/RCategory.hs" 42 1 42 31)+ " | Left-to-right composition"+ ]+ )
+ tests/examples/RCategory.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory.hs.prettyprinter.golden view
@@ -0,0 +1,41 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds, MultiParamTypeClasses+ #-}+module Control.RCategory where+import qualified Prelude+import GHC.Prim++infixr 9 .++infixr 1 >>>, <<<++class RCategory cat where+ type RCategoryCtxt cat a b :: Constraint+ + id :: RCategoryCtxt cat a a => cat a a+ + (.) ::+ (RCategoryCtxt cat b c, RCategoryCtxt cat a b,+ RCategoryCtxt cat a c) =>+ cat b c -> cat a b -> cat a c++{-# RULES+"identity/left" forall p . id . p = p+"identity/right" forall p . p . id = p+ #-}++instance RCategory (->) where+ type RCategoryCtxt (->) a a = ()+ id = Prelude.id+ (.) = (Prelude..)++(<<<) ::+ (RCategoryCtxt cat a c, RCategoryCtxt cat a b,+ RCategoryCtxt cat b c, RCategory cat) =>+ cat b c -> cat a b -> cat a c+(<<<) = (.)++(>>>) ::+ (RCategoryCtxt cat a c, RCategoryCtxt cat a b,+ RCategoryCtxt cat b c, RCategory cat) =>+ cat a b -> cat b c -> cat a c+f >>> g = g . f
+ tests/examples/RCategory2.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}++import GHC.Prim++class RCategory cat where+ type RCategoryCtxt cat a b :: Constraint
+ tests/examples/RCategory2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory2.hs.parser.golden view
@@ -0,0 +1,193 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory2.hs" 1 1 1 1+ , SrcSpan "tests/examples/RCategory2.hs" 3 1 3 1+ , SrcSpan "tests/examples/RCategory2.hs" 3 1 3 1+ , SrcSpan "tests/examples/RCategory2.hs" 3 1 3 1+ , SrcSpan "tests/examples/RCategory2.hs" 5 1 5 1+ , SrcSpan "tests/examples/RCategory2.hs" 7 1 7 1+ , SrcSpan "tests/examples/RCategory2.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 1 1 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory2.hs" 1 1 1 13+ , SrcSpan "tests/examples/RCategory2.hs" 1 26 1 27+ , SrcSpan "tests/examples/RCategory2.hs" 1 44 1 47+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 1 28 1 43+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 3 1 3 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory2.hs" 3 1 3 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 3 8 3 16+ , srcInfoPoints = []+ }+ "GHC.Prim"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 1 6 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory2.hs" 5 1 5 6+ , SrcSpan "tests/examples/RCategory2.hs" 5 21 5 26+ , SrcSpan "tests/examples/RCategory2.hs" 6 3 6 3+ , SrcSpan "tests/examples/RCategory2.hs" 7 1 7 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 7 5 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 7 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 7 5 16+ , srcInfoPoints = []+ }+ "RCategory"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ "cat")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 3 6 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory2.hs" 6 3 6 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 29+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 27+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 25+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 8 6 21+ , srcInfoPoints = []+ }+ "RCategoryCtxt"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 22 6 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 22 6 25+ , srcInfoPoints = []+ }+ "cat")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 28 6 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 28 6 29+ , srcInfoPoints = []+ }+ "b")))+ (Just+ (KindSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 30 6 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory2.hs" 6 30 6 32 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 33 6 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 33 6 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 33 6 43+ , srcInfoPoints = []+ }+ "Constraint")))))+ Nothing+ ])+ ]+ , []+ )
+ tests/examples/RCategory2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory2.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}+import GHC.Prim++class RCategory cat where+ type RCategoryCtxt cat a b :: Constraint
+ tests/examples/RCategory3.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}++instance RCategory (->) where+ type RCategoryCtxt (->) a a = ()+
+ tests/examples/RCategory3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory3.hs.parser.golden view
@@ -0,0 +1,222 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 1 1 1 1+ , SrcSpan "tests/examples/RCategory3.hs" 3 1 3 1+ , SrcSpan "tests/examples/RCategory3.hs" 3 1 3 1+ , SrcSpan "tests/examples/RCategory3.hs" 3 1 3 1+ , SrcSpan "tests/examples/RCategory3.hs" 6 1 6 1+ , SrcSpan "tests/examples/RCategory3.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 1 1 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 1 1 1 13+ , SrcSpan "tests/examples/RCategory3.hs" 1 26 1 27+ , SrcSpan "tests/examples/RCategory3.hs" 1 44 1 47+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 1 28 1 43+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ ]+ ]+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 1 6 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 3 1 3 9+ , SrcSpan "tests/examples/RCategory3.hs" 3 25 3 30+ , SrcSpan "tests/examples/RCategory3.hs" 4 3 4 3+ , SrcSpan "tests/examples/RCategory3.hs" 6 1 6 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 24+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 10 3 19+ , srcInfoPoints = []+ }+ "RCategory")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 20 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 3 20 3 21+ , SrcSpan "tests/examples/RCategory3.hs" 3 21 3 23+ , SrcSpan "tests/examples/RCategory3.hs" 3 23 3 24+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 20 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 3 20 3 21+ , SrcSpan "tests/examples/RCategory3.hs" 3 21 3 23+ , SrcSpan "tests/examples/RCategory3.hs" 3 23 3 24+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 3 20 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 3 20 3 21+ , SrcSpan "tests/examples/RCategory3.hs" 3 21 3 23+ , SrcSpan "tests/examples/RCategory3.hs" 3 23 3 24+ ]+ })))))+ (Just+ [ InsType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 3 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 4 3 4 7+ , SrcSpan "tests/examples/RCategory3.hs" 4 31 4 32+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 30+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 28+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 8 4 21+ , srcInfoPoints = []+ }+ "RCategoryCtxt")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 22 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 4 22 4 23+ , SrcSpan "tests/examples/RCategory3.hs" 4 23 4 25+ , SrcSpan "tests/examples/RCategory3.hs" 4 25 4 26+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 22 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 4 22 4 23+ , SrcSpan "tests/examples/RCategory3.hs" 4 23 4 25+ , SrcSpan "tests/examples/RCategory3.hs" 4 25 4 26+ ]+ }+ (FunCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RCategory3.hs" 4 22 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 4 22 4 23+ , SrcSpan "tests/examples/RCategory3.hs" 4 23 4 25+ , SrcSpan "tests/examples/RCategory3.hs" 4 25 4 26+ ]+ }))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 27 4 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 27 4 28+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 29 4 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 29 4 30+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 33 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 4 33 4 34+ , SrcSpan "tests/examples/RCategory3.hs" 4 34 4 35+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 33 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 4 33 4 34+ , SrcSpan "tests/examples/RCategory3.hs" 4 34 4 35+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RCategory3.hs" 4 33 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RCategory3.hs" 4 33 4 34+ , SrcSpan "tests/examples/RCategory3.hs" 4 34 4 35+ ]+ })))+ ])+ ]+ , []+ )
+ tests/examples/RCategory3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RCategory3.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies, ConstraintKinds #-}++instance RCategory (->) where+ type RCategoryCtxt (->) a a = ()
+ tests/examples/ReadP.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE TypeOperators #-}+newtype ReadP a = R (forall b . (a -> P b) -> P b)
+ tests/examples/ReadP.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ReadP.hs.parser.golden view
@@ -0,0 +1,245 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ReadP.hs" 1 1 1 1+ , SrcSpan "tests/examples/ReadP.hs" 2 1 2 1+ , SrcSpan "tests/examples/ReadP.hs" 2 1 2 1+ , SrcSpan "tests/examples/ReadP.hs" 2 1 2 1+ , SrcSpan "tests/examples/ReadP.hs" 3 1 3 1+ , SrcSpan "tests/examples/ReadP.hs" 3 1 3 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ReadP.hs" 1 1 1 13+ , SrcSpan "tests/examples/ReadP.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 1 2 51+ , srcInfoPoints = [ SrcSpan "tests/examples/ReadP.hs" 2 17 2 18 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 1 2 8+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 9 2 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 9 2 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 9 2 14+ , srcInfoPoints = []+ }+ "ReadP"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 19 2 51+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 19 2 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 19 2 20+ , srcInfoPoints = []+ }+ "R")+ [ TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 21 2 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ReadP.hs" 2 21 2 22+ , SrcSpan "tests/examples/ReadP.hs" 2 50 2 51+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 50+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 30+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 22 2 28+ , srcInfoPoints = []+ }+ "forall"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 29 2 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 29 2 30+ , srcInfoPoints = []+ }+ "b")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 31 2 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 31 2 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 31 2 32+ , srcInfoPoints = []+ }+ ".")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 33 2 50+ , srcInfoPoints = [ SrcSpan "tests/examples/ReadP.hs" 2 44 2 46 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 33 2 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ReadP.hs" 2 33 2 34+ , SrcSpan "tests/examples/ReadP.hs" 2 42 2 43+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 34 2 42+ , srcInfoPoints = [ SrcSpan "tests/examples/ReadP.hs" 2 36 2 38 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 34 2 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 34 2 35+ , srcInfoPoints = []+ }+ "a"))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 39 2 42+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 39 2 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ReadP.hs" 2 39 2 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ReadP.hs" 2 39 2 40+ , srcInfoPoints = []+ }+ "P")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 41 2 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ReadP.hs" 2 41 2 42+ , srcInfoPoints = []+ }+ "b")))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 50+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 47 2 48+ , srcInfoPoints = []+ }+ "P")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 49 2 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ReadP.hs" 2 49 2 50+ , srcInfoPoints = []+ }+ "b")))))+ ])+ ]+ []+ ]+ , []+ )
+ tests/examples/ReadP.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ReadP.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeOperators #-}++newtype ReadP a = R (forall b . (a -> P b) -> P b)
+ tests/examples/RealGHC.lhs view
@@ -0,0 +1,913 @@+%+% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998+%+\section[CoreRules]{Transformation rules}++\begin{code}+{-# OPTIONS -w #-}+{-# LANGUAGE PatternGuards #-}+-- The above warning supression flag is a temporary kludge.+-- While working on this module you are encouraged to remove it and fix+-- any warnings in the module. See+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings+-- for details++-- | Functions for collecting together and applying rewrite rules to a module.+-- The 'CoreRule' datatype itself is declared elsewhere.+module Rules (+ -- * RuleBase+ RuleBase,++ -- ** Constructing+ emptyRuleBase, mkRuleBase, extendRuleBaseList,+ unionRuleBase, pprRuleBase,++ -- ** Checking rule applications+ ruleCheckProgram,++ -- ** Manipulating 'SpecInfo' rules+ mkSpecInfo, extendSpecInfo, addSpecInfo,+ addIdSpecialisations,++ -- * Misc. CoreRule helpers+ rulesOfBinds, getRules, pprRulesForUser,++ lookupRule, mkLocalRule, roughTopNames+ ) where++-- #include "HsVersions.h"++import CoreSyn -- All of it+import OccurAnal ( occurAnalyseExpr )+import CoreFVs ( exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars )+import CoreUtils ( tcEqExprX, exprType )+import PprCore ( pprRules )+import Type ( Type, TvSubstEnv )+import Coercion ( coercionKind )+import TcType ( tcSplitTyConApp_maybe )+import CoreTidy ( tidyRules )+import Id+import IdInfo ( SpecInfo( SpecInfo ) )+import Var ( Var )+import VarEnv+import VarSet+import Name ( Name, NamedThing(..) )+import NameEnv+import Unify ( ruleMatchTyX, MatchEnv(..) )+import BasicTypes ( Activation )+import StaticFlags ( opt_PprStyle_Debug )+import Outputable+import FastString+import Maybes+import OrdList+import Bag+import Util+import Data.List+\end{code}+++%************************************************************************+%* *+\subsection[specialisation-IdInfo]{Specialisation info about an @Id@}+%* *+%************************************************************************++A @CoreRule@ holds details of one rule for an @Id@, which+includes its specialisations.++For example, if a rule for @f@ contains the mapping:+\begin{verbatim}+ forall a b d. [Type (List a), Type b, Var d] ===> f' a b+\end{verbatim}+then when we find an application of f to matching types, we simply replace+it by the matching RHS:+\begin{verbatim}+ f (List Int) Bool dict ===> f' Int Bool+\end{verbatim}+All the stuff about how many dictionaries to discard, and what types+to apply the specialised function to, are handled by the fact that the+Rule contains a template for the result of the specialisation.++There is one more exciting case, which is dealt with in exactly the same+way. If the specialised value is unboxed then it is lifted at its+definition site and unlifted at its uses. For example:++ pi :: forall a. Num a => a++might have a specialisation++ [Int#] ===> (case pi' of Lift pi# -> pi#)++where pi' :: Lift Int# is the specialised version of pi.++\begin{code}+mkLocalRule :: RuleName -> Activation+ -> Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule+-- ^ Used to make 'CoreRule' for an 'Id' defined in the module being+-- compiled. See also 'CoreSyn.CoreRule'+mkLocalRule name act fn bndrs args rhs+ = Rule { ru_name = name, ru_fn = fn, ru_act = act,+ ru_bndrs = bndrs, ru_args = args,+ ru_rhs = rhs, ru_rough = roughTopNames args,+ ru_local = True }++--------------+roughTopNames :: [CoreExpr] -> [Maybe Name]+-- ^ Find the \"top\" free names of several expressions.+-- Such names are either:+--+-- 1. The function finally being applied to in an application chain+-- (if that name is a GlobalId: see "Var#globalvslocal"), or+--+-- 2. The 'TyCon' if the expression is a 'Type'+--+-- This is used for the fast-match-check for rules;+-- if the top names don't match, the rest can't+roughTopNames args = map roughTopName args++roughTopName :: CoreExpr -> Maybe Name+roughTopName (Type ty) = case tcSplitTyConApp_maybe ty of+ Just (tc,_) -> Just (getName tc)+ Nothing -> Nothing+roughTopName (App f a) = roughTopName f+roughTopName (Var f) | isGlobalId f = Just (idName f)+ | otherwise = Nothing+roughTopName other = Nothing++ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool+-- ^ @ruleCantMatch tpl actual@ returns True only if @actual@+-- definitely can't match @tpl@ by instantiating @tpl@.+-- It's only a one-way match; unlike instance matching we+-- don't consider unification.+--+-- Notice that [_$_]+-- @ruleCantMatch [Nothing] [Just n2] = False@+-- Reason: a template variable can be instantiated by a constant+-- Also:+-- @ruleCantMatch [Just n1] [Nothing] = False@+-- Reason: a local variable @v@ in the actuals might [_$_]++ruleCantMatch (Just n1 : ts) (Just n2 : as) = n1 /= n2 || ruleCantMatch ts as+ruleCantMatch (t : ts) (a : as) = ruleCantMatch ts as+ruleCantMatch ts as = False+\end{code}++\begin{code}+pprRulesForUser :: [CoreRule] -> SDoc+-- (a) tidy the rules+-- (b) sort them into order based on the rule name+-- (c) suppress uniques (unless -dppr-debug is on)+-- This combination makes the output stable so we can use in testing+-- It's here rather than in PprCore because it calls tidyRules+pprRulesForUser rules+ = withPprStyle defaultUserStyle $+ pprRules $+ sortLe le_rule $+ tidyRules emptyTidyEnv rules+ where+ le_rule r1 r2 = ru_name r1 <= ru_name r2+\end{code}+++%************************************************************************+%* *+ SpecInfo: the rules in an IdInfo+%* *+%************************************************************************++\begin{code}+-- | Make a 'SpecInfo' containing a number of 'CoreRule's, suitable+-- for putting into an 'IdInfo'+mkSpecInfo :: [CoreRule] -> SpecInfo+mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules)++extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo+extendSpecInfo (SpecInfo rs1 fvs1) rs2+ = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1)++addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo+addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2)+ = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2)++addIdSpecialisations :: Id -> [CoreRule] -> Id+addIdSpecialisations id []+ = id+addIdSpecialisations id rules+ = setIdSpecialisation id $+ extendSpecInfo (idSpecialisation id) rules++-- | Gather all the rules for locally bound identifiers from the supplied bindings+rulesOfBinds :: [CoreBind] -> [CoreRule]+rulesOfBinds binds = concatMap (concatMap idCoreRules . bindersOf) binds++getRules :: RuleBase -> Id -> [CoreRule]+ -- The rules for an Id come from two places:+ -- (a) the ones it is born with (idCoreRules fn)+ -- (b) rules added in subsequent modules (extra_rules)+ -- PrimOps, for example, are born with a bunch of rules under (a)+getRules rule_base fn+ | isLocalId fn = idCoreRules fn+ | otherwise = WARN( not (isPrimOpId fn) && notNull (idCoreRules fn),+ ppr fn <+> ppr (idCoreRules fn) )+ idCoreRules fn ++ (lookupNameEnv rule_base (idName fn) `orElse` [])+ -- Only PrimOpIds have rules inside themselves, and perhaps more besides+\end{code}+++%************************************************************************+%* *+ RuleBase+%* *+%************************************************************************++\begin{code}+-- | Gathers a collection of 'CoreRule's. Maps (the name of) an 'Id' to its rules+type RuleBase = NameEnv [CoreRule]+ -- The rules are are unordered;+ -- we sort out any overlaps on lookup++emptyRuleBase = emptyNameEnv++mkRuleBase :: [CoreRule] -> RuleBase+mkRuleBase rules = extendRuleBaseList emptyRuleBase rules++extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase+extendRuleBaseList rule_base new_guys+ = foldl extendRuleBase rule_base new_guys++unionRuleBase :: RuleBase -> RuleBase -> RuleBase+unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2++extendRuleBase :: RuleBase -> CoreRule -> RuleBase+extendRuleBase rule_base rule+ = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule++pprRuleBase :: RuleBase -> SDoc+pprRuleBase rules = vcat [ pprRules (tidyRules emptyTidyEnv rs)+ | rs <- nameEnvElts rules ]+\end{code}+++%************************************************************************+%* *+\subsection{Matching}+%* *+%************************************************************************++Note [Extra args in rule matching]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+If we find a matching rule, we return (Just (rule, rhs)),+but the rule firing has only consumed as many of the input args+as the ruleArity says. It's up to the caller to keep track+of any left-over args. E.g. if you call+ lookupRule ... f [e1, e2, e3]+and it returns Just (r, rhs), where r has ruleArity 2+then the real rewrite is+ f e1 e2 e3 ==> rhs e3++You might think it'd be cleaner for lookupRule to deal with the+leftover arguments, by applying 'rhs' to them, but the main call+in the Simplifier works better as it is. Reason: the 'args' passed+to lookupRule are the result of a lazy substitution++\begin{code}+-- | The main rule matching function. Attempts to apply all (active)+-- supplied rules to this instance of an application in a given+-- context, returning the rule applied and the resulting expression if+-- successful.+lookupRule :: (Activation -> Bool) -> InScopeSet+ -> Id -> [CoreExpr]+ -> [CoreRule] -> Maybe (CoreRule, CoreExpr)++-- See Note [Extra args in rule matching]+-- See comments on matchRule+lookupRule is_active in_scope fn args rules+ = -- pprTrace "matchRules" (ppr fn <+> ppr rules) $+ case go [] rules of+ [] -> Nothing+ (m:ms) -> Just (findBest (fn,args) m ms)+ where+ rough_args = map roughTopName args++ go :: [(CoreRule,CoreExpr)] -> [CoreRule] -> [(CoreRule,CoreExpr)]+ go ms [] = ms+ go ms (r:rs) = case (matchRule is_active in_scope args rough_args r) of+ Just e -> go ((r,e):ms) rs+ Nothing -> -- pprTrace "match failed" (ppr r $$ ppr args $$+ -- ppr [(arg_id, unfoldingTemplate unf) | Var arg_id <- args, let unf = idUnfolding arg_id, isCheapUnfolding unf] )+ go ms rs++findBest :: (Id, [CoreExpr])+ -> (CoreRule,CoreExpr) -> [(CoreRule,CoreExpr)] -> (CoreRule,CoreExpr)+-- All these pairs matched the expression+-- Return the pair the the most specific rule+-- The (fn,args) is just for overlap reporting++findBest target (rule,ans) [] = (rule,ans)+findBest target (rule1,ans1) ((rule2,ans2):prs)+ | rule1 `isMoreSpecific` rule2 = findBest target (rule1,ans1) prs+ | rule2 `isMoreSpecific` rule1 = findBest target (rule2,ans2) prs+ | debugIsOn = let pp_rule rule+ | opt_PprStyle_Debug = ppr rule+ | otherwise = doubleQuotes (ftext (ru_name rule))+ in pprTrace "Rules.findBest: rule overlap (Rule 1 wins)"+ (vcat [if opt_PprStyle_Debug then+ ptext (sLit "Expression to match:") <+> ppr fn <+> sep (map ppr args)+ else empty,+ ptext (sLit "Rule 1:") <+> pp_rule rule1,+ ptext (sLit "Rule 2:") <+> pp_rule rule2]) $+ findBest target (rule1,ans1) prs+ | otherwise = findBest target (rule1,ans1) prs+ where+ (fn,args) = target++isMoreSpecific :: CoreRule -> CoreRule -> Bool+isMoreSpecific (BuiltinRule {}) r2 = True+isMoreSpecific r1 (BuiltinRule {}) = False+isMoreSpecific (Rule { ru_bndrs = bndrs1, ru_args = args1 })+ (Rule { ru_bndrs = bndrs2, ru_args = args2 })+ = isJust (matchN in_scope bndrs2 args2 args1)+ where+ in_scope = mkInScopeSet (mkVarSet bndrs1)+ -- Actually we should probably include the free vars+ -- of rule1's args, but I can't be bothered++noBlackList :: Activation -> Bool+noBlackList act = False -- Nothing is black listed++matchRule :: (Activation -> Bool) -> InScopeSet+ -> [CoreExpr] -> [Maybe Name]+ -> CoreRule -> Maybe CoreExpr++-- If (matchRule rule args) returns Just (name,rhs)+-- then (f args) matches the rule, and the corresponding+-- rewritten RHS is rhs+--+-- The bndrs and rhs is occurrence-analysed+--+-- Example+--+-- The rule+-- forall f g x. map f (map g x) ==> map (f . g) x+-- is stored+-- CoreRule "map/map"+-- [f,g,x] -- tpl_vars+-- [f,map g x] -- tpl_args+-- map (f.g) x) -- rhs+--+-- Then the call: matchRule the_rule [e1,map e2 e3]+-- = Just ("map/map", (\f,g,x -> rhs) e1 e2 e3)+--+-- Any 'surplus' arguments in the input are simply put on the end+-- of the output.++matchRule is_active in_scope args rough_args+ (BuiltinRule { ru_name = name, ru_try = match_fn })+ = case match_fn args of+ Just expr -> Just expr+ Nothing -> Nothing++matchRule is_active in_scope args rough_args+ (Rule { ru_name = rn, ru_act = act, ru_rough = tpl_tops,+ ru_bndrs = tpl_vars, ru_args = tpl_args,+ ru_rhs = rhs })+ | not (is_active act) = Nothing+ | ruleCantMatch tpl_tops rough_args = Nothing+ | otherwise+ = case matchN in_scope tpl_vars tpl_args args of+ Nothing -> Nothing+ Just (binds, tpl_vals) -> Just (mkLets binds $+ rule_fn `mkApps` tpl_vals)+ where+ rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs)+ -- We could do this when putting things into the rulebase, I guess+\end{code}++\begin{code}+-- For a given match template and context, find bindings to wrap around+-- the entire result and what should be substituted for each template variable.+-- Fail if there are two few actual arguments from the target to match the template+matchN :: InScopeSet -- ^ In-scope variables+ -> [Var] -- ^ Match template type variables+ -> [CoreExpr] -- ^ Match template+ -> [CoreExpr] -- ^ Target; can have more elements than the template+ -> Maybe ([CoreBind],+ [CoreExpr])++matchN in_scope tmpl_vars tmpl_es target_es+ = do { (tv_subst, id_subst, binds)+ <- go init_menv emptySubstEnv tmpl_es target_es+ ; return (fromOL binds,+ map (lookup_tmpl tv_subst id_subst) tmpl_vars') }+ where+ (init_rn_env, tmpl_vars') = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars+ -- See Note [Template binders]++ init_menv = ME { me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env }++ go menv subst [] es = Just subst+ go menv subst ts [] = Nothing -- Fail if too few actual args+ go menv subst (t:ts) (e:es) = do { subst1 <- match menv subst t e+ ; go menv subst1 ts es }++ lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr+ lookup_tmpl tv_subst id_subst tmpl_var'+ | isTyVar tmpl_var' = case lookupVarEnv tv_subst tmpl_var' of+ Just ty -> Type ty+ Nothing -> unbound tmpl_var'+ | otherwise = case lookupVarEnv id_subst tmpl_var' of+ Just e -> e+ other -> unbound tmpl_var'++ unbound var = pprPanic "Template variable unbound in rewrite rule"+ (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$ ppr target_es)+\end{code}++Note [Template binders]+~~~~~~~~~~~~~~~~~~~~~~~+Consider the following match:+ Template: forall x. f x+ Target: f (x+1)+This should succeed, because the template variable 'x' has+nothing to do with the 'x' in the target.++On reflection, this case probably does just work, but this might not+ Template: forall x. f (\x.x)+ Target: f (\y.y)+Here we want to clone when we find the \x, but to know that x must be in scope++To achive this, we use rnBndrL to rename the template variables if+necessary; the renamed ones are the tmpl_vars'+++ ---------------------------------------------+ The inner workings of matching+ ---------------------------------------------++\begin{code}+-- These two definitions are not the same as in Subst,+-- but they simple and direct, and purely local to this module+--+-- * The domain of the TvSubstEnv and IdSubstEnv are the template+-- variables passed into the match.+--+-- * The (OrdList CoreBind) in a SubstEnv are the bindings floated out+-- from nested matches; see the Let case of match, below+--+type SubstEnv = (TvSubstEnv, IdSubstEnv, OrdList CoreBind)+type IdSubstEnv = IdEnv CoreExpr++emptySubstEnv :: SubstEnv+emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL)+++-- At one stage I tried to match even if there are more+-- template args than real args.++-- I now think this is probably a bad idea.+-- Should the template (map f xs) match (map g)? I think not.+-- For a start, in general eta expansion wastes work.+-- SLPJ July 99+++match :: MatchEnv+ -> SubstEnv+ -> CoreExpr -- Template+ -> CoreExpr -- Target+ -> Maybe SubstEnv++-- See the notes with Unify.match, which matches types+-- Everything is very similar for terms++-- Interesting examples:+-- Consider matching+-- \x->f against \f->f+-- When we meet the lambdas we must remember to rename f to f' in the+-- second expresion. The RnEnv2 does that.+--+-- Consider matching+-- forall a. \b->b against \a->3+-- We must rename the \a. Otherwise when we meet the lambdas we+-- might substitute [a/b] in the template, and then erroneously+-- succeed in matching what looks like the template variable 'a' against 3.++-- The Var case follows closely what happens in Unify.match+match menv subst (Var v1) e2+ | Just subst <- match_var menv subst v1 e2+ = Just subst++match menv subst e1 (Note n e2)+ = match menv subst e1 e2+ -- Note [Notes in RULE matching]+ -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -- Look through Notes. In particular, we don't want to+ -- be confused by InlineMe notes. Maybe we should be more+ -- careful about profiling notes, but for now I'm just+ -- riding roughshod over them.+ --- See Note [Notes in call patterns] in SpecConstr++-- Here is another important rule: if the term being matched is a+-- variable, we expand it so long as its unfolding is a WHNF+-- (Its occurrence information is not necessarily up to date,+-- so we don't use it.)+match menv subst e1 (Var v2)+ | isCheapUnfolding unfolding+ = match menv subst e1 (unfoldingTemplate unfolding)+ where+ rn_env = me_env menv+ unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2))+ -- Notice that we look up v2 in the in-scope set+ -- See Note [Lookup in-scope]+ -- Remember to apply any renaming first (hence rnOccR)++-- Note [Matching lets]+-- ~~~~~~~~~~~~~~~~~~~~+-- Matching a let-expression. Consider+-- RULE forall x. f (g x) = <rhs>+-- and target expression+-- f (let { w=R } in g E))+-- Then we'd like the rule to match, to generate+-- let { w=R } in (\x. <rhs>) E+-- In effect, we want to float the let-binding outward, to enable+-- the match to happen. This is the WHOLE REASON for accumulating+-- bindings in the SubstEnv+--+-- We can only do this if+-- (a) Widening the scope of w does not capture any variables+-- We use a conservative test: w is not already in scope+-- If not, we clone the binders, and substitute+-- (b) The free variables of R are not bound by the part of the+-- target expression outside the let binding; e.g.+-- f (\v. let w = v+1 in g E)+-- Here we obviously cannot float the let-binding for w.+--+-- You may think rule (a) would never apply, because rule matching is+-- mostly invoked from the simplifier, when we have just run substExpr+-- over the argument, so there will be no shadowing anyway.+-- The fly in the ointment is that the forall'd variables of the+-- RULE itself are considered in scope.+--+-- I though of various cheapo ways to solve this tiresome problem,+-- but ended up doing the straightforward thing, which is to+-- clone the binders if they are in scope. It's tiresome, and+-- potentially inefficient, because of the calls to substExpr,+-- but I don't think it'll happen much in pracice.++{- Cases to think about+ (let x=y+1 in \x. (x,x))+ --> let x=y+1 in (\x1. (x1,x1))+ (\x. let x = y+1 in (x,x))+ --> let x1 = y+1 in (\x. (x1,x1)+ (let x=y+1 in (x,x), let x=y-1 in (x,x))+ --> let x=y+1 in let x1=y-1 in ((x,x),(x1,x1))++Watch out!+ (let x=y+1 in let z=x+1 in (z,z)+ --> matches (p,p) but watch out that the use of+ x on z's rhs is OK!+I'm removing the cloning because that makes the above case+fail, because the inner let looks as if it has locally-bound vars -}++match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2)+ | all freshly_bound bndrs,+ not (any locally_bound bind_fvs)+ = match (menv { me_env = rn_env' })+ (tv_subst, id_subst, binds `snocOL` bind')+ e1 e2'+ where+ rn_env = me_env menv+ bndrs = bindersOf bind+ bind_fvs = varSetElems (bindFreeVars bind)+ locally_bound x = inRnEnvR rn_env x+ freshly_bound x = not (x `rnInScope` rn_env)+ bind' = bind+ e2' = e2+ rn_env' = extendRnInScopeList rn_env bndrs+{-+ (rn_env', bndrs') = mapAccumL rnBndrR rn_env bndrs+ s_prs = [(bndr, Var bndr') | (bndr,bndr') <- zip bndrs bndrs', bndr /= bndr']+ subst = mkSubst (rnInScopeSet rn_env) emptyVarEnv (mkVarEnv s_prs)+ (bind', e2') | null s_prs = (bind, e2)+ | otherwise = (s_bind, substExpr subst e2)+ s_bind = case bind of+ NonRec {} -> NonRec (head bndrs') (head rhss)+ Rec {} -> Rec (bndrs' `zip` map (substExpr subst) rhss)+-}++match menv subst (Lit lit1) (Lit lit2)+ | lit1 == lit2+ = Just subst++match menv subst (App f1 a1) (App f2 a2)+ = do { subst' <- match menv subst f1 f2+ ; match menv subst' a1 a2 }++match menv subst (Lam x1 e1) (Lam x2 e2)+ = match menv' subst e1 e2+ where+ menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }++-- This rule does eta expansion+-- (\x.M) ~ N iff M ~ N x+-- It's important that this is *after* the let rule,+-- so that (\x.M) ~ (let y = e in \y.N)+-- does the let thing, and then gets the lam/lam rule above+match menv subst (Lam x1 e1) e2+ = match menv' subst e1 (App e2 (varToCoreExpr new_x))+ where+ (rn_env', new_x) = rnBndrL (me_env menv) x1+ menv' = menv { me_env = rn_env' }++-- Eta expansion the other way+-- M ~ (\y.N) iff M y ~ N+match menv subst e1 (Lam x2 e2)+ = match menv' subst (App e1 (varToCoreExpr new_x)) e2+ where+ (rn_env', new_x) = rnBndrR (me_env menv) x2+ menv' = menv { me_env = rn_env' }++match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2)+ = do { subst1 <- match_ty menv subst ty1 ty2+ ; subst2 <- match menv subst1 e1 e2+ ; let menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }+ ; match_alts menv' subst2 alts1 alts2 -- Alts are both sorted+ }++match menv subst (Type ty1) (Type ty2)+ = match_ty menv subst ty1 ty2++match menv subst (Cast e1 co1) (Cast e2 co2)+ = do { subst1 <- match_ty menv subst co1 co2+ ; match menv subst1 e1 e2 }++{- REMOVING OLD CODE: I think that the above handling for let is+ better than the stuff here, which looks+ pretty suspicious to me. SLPJ Sept 06+-- This is an interesting rule: we simply ignore lets in the+-- term being matched against! The unfolding inside it is (by assumption)+-- already inside any occurrences of the bound variables, so we'll expand+-- them when we encounter them. This gives a chance of matching+-- forall x,y. f (g (x,y))+-- against+-- f (let v = (a,b) in g v)++match menv subst e1 (Let bind e2)+ = match (menv { me_env = rn_env' }) subst e1 e2+ where+ (rn_env', _bndrs') = mapAccumL rnBndrR (me_env menv) (bindersOf bind)+ -- It's important to do this renaming, so that the bndrs+ -- are brought into the local scope. For example:+ -- Matching+ -- forall f,x,xs. f (x:xs)+ -- against+ -- f (let y = e in (y:[]))+ -- We must not get success with x->y! So we record that y is+ -- locally bound (with rnBndrR), and proceed. The Var case+ -- will fail when trying to bind x->y+-}++-- Everything else fails+match menv subst e1 e2 = -- pprTrace "Failing at" ((text "e1:" <+> ppr e1) $$ (text "e2:" <+> ppr e2)) $+ Nothing++------------------------------------------+match_var :: MatchEnv+ -> SubstEnv+ -> Var -- Template+ -> CoreExpr -- Target+ -> Maybe SubstEnv+match_var menv subst@(tv_subst, id_subst, binds) v1 e2+ | v1' `elemVarSet` me_tmpls menv+ = case lookupVarEnv id_subst v1' of+ Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2))+ -> Nothing -- Occurs check failure+ -- e.g. match forall a. (\x-> a x) against (\y. y y)++ | otherwise -- No renaming to do on e2, because no free var+ -- of e2 is in the rnEnvR of the envt+ -- Note [Matching variable types]+ -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -- However, we must match the *types*; e.g.+ -- forall (c::Char->Int) (x::Char).+ -- f (c x) = "RULE FIRED"+ -- We must only match on args that have the right type+ -- It's actually quite difficult to come up with an example that shows+ -- you need type matching, esp since matching is left-to-right, so type+ -- args get matched first. But it's possible (e.g. simplrun008) and+ -- this is the Right Thing to do+ -> do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1') (exprType e2)+ -- c.f. match_ty below+ ; return (tv_subst', extendVarEnv id_subst v1' e2, binds) }++ Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2+ -> Just subst++ | otherwise+ -> Nothing++ | otherwise -- v1 is not a template variable; check for an exact match with e2+ = case e2 of+ Var v2 | v1' == rnOccR rn_env v2 -> Just subst+ other -> Nothing++ where+ rn_env = me_env menv+ v1' = rnOccL rn_env v1+ -- If the template is+ -- forall x. f x (\x -> x) = ...+ -- Then the x inside the lambda isn't the+ -- template x, so we must rename first!+++------------------------------------------+match_alts :: MatchEnv+ -> SubstEnv+ -> [CoreAlt] -- Template+ -> [CoreAlt] -- Target+ -> Maybe SubstEnv+match_alts menv subst [] []+ = return subst+match_alts menv subst ((c1,vs1,r1):alts1) ((c2,vs2,r2):alts2)+ | c1 == c2+ = do { subst1 <- match menv' subst r1 r2+ ; match_alts menv subst1 alts1 alts2 }+ where+ menv' :: MatchEnv+ menv' = menv { me_env = rnBndrs2 (me_env menv) vs1 vs2 }++match_alts menv subst alts1 alts2+ = Nothing+\end{code}++Matching Core types: use the matcher in TcType.+Notice that we treat newtypes as opaque. For example, suppose+we have a specialised version of a function at a newtype, say+ newtype T = MkT Int+We only want to replace (f T) with f', not (f Int).++\begin{code}+------------------------------------------+match_ty :: MatchEnv+ -> SubstEnv+ -> Type -- Template+ -> Type -- Target+ -> Maybe SubstEnv+match_ty menv (tv_subst, id_subst, binds) ty1 ty2+ = do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2+ ; return (tv_subst', id_subst, binds) }+\end{code}+++Note [Lookup in-scope]+~~~~~~~~~~~~~~~~~~~~~~+Consider this example+ foo :: Int -> Maybe Int -> Int+ foo 0 (Just n) = n+ foo m (Just n) = foo (m-n) (Just n)++SpecConstr sees this fragment:++ case w_smT of wild_Xf [Just A] {+ Data.Maybe.Nothing -> lvl_smf;+ Data.Maybe.Just n_acT [Just S(L)] ->+ case n_acT of wild1_ams [Just A] { GHC.Base.I# y_amr [Just L] ->+ \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf+ }};++and correctly generates the rule++ RULES: "SC:$wfoo1" [0] __forall {y_amr [Just L] :: GHC.Prim.Int#+ sc_snn :: GHC.Prim.Int#}+ \$wfoo_smW sc_snn (Data.Maybe.Just @ GHC.Base.Int (GHC.Base.I# y_amr))+ = \$s\$wfoo_sno y_amr sc_snn ;]++BUT we must ensure that this rule matches in the original function!+Note that the call to \$wfoo is+ \$wfoo_smW (GHC.Prim.-# ds_Xmb y_amr) wild_Xf++During matching we expand wild_Xf to (Just n_acT). But then we must also+expand n_acT to (I# y_amr). And we can only do that if we look up n_acT+in the in-scope set, because in wild_Xf's unfolding it won't have an unfolding+at all.++That is why the 'lookupRnInScope' call in the (Var v2) case of 'match'+is so important.+++%************************************************************************+%* *+\subsection{Checking a program for failing rule applications}+%* *+%************************************************************************++-----------------------------------------------------+ Game plan+-----------------------------------------------------++We want to know what sites have rules that could have fired but didn't.+This pass runs over the tree (without changing it) and reports such.++\begin{code}+-- | Report partial matches for rules beginning with the specified+-- string for the purposes of error reporting+ruleCheckProgram :: (Activation -> Bool) -- ^ Rule activation test+ -> String -- ^ Rule pattern+ -> RuleBase -- ^ Database of rules+ -> [CoreBind] -- ^ Bindings to check in+ -> SDoc -- ^ Resulting check message+ruleCheckProgram is_active rule_pat rule_base binds+ | isEmptyBag results+ = text "Rule check results: no rule application sites"+ | otherwise+ = vcat [text "Rule check results:",+ line,+ vcat [ p $$ line | p <- bagToList results ]+ ]+ where+ results = unionManyBags (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base)) binds)+ line = text (replicate 20 '-')++data RuleCheckEnv = RuleCheckEnv {+ rc_is_active :: Activation -> Bool,+ rc_pattern :: String,+ rc_rule_base :: RuleBase+}++ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc+ -- The Bag returned has one SDoc for each call site found+ruleCheckBind env (NonRec b r) = ruleCheck env r+ruleCheckBind env (Rec prs) = unionManyBags [ruleCheck env r | (b,r) <- prs]++ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc+ruleCheck env (Var v) = emptyBag+ruleCheck env (Lit l) = emptyBag+ruleCheck env (Type ty) = emptyBag+ruleCheck env (App f a) = ruleCheckApp env (App f a) []+ruleCheck env (Note n e) = ruleCheck env e+ruleCheck env (Cast e co) = ruleCheck env e+ruleCheck env (Let bd e) = ruleCheckBind env bd `unionBags` ruleCheck env e+ruleCheck env (Lam b e) = ruleCheck env e+ruleCheck env (Case e _ _ as) = ruleCheck env e `unionBags`+ unionManyBags [ruleCheck env r | (_,_,r) <- as]++ruleCheckApp env (App f a) as = ruleCheck env a `unionBags` ruleCheckApp env f (a:as)+ruleCheckApp env (Var f) as = ruleCheckFun env f as+ruleCheckApp env other as = ruleCheck env other+\end{code}++\begin{code}+ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc+-- Produce a report for all rules matching the predicate+-- saying why it doesn't match the specified application++ruleCheckFun env fn args+ | null name_match_rules = emptyBag+ | otherwise = unitBag (ruleAppCheck_help (rc_is_active env) fn args name_match_rules)+ where+ name_match_rules = filter match (getRules (rc_rule_base env) fn)+ match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule)++ruleAppCheck_help :: (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc+ruleAppCheck_help is_active fn args rules+ = -- The rules match the pattern, so we want to print something+ vcat [text "Expression:" <+> ppr (mkApps (Var fn) args),+ vcat (map check_rule rules)]+ where+ n_args = length args+ i_args = args `zip` [1::Int ..]+ rough_args = map roughTopName args++ check_rule rule = rule_herald rule <> colon <+> rule_info rule++ rule_herald (BuiltinRule { ru_name = name })+ = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name)+ rule_herald (Rule { ru_name = name })+ = ptext (sLit "Rule") <+> doubleQuotes (ftext name)++ rule_info rule+ | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args rule+ = text "matches (which is very peculiar!)"++ rule_info (BuiltinRule {}) = text "does not match"++ rule_info (Rule { ru_name = name, ru_act = act,+ ru_bndrs = rule_bndrs, ru_args = rule_args})+ | not (is_active act) = text "active only in later phase"+ | n_args < n_rule_args = text "too few arguments"+ | n_mismatches == n_rule_args = text "no arguments match"+ | n_mismatches == 0 = text "all arguments match (considered individually), but rule as a whole does not"+ | otherwise = text "arguments" <+> ppr mismatches <+> text "do not match (1-indexing)"+ where+ n_rule_args = length rule_args+ n_mismatches = length mismatches+ mismatches = [i | (rule_arg, (arg,i)) <- rule_args `zip` i_args,+ not (isJust (match_fn rule_arg arg))]++ lhs_fvs = exprsFreeVars rule_args -- Includes template tyvars+ match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg+ where+ in_scope = lhs_fvs `unionVarSet` exprFreeVars arg+ menv = ME { me_env = mkRnEnv2 (mkInScopeSet in_scope)+ , me_tmpls = mkVarSet rule_bndrs }+\end{code}+
+ tests/examples/RealGHC.lhs.exactprinter.golden view
@@ -0,0 +1,915 @@+++++++{-# OPTIONS -w #-}+{-# LANGUAGE PatternGuards #-}+-- The above warning supression flag is a temporary kludge.+-- While working on this module you are encouraged to remove it and fix+-- any warnings in the module. See+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings+-- for details++-- | Functions for collecting together and applying rewrite rules to a module.+-- The 'CoreRule' datatype itself is declared elsewhere.+module Rules (+ -- * RuleBase+ RuleBase,++ -- ** Constructing+ emptyRuleBase, mkRuleBase, extendRuleBaseList,+ unionRuleBase, pprRuleBase,++ -- ** Checking rule applications+ ruleCheckProgram,++ -- ** Manipulating 'SpecInfo' rules+ mkSpecInfo, extendSpecInfo, addSpecInfo,+ addIdSpecialisations,++ -- * Misc. CoreRule helpers+ rulesOfBinds, getRules, pprRulesForUser,++ lookupRule, mkLocalRule, roughTopNames+ ) where++-- #include "HsVersions.h"++import CoreSyn -- All of it+import OccurAnal ( occurAnalyseExpr )+import CoreFVs ( exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars )+import CoreUtils ( tcEqExprX, exprType )+import PprCore ( pprRules )+import Type ( Type, TvSubstEnv )+import Coercion ( coercionKind )+import TcType ( tcSplitTyConApp_maybe )+import CoreTidy ( tidyRules )+import Id+import IdInfo ( SpecInfo( SpecInfo ) )+import Var ( Var )+import VarEnv+import VarSet+import Name ( Name, NamedThing(..) )+import NameEnv+import Unify ( ruleMatchTyX, MatchEnv(..) )+import BasicTypes ( Activation )+import StaticFlags ( opt_PprStyle_Debug )+import Outputable+import FastString+import Maybes+import OrdList+import Bag+import Util+import Data.List+++++++++++++++++++++++++++++++++++++++mkLocalRule :: RuleName -> Activation+ -> Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule+-- ^ Used to make 'CoreRule' for an 'Id' defined in the module being+-- compiled. See also 'CoreSyn.CoreRule'+mkLocalRule name act fn bndrs args rhs+ = Rule { ru_name = name, ru_fn = fn, ru_act = act,+ ru_bndrs = bndrs, ru_args = args,+ ru_rhs = rhs, ru_rough = roughTopNames args,+ ru_local = True }++--------------+roughTopNames :: [CoreExpr] -> [Maybe Name]+-- ^ Find the \"top\" free names of several expressions.+-- Such names are either:+--+-- 1. The function finally being applied to in an application chain+-- (if that name is a GlobalId: see "Var#globalvslocal"), or+--+-- 2. The 'TyCon' if the expression is a 'Type'+--+-- This is used for the fast-match-check for rules;+-- if the top names don't match, the rest can't+roughTopNames args = map roughTopName args++roughTopName :: CoreExpr -> Maybe Name+roughTopName (Type ty) = case tcSplitTyConApp_maybe ty of+ Just (tc,_) -> Just (getName tc)+ Nothing -> Nothing+roughTopName (App f a) = roughTopName f+roughTopName (Var f) | isGlobalId f = Just (idName f)+ | otherwise = Nothing+roughTopName other = Nothing++ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool+-- ^ @ruleCantMatch tpl actual@ returns True only if @actual@+-- definitely can't match @tpl@ by instantiating @tpl@.+-- It's only a one-way match; unlike instance matching we+-- don't consider unification.+--+-- Notice that [_$_]+-- @ruleCantMatch [Nothing] [Just n2] = False@+-- Reason: a template variable can be instantiated by a constant+-- Also:+-- @ruleCantMatch [Just n1] [Nothing] = False@+-- Reason: a local variable @v@ in the actuals might [_$_]++ruleCantMatch (Just n1 : ts) (Just n2 : as) = n1 /= n2 || ruleCantMatch ts as+ruleCantMatch (t : ts) (a : as) = ruleCantMatch ts as+ruleCantMatch ts as = False++++pprRulesForUser :: [CoreRule] -> SDoc+-- (a) tidy the rules+-- (b) sort them into order based on the rule name+-- (c) suppress uniques (unless -dppr-debug is on)+-- This combination makes the output stable so we can use in testing+-- It's here rather than in PprCore because it calls tidyRules+pprRulesForUser rules+ = withPprStyle defaultUserStyle $+ pprRules $+ sortLe le_rule $+ tidyRules emptyTidyEnv rules+ where+ le_rule r1 r2 = ru_name r1 <= ru_name r2+++++++++++-- | Make a 'SpecInfo' containing a number of 'CoreRule's, suitable+-- for putting into an 'IdInfo'+mkSpecInfo :: [CoreRule] -> SpecInfo+mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules)++extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo+extendSpecInfo (SpecInfo rs1 fvs1) rs2+ = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1)++addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo+addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2)+ = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2)++addIdSpecialisations :: Id -> [CoreRule] -> Id+addIdSpecialisations id []+ = id+addIdSpecialisations id rules+ = setIdSpecialisation id $+ extendSpecInfo (idSpecialisation id) rules++-- | Gather all the rules for locally bound identifiers from the supplied bindings+rulesOfBinds :: [CoreBind] -> [CoreRule]+rulesOfBinds binds = concatMap (concatMap idCoreRules . bindersOf) binds++getRules :: RuleBase -> Id -> [CoreRule]+ -- The rules for an Id come from two places:+ -- (a) the ones it is born with (idCoreRules fn)+ -- (b) rules added in subsequent modules (extra_rules)+ -- PrimOps, for example, are born with a bunch of rules under (a)+getRules rule_base fn+ | isLocalId fn = idCoreRules fn+ | otherwise = WARN( not (isPrimOpId fn) && notNull (idCoreRules fn),+ ppr fn <+> ppr (idCoreRules fn) )+ idCoreRules fn ++ (lookupNameEnv rule_base (idName fn) `orElse` [])+ -- Only PrimOpIds have rules inside themselves, and perhaps more besides+++++++++++-- | Gathers a collection of 'CoreRule's. Maps (the name of) an 'Id' to its rules+type RuleBase = NameEnv [CoreRule]+ -- The rules are are unordered;+ -- we sort out any overlaps on lookup++emptyRuleBase = emptyNameEnv++mkRuleBase :: [CoreRule] -> RuleBase+mkRuleBase rules = extendRuleBaseList emptyRuleBase rules++extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase+extendRuleBaseList rule_base new_guys+ = foldl extendRuleBase rule_base new_guys++unionRuleBase :: RuleBase -> RuleBase -> RuleBase+unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2++extendRuleBase :: RuleBase -> CoreRule -> RuleBase+extendRuleBase rule_base rule+ = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule++pprRuleBase :: RuleBase -> SDoc+pprRuleBase rules = vcat [ pprRules (tidyRules emptyTidyEnv rs)+ | rs <- nameEnvElts rules ]+++++++++++++++++++++++++++-- | The main rule matching function. Attempts to apply all (active)+-- supplied rules to this instance of an application in a given+-- context, returning the rule applied and the resulting expression if+-- successful.+lookupRule :: (Activation -> Bool) -> InScopeSet+ -> Id -> [CoreExpr]+ -> [CoreRule] -> Maybe (CoreRule, CoreExpr)++-- See Note [Extra args in rule matching]+-- See comments on matchRule+lookupRule is_active in_scope fn args rules+ = -- pprTrace "matchRules" (ppr fn <+> ppr rules) $+ case go [] rules of+ [] -> Nothing+ (m:ms) -> Just (findBest (fn,args) m ms)+ where+ rough_args = map roughTopName args++ go :: [(CoreRule,CoreExpr)] -> [CoreRule] -> [(CoreRule,CoreExpr)]+ go ms [] = ms+ go ms (r:rs) = case (matchRule is_active in_scope args rough_args r) of+ Just e -> go ((r,e):ms) rs+ Nothing -> -- pprTrace "match failed" (ppr r $$ ppr args $$+ -- ppr [(arg_id, unfoldingTemplate unf) | Var arg_id <- args, let unf = idUnfolding arg_id, isCheapUnfolding unf] )+ go ms rs++findBest :: (Id, [CoreExpr])+ -> (CoreRule,CoreExpr) -> [(CoreRule,CoreExpr)] -> (CoreRule,CoreExpr)+-- All these pairs matched the expression+-- Return the pair the the most specific rule+-- The (fn,args) is just for overlap reporting++findBest target (rule,ans) [] = (rule,ans)+findBest target (rule1,ans1) ((rule2,ans2):prs)+ | rule1 `isMoreSpecific` rule2 = findBest target (rule1,ans1) prs+ | rule2 `isMoreSpecific` rule1 = findBest target (rule2,ans2) prs+ | debugIsOn = let pp_rule rule+ | opt_PprStyle_Debug = ppr rule+ | otherwise = doubleQuotes (ftext (ru_name rule))+ in pprTrace "Rules.findBest: rule overlap (Rule 1 wins)"+ (vcat [if opt_PprStyle_Debug then+ ptext (sLit "Expression to match:") <+> ppr fn <+> sep (map ppr args)+ else empty,+ ptext (sLit "Rule 1:") <+> pp_rule rule1,+ ptext (sLit "Rule 2:") <+> pp_rule rule2]) $+ findBest target (rule1,ans1) prs+ | otherwise = findBest target (rule1,ans1) prs+ where+ (fn,args) = target++isMoreSpecific :: CoreRule -> CoreRule -> Bool+isMoreSpecific (BuiltinRule {}) r2 = True+isMoreSpecific r1 (BuiltinRule {}) = False+isMoreSpecific (Rule { ru_bndrs = bndrs1, ru_args = args1 })+ (Rule { ru_bndrs = bndrs2, ru_args = args2 })+ = isJust (matchN in_scope bndrs2 args2 args1)+ where+ in_scope = mkInScopeSet (mkVarSet bndrs1)+ -- Actually we should probably include the free vars+ -- of rule1's args, but I can't be bothered++noBlackList :: Activation -> Bool+noBlackList act = False -- Nothing is black listed++matchRule :: (Activation -> Bool) -> InScopeSet+ -> [CoreExpr] -> [Maybe Name]+ -> CoreRule -> Maybe CoreExpr++-- If (matchRule rule args) returns Just (name,rhs)+-- then (f args) matches the rule, and the corresponding+-- rewritten RHS is rhs+--+-- The bndrs and rhs is occurrence-analysed+--+-- Example+--+-- The rule+-- forall f g x. map f (map g x) ==> map (f . g) x+-- is stored+-- CoreRule "map/map"+-- [f,g,x] -- tpl_vars+-- [f,map g x] -- tpl_args+-- map (f.g) x) -- rhs+--+-- Then the call: matchRule the_rule [e1,map e2 e3]+-- = Just ("map/map", (\f,g,x -> rhs) e1 e2 e3)+--+-- Any 'surplus' arguments in the input are simply put on the end+-- of the output.++matchRule is_active in_scope args rough_args+ (BuiltinRule { ru_name = name, ru_try = match_fn })+ = case match_fn args of+ Just expr -> Just expr+ Nothing -> Nothing++matchRule is_active in_scope args rough_args+ (Rule { ru_name = rn, ru_act = act, ru_rough = tpl_tops,+ ru_bndrs = tpl_vars, ru_args = tpl_args,+ ru_rhs = rhs })+ | not (is_active act) = Nothing+ | ruleCantMatch tpl_tops rough_args = Nothing+ | otherwise+ = case matchN in_scope tpl_vars tpl_args args of+ Nothing -> Nothing+ Just (binds, tpl_vals) -> Just (mkLets binds $+ rule_fn `mkApps` tpl_vals)+ where+ rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs)+ -- We could do this when putting things into the rulebase, I guess++++-- For a given match template and context, find bindings to wrap around+-- the entire result and what should be substituted for each template variable.+-- Fail if there are two few actual arguments from the target to match the template+matchN :: InScopeSet -- ^ In-scope variables+ -> [Var] -- ^ Match template type variables+ -> [CoreExpr] -- ^ Match template+ -> [CoreExpr] -- ^ Target; can have more elements than the template+ -> Maybe ([CoreBind],+ [CoreExpr])++matchN in_scope tmpl_vars tmpl_es target_es+ = do { (tv_subst, id_subst, binds)+ <- go init_menv emptySubstEnv tmpl_es target_es+ ; return (fromOL binds,+ map (lookup_tmpl tv_subst id_subst) tmpl_vars') }+ where+ (init_rn_env, tmpl_vars') = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars+ -- See Note [Template binders]++ init_menv = ME { me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env }++ go menv subst [] es = Just subst+ go menv subst ts [] = Nothing -- Fail if too few actual args+ go menv subst (t:ts) (e:es) = do { subst1 <- match menv subst t e+ ; go menv subst1 ts es }++ lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr+ lookup_tmpl tv_subst id_subst tmpl_var'+ | isTyVar tmpl_var' = case lookupVarEnv tv_subst tmpl_var' of+ Just ty -> Type ty+ Nothing -> unbound tmpl_var'+ | otherwise = case lookupVarEnv id_subst tmpl_var' of+ Just e -> e+ other -> unbound tmpl_var'++ unbound var = pprPanic "Template variable unbound in rewrite rule"+ (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$ ppr target_es)+++++++++++++++++++++++++-- These two definitions are not the same as in Subst,+-- but they simple and direct, and purely local to this module+--+-- * The domain of the TvSubstEnv and IdSubstEnv are the template+-- variables passed into the match.+--+-- * The (OrdList CoreBind) in a SubstEnv are the bindings floated out+-- from nested matches; see the Let case of match, below+--+type SubstEnv = (TvSubstEnv, IdSubstEnv, OrdList CoreBind)+type IdSubstEnv = IdEnv CoreExpr++emptySubstEnv :: SubstEnv+emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL)+++-- At one stage I tried to match even if there are more+-- template args than real args.++-- I now think this is probably a bad idea.+-- Should the template (map f xs) match (map g)? I think not.+-- For a start, in general eta expansion wastes work.+-- SLPJ July 99+++match :: MatchEnv+ -> SubstEnv+ -> CoreExpr -- Template+ -> CoreExpr -- Target+ -> Maybe SubstEnv++-- See the notes with Unify.match, which matches types+-- Everything is very similar for terms++-- Interesting examples:+-- Consider matching+-- \x->f against \f->f+-- When we meet the lambdas we must remember to rename f to f' in the+-- second expresion. The RnEnv2 does that.+--+-- Consider matching+-- forall a. \b->b against \a->3+-- We must rename the \a. Otherwise when we meet the lambdas we+-- might substitute [a/b] in the template, and then erroneously+-- succeed in matching what looks like the template variable 'a' against 3.++-- The Var case follows closely what happens in Unify.match+match menv subst (Var v1) e2+ | Just subst <- match_var menv subst v1 e2+ = Just subst++match menv subst e1 (Note n e2)+ = match menv subst e1 e2+ -- Note [Notes in RULE matching]+ -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -- Look through Notes. In particular, we don't want to+ -- be confused by InlineMe notes. Maybe we should be more+ -- careful about profiling notes, but for now I'm just+ -- riding roughshod over them.+ --- See Note [Notes in call patterns] in SpecConstr++-- Here is another important rule: if the term being matched is a+-- variable, we expand it so long as its unfolding is a WHNF+-- (Its occurrence information is not necessarily up to date,+-- so we don't use it.)+match menv subst e1 (Var v2)+ | isCheapUnfolding unfolding+ = match menv subst e1 (unfoldingTemplate unfolding)+ where+ rn_env = me_env menv+ unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2))+ -- Notice that we look up v2 in the in-scope set+ -- See Note [Lookup in-scope]+ -- Remember to apply any renaming first (hence rnOccR)++-- Note [Matching lets]+-- ~~~~~~~~~~~~~~~~~~~~+-- Matching a let-expression. Consider+-- RULE forall x. f (g x) = <rhs>+-- and target expression+-- f (let { w=R } in g E))+-- Then we'd like the rule to match, to generate+-- let { w=R } in (\x. <rhs>) E+-- In effect, we want to float the let-binding outward, to enable+-- the match to happen. This is the WHOLE REASON for accumulating+-- bindings in the SubstEnv+--+-- We can only do this if+-- (a) Widening the scope of w does not capture any variables+-- We use a conservative test: w is not already in scope+-- If not, we clone the binders, and substitute+-- (b) The free variables of R are not bound by the part of the+-- target expression outside the let binding; e.g.+-- f (\v. let w = v+1 in g E)+-- Here we obviously cannot float the let-binding for w.+--+-- You may think rule (a) would never apply, because rule matching is+-- mostly invoked from the simplifier, when we have just run substExpr+-- over the argument, so there will be no shadowing anyway.+-- The fly in the ointment is that the forall'd variables of the+-- RULE itself are considered in scope.+--+-- I though of various cheapo ways to solve this tiresome problem,+-- but ended up doing the straightforward thing, which is to+-- clone the binders if they are in scope. It's tiresome, and+-- potentially inefficient, because of the calls to substExpr,+-- but I don't think it'll happen much in pracice.++{- Cases to think about+ (let x=y+1 in \x. (x,x))+ --> let x=y+1 in (\x1. (x1,x1))+ (\x. let x = y+1 in (x,x))+ --> let x1 = y+1 in (\x. (x1,x1)+ (let x=y+1 in (x,x), let x=y-1 in (x,x))+ --> let x=y+1 in let x1=y-1 in ((x,x),(x1,x1))++Watch out!+ (let x=y+1 in let z=x+1 in (z,z)+ --> matches (p,p) but watch out that the use of+ x on z's rhs is OK!+I'm removing the cloning because that makes the above case+fail, because the inner let looks as if it has locally-bound vars -}++match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2)+ | all freshly_bound bndrs,+ not (any locally_bound bind_fvs)+ = match (menv { me_env = rn_env' })+ (tv_subst, id_subst, binds `snocOL` bind')+ e1 e2'+ where+ rn_env = me_env menv+ bndrs = bindersOf bind+ bind_fvs = varSetElems (bindFreeVars bind)+ locally_bound x = inRnEnvR rn_env x+ freshly_bound x = not (x `rnInScope` rn_env)+ bind' = bind+ e2' = e2+ rn_env' = extendRnInScopeList rn_env bndrs+{-+ (rn_env', bndrs') = mapAccumL rnBndrR rn_env bndrs+ s_prs = [(bndr, Var bndr') | (bndr,bndr') <- zip bndrs bndrs', bndr /= bndr']+ subst = mkSubst (rnInScopeSet rn_env) emptyVarEnv (mkVarEnv s_prs)+ (bind', e2') | null s_prs = (bind, e2)+ | otherwise = (s_bind, substExpr subst e2)+ s_bind = case bind of+ NonRec {} -> NonRec (head bndrs') (head rhss)+ Rec {} -> Rec (bndrs' `zip` map (substExpr subst) rhss)+-}++match menv subst (Lit lit1) (Lit lit2)+ | lit1 == lit2+ = Just subst++match menv subst (App f1 a1) (App f2 a2)+ = do { subst' <- match menv subst f1 f2+ ; match menv subst' a1 a2 }++match menv subst (Lam x1 e1) (Lam x2 e2)+ = match menv' subst e1 e2+ where+ menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }++-- This rule does eta expansion+-- (\x.M) ~ N iff M ~ N x+-- It's important that this is *after* the let rule,+-- so that (\x.M) ~ (let y = e in \y.N)+-- does the let thing, and then gets the lam/lam rule above+match menv subst (Lam x1 e1) e2+ = match menv' subst e1 (App e2 (varToCoreExpr new_x))+ where+ (rn_env', new_x) = rnBndrL (me_env menv) x1+ menv' = menv { me_env = rn_env' }++-- Eta expansion the other way+-- M ~ (\y.N) iff M y ~ N+match menv subst e1 (Lam x2 e2)+ = match menv' subst (App e1 (varToCoreExpr new_x)) e2+ where+ (rn_env', new_x) = rnBndrR (me_env menv) x2+ menv' = menv { me_env = rn_env' }++match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2)+ = do { subst1 <- match_ty menv subst ty1 ty2+ ; subst2 <- match menv subst1 e1 e2+ ; let menv' = menv { me_env = rnBndr2 (me_env menv) x1 x2 }+ ; match_alts menv' subst2 alts1 alts2 -- Alts are both sorted+ }++match menv subst (Type ty1) (Type ty2)+ = match_ty menv subst ty1 ty2++match menv subst (Cast e1 co1) (Cast e2 co2)+ = do { subst1 <- match_ty menv subst co1 co2+ ; match menv subst1 e1 e2 }++{- REMOVING OLD CODE: I think that the above handling for let is+ better than the stuff here, which looks+ pretty suspicious to me. SLPJ Sept 06+-- This is an interesting rule: we simply ignore lets in the+-- term being matched against! The unfolding inside it is (by assumption)+-- already inside any occurrences of the bound variables, so we'll expand+-- them when we encounter them. This gives a chance of matching+-- forall x,y. f (g (x,y))+-- against+-- f (let v = (a,b) in g v)++match menv subst e1 (Let bind e2)+ = match (menv { me_env = rn_env' }) subst e1 e2+ where+ (rn_env', _bndrs') = mapAccumL rnBndrR (me_env menv) (bindersOf bind)+ -- It's important to do this renaming, so that the bndrs+ -- are brought into the local scope. For example:+ -- Matching+ -- forall f,x,xs. f (x:xs)+ -- against+ -- f (let y = e in (y:[]))+ -- We must not get success with x->y! So we record that y is+ -- locally bound (with rnBndrR), and proceed. The Var case+ -- will fail when trying to bind x->y+-}++-- Everything else fails+match menv subst e1 e2 = -- pprTrace "Failing at" ((text "e1:" <+> ppr e1) $$ (text "e2:" <+> ppr e2)) $+ Nothing++------------------------------------------+match_var :: MatchEnv+ -> SubstEnv+ -> Var -- Template+ -> CoreExpr -- Target+ -> Maybe SubstEnv+match_var menv subst@(tv_subst, id_subst, binds) v1 e2+ | v1' `elemVarSet` me_tmpls menv+ = case lookupVarEnv id_subst v1' of+ Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2))+ -> Nothing -- Occurs check failure+ -- e.g. match forall a. (\x-> a x) against (\y. y y)++ | otherwise -- No renaming to do on e2, because no free var+ -- of e2 is in the rnEnvR of the envt+ -- Note [Matching variable types]+ -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -- However, we must match the *types*; e.g.+ -- forall (c::Char->Int) (x::Char).+ -- f (c x) = "RULE FIRED"+ -- We must only match on args that have the right type+ -- It's actually quite difficult to come up with an example that shows+ -- you need type matching, esp since matching is left-to-right, so type+ -- args get matched first. But it's possible (e.g. simplrun008) and+ -- this is the Right Thing to do+ -> do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1') (exprType e2)+ -- c.f. match_ty below+ ; return (tv_subst', extendVarEnv id_subst v1' e2, binds) }++ Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2+ -> Just subst++ | otherwise+ -> Nothing++ | otherwise -- v1 is not a template variable; check for an exact match with e2+ = case e2 of+ Var v2 | v1' == rnOccR rn_env v2 -> Just subst+ other -> Nothing++ where+ rn_env = me_env menv+ v1' = rnOccL rn_env v1+ -- If the template is+ -- forall x. f x (\x -> x) = ...+ -- Then the x inside the lambda isn't the+ -- template x, so we must rename first!+++------------------------------------------+match_alts :: MatchEnv+ -> SubstEnv+ -> [CoreAlt] -- Template+ -> [CoreAlt] -- Target+ -> Maybe SubstEnv+match_alts menv subst [] []+ = return subst+match_alts menv subst ((c1,vs1,r1):alts1) ((c2,vs2,r2):alts2)+ | c1 == c2+ = do { subst1 <- match menv' subst r1 r2+ ; match_alts menv subst1 alts1 alts2 }+ where+ menv' :: MatchEnv+ menv' = menv { me_env = rnBndrs2 (me_env menv) vs1 vs2 }++match_alts menv subst alts1 alts2+ = Nothing++++++++++------------------------------------------+match_ty :: MatchEnv+ -> SubstEnv+ -> Type -- Template+ -> Type -- Target+ -> Maybe SubstEnv+match_ty menv (tv_subst, id_subst, binds) ty1 ty2+ = do { tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2+ ; return (tv_subst', id_subst, binds) }++++++++++++++++++++++++++++++++++++++++++++++++++++++-- | Report partial matches for rules beginning with the specified+-- string for the purposes of error reporting+ruleCheckProgram :: (Activation -> Bool) -- ^ Rule activation test+ -> String -- ^ Rule pattern+ -> RuleBase -- ^ Database of rules+ -> [CoreBind] -- ^ Bindings to check in+ -> SDoc -- ^ Resulting check message+ruleCheckProgram is_active rule_pat rule_base binds+ | isEmptyBag results+ = text "Rule check results: no rule application sites"+ | otherwise+ = vcat [text "Rule check results:",+ line,+ vcat [ p $$ line | p <- bagToList results ]+ ]+ where+ results = unionManyBags (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base)) binds)+ line = text (replicate 20 '-')++data RuleCheckEnv = RuleCheckEnv {+ rc_is_active :: Activation -> Bool,+ rc_pattern :: String,+ rc_rule_base :: RuleBase+}++ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc+ -- The Bag returned has one SDoc for each call site found+ruleCheckBind env (NonRec b r) = ruleCheck env r+ruleCheckBind env (Rec prs) = unionManyBags [ruleCheck env r | (b,r) <- prs]++ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc+ruleCheck env (Var v) = emptyBag+ruleCheck env (Lit l) = emptyBag+ruleCheck env (Type ty) = emptyBag+ruleCheck env (App f a) = ruleCheckApp env (App f a) []+ruleCheck env (Note n e) = ruleCheck env e+ruleCheck env (Cast e co) = ruleCheck env e+ruleCheck env (Let bd e) = ruleCheckBind env bd `unionBags` ruleCheck env e+ruleCheck env (Lam b e) = ruleCheck env e+ruleCheck env (Case e _ _ as) = ruleCheck env e `unionBags`+ unionManyBags [ruleCheck env r | (_,_,r) <- as]++ruleCheckApp env (App f a) as = ruleCheck env a `unionBags` ruleCheckApp env f (a:as)+ruleCheckApp env (Var f) as = ruleCheckFun env f as+ruleCheckApp env other as = ruleCheck env other++++ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc+-- Produce a report for all rules matching the predicate+-- saying why it doesn't match the specified application++ruleCheckFun env fn args+ | null name_match_rules = emptyBag+ | otherwise = unitBag (ruleAppCheck_help (rc_is_active env) fn args name_match_rules)+ where+ name_match_rules = filter match (getRules (rc_rule_base env) fn)+ match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule)++ruleAppCheck_help :: (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc+ruleAppCheck_help is_active fn args rules+ = -- The rules match the pattern, so we want to print something+ vcat [text "Expression:" <+> ppr (mkApps (Var fn) args),+ vcat (map check_rule rules)]+ where+ n_args = length args+ i_args = args `zip` [1::Int ..]+ rough_args = map roughTopName args++ check_rule rule = rule_herald rule <> colon <+> rule_info rule++ rule_herald (BuiltinRule { ru_name = name })+ = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name)+ rule_herald (Rule { ru_name = name })+ = ptext (sLit "Rule") <+> doubleQuotes (ftext name)++ rule_info rule+ | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args rule+ = text "matches (which is very peculiar!)"++ rule_info (BuiltinRule {}) = text "does not match"++ rule_info (Rule { ru_name = name, ru_act = act,+ ru_bndrs = rule_bndrs, ru_args = rule_args})+ | not (is_active act) = text "active only in later phase"+ | n_args < n_rule_args = text "too few arguments"+ | n_mismatches == n_rule_args = text "no arguments match"+ | n_mismatches == 0 = text "all arguments match (considered individually), but rule as a whole does not"+ | otherwise = text "arguments" <+> ppr mismatches <+> text "do not match (1-indexing)"+ where+ n_rule_args = length rule_args+ n_mismatches = length mismatches+ mismatches = [i | (rule_arg, (arg,i)) <- rule_args `zip` i_args,+ not (isJust (match_fn rule_arg arg))]++ lhs_fvs = exprsFreeVars rule_args -- Includes template tyvars+ match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg+ where+ in_scope = lhs_fvs `unionVarSet` exprFreeVars arg+ menv = ME { me_env = mkRnEnv2 (mkInScopeSet in_scope)+ , me_tmpls = mkVarSet rule_bndrs }++++
+ tests/examples/RealGHC.lhs.parser.golden view
file too large to diff
+ tests/examples/RealGHC.lhs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RealGHC.lhs.prettyprinter.golden view
@@ -0,0 +1,422 @@+{-# OPTIONS -w #-}+{-# LANGUAGE PatternGuards #-}+module Rules+ (RuleBase, emptyRuleBase, mkRuleBase, extendRuleBaseList,+ unionRuleBase, pprRuleBase, ruleCheckProgram, mkSpecInfo,+ extendSpecInfo, addSpecInfo, addIdSpecialisations, rulesOfBinds,+ getRules, pprRulesForUser, lookupRule, mkLocalRule, roughTopNames)+ where+import CoreSyn+import OccurAnal (occurAnalyseExpr)+import CoreFVs+ (exprFreeVars, exprsFreeVars, bindFreeVars, rulesFreeVars)+import CoreUtils (tcEqExprX, exprType)+import PprCore (pprRules)+import Type (Type, TvSubstEnv)+import Coercion (coercionKind)+import TcType (tcSplitTyConApp_maybe)+import CoreTidy (tidyRules)+import Id+import IdInfo (SpecInfo(SpecInfo))+import Var (Var)+import VarEnv+import VarSet+import Name (Name, NamedThing(..))+import NameEnv+import Unify (ruleMatchTyX, MatchEnv(..))+import BasicTypes (Activation)+import StaticFlags (opt_PprStyle_Debug)+import Outputable+import FastString+import Maybes+import OrdList+import Bag+import Util+import Data.List++mkLocalRule ::+ RuleName ->+ Activation ->+ Name -> [CoreBndr] -> [CoreExpr] -> CoreExpr -> CoreRule+mkLocalRule name act fn bndrs args rhs+ = Rule{ru_name = name, ru_fn = fn, ru_act = act, ru_bndrs = bndrs,+ ru_args = args, ru_rhs = rhs, ru_rough = roughTopNames args,+ ru_local = True}++roughTopNames :: [CoreExpr] -> [Maybe Name]+roughTopNames args = map roughTopName args++roughTopName :: CoreExpr -> Maybe Name+roughTopName (Type ty)+ = case tcSplitTyConApp_maybe ty of+ Just (tc, _) -> Just (getName tc)+ Nothing -> Nothing+roughTopName (App f a) = roughTopName f+roughTopName (Var f)+ | isGlobalId f = Just (idName f)+ | otherwise = Nothing+roughTopName other = Nothing++ruleCantMatch :: [Maybe Name] -> [Maybe Name] -> Bool+ruleCantMatch (Just n1 : ts) (Just n2 : as)+ = n1 /= n2 || ruleCantMatch ts as+ruleCantMatch (t : ts) (a : as) = ruleCantMatch ts as+ruleCantMatch ts as = False++pprRulesForUser :: [CoreRule] -> SDoc+pprRulesForUser rules+ = withPprStyle defaultUserStyle $+ pprRules $ sortLe le_rule $ tidyRules emptyTidyEnv rules+ where le_rule r1 r2 = ru_name r1 <= ru_name r2++mkSpecInfo :: [CoreRule] -> SpecInfo+mkSpecInfo rules = SpecInfo rules (rulesFreeVars rules)++extendSpecInfo :: SpecInfo -> [CoreRule] -> SpecInfo+extendSpecInfo (SpecInfo rs1 fvs1) rs2+ = SpecInfo (rs2 ++ rs1) (rulesFreeVars rs2 `unionVarSet` fvs1)++addSpecInfo :: SpecInfo -> SpecInfo -> SpecInfo+addSpecInfo (SpecInfo rs1 fvs1) (SpecInfo rs2 fvs2)+ = SpecInfo (rs1 ++ rs2) (fvs1 `unionVarSet` fvs2)++addIdSpecialisations :: Id -> [CoreRule] -> Id+addIdSpecialisations id [] = id+addIdSpecialisations id rules+ = setIdSpecialisation id $+ extendSpecInfo (idSpecialisation id) rules++rulesOfBinds :: [CoreBind] -> [CoreRule]+rulesOfBinds binds+ = concatMap (concatMap idCoreRules . bindersOf) binds++getRules :: RuleBase -> Id -> [CoreRule]+getRules rule_base fn+ | isLocalId fn = idCoreRules fn+ | otherwise =+ WARN+ (not (isPrimOpId fn) && notNull (idCoreRules fn),+ ppr fn <+> ppr (idCoreRules fn))+ idCoreRules+ fn+ ++ (lookupNameEnv rule_base (idName fn) `orElse` [])++type RuleBase = NameEnv [CoreRule]+emptyRuleBase = emptyNameEnv++mkRuleBase :: [CoreRule] -> RuleBase+mkRuleBase rules = extendRuleBaseList emptyRuleBase rules++extendRuleBaseList :: RuleBase -> [CoreRule] -> RuleBase+extendRuleBaseList rule_base new_guys+ = foldl extendRuleBase rule_base new_guys++unionRuleBase :: RuleBase -> RuleBase -> RuleBase+unionRuleBase rb1 rb2 = plusNameEnv_C (++) rb1 rb2++extendRuleBase :: RuleBase -> CoreRule -> RuleBase+extendRuleBase rule_base rule+ = extendNameEnv_Acc (:) singleton rule_base (ruleIdName rule) rule++pprRuleBase :: RuleBase -> SDoc+pprRuleBase rules+ = vcat+ [pprRules (tidyRules emptyTidyEnv rs) | rs <- nameEnvElts rules]++lookupRule ::+ (Activation -> Bool) ->+ InScopeSet ->+ Id -> [CoreExpr] -> [CoreRule] -> Maybe (CoreRule, CoreExpr)+lookupRule is_active in_scope fn args rules+ = case go [] rules of+ [] -> Nothing+ (m : ms) -> Just (findBest (fn, args) m ms)+ where rough_args = map roughTopName args+ + go ::+ [(CoreRule, CoreExpr)] -> [CoreRule] -> [(CoreRule, CoreExpr)]+ go ms [] = ms+ go ms (r : rs)+ = case (matchRule is_active in_scope args rough_args r) of+ Just e -> go ((r, e) : ms) rs+ Nothing -> go ms rs++findBest ::+ (Id, [CoreExpr]) ->+ (CoreRule, CoreExpr) ->+ [(CoreRule, CoreExpr)] -> (CoreRule, CoreExpr)+findBest target (rule, ans) [] = (rule, ans)+findBest target (rule1, ans1) ((rule2, ans2) : prs)+ | rule1 `isMoreSpecific` rule2 = findBest target (rule1, ans1) prs+ | rule2 `isMoreSpecific` rule1 = findBest target (rule2, ans2) prs+ | debugIsOn =+ let pp_rule rule+ | opt_PprStyle_Debug = ppr rule+ | otherwise = doubleQuotes (ftext (ru_name rule))+ in+ pprTrace "Rules.findBest: rule overlap (Rule 1 wins)"+ (vcat+ [if opt_PprStyle_Debug then+ ptext (sLit "Expression to match:") <+> ppr fn <+>+ sep (map ppr args)+ else empty,+ ptext (sLit "Rule 1:") <+> pp_rule rule1,+ ptext (sLit "Rule 2:") <+> pp_rule rule2])+ $ findBest target (rule1, ans1) prs+ | otherwise = findBest target (rule1, ans1) prs+ where (fn, args) = target++isMoreSpecific :: CoreRule -> CoreRule -> Bool+isMoreSpecific (BuiltinRule{}) r2 = True+isMoreSpecific r1 (BuiltinRule{}) = False+isMoreSpecific (Rule{ru_bndrs = bndrs1, ru_args = args1})+ (Rule{ru_bndrs = bndrs2, ru_args = args2})+ = isJust (matchN in_scope bndrs2 args2 args1)+ where in_scope = mkInScopeSet (mkVarSet bndrs1)++noBlackList :: Activation -> Bool+noBlackList act = False++matchRule ::+ (Activation -> Bool) ->+ InScopeSet ->+ [CoreExpr] -> [Maybe Name] -> CoreRule -> Maybe CoreExpr+matchRule is_active in_scope args rough_args+ (BuiltinRule{ru_name = name, ru_try = match_fn})+ = case match_fn args of+ Just expr -> Just expr+ Nothing -> Nothing+matchRule is_active in_scope args rough_args+ (Rule{ru_name = rn, ru_act = act, ru_rough = tpl_tops,+ ru_bndrs = tpl_vars, ru_args = tpl_args, ru_rhs = rhs})+ | not (is_active act) = Nothing+ | ruleCantMatch tpl_tops rough_args = Nothing+ | otherwise =+ case matchN in_scope tpl_vars tpl_args args of+ Nothing -> Nothing+ Just (binds, tpl_vals) -> Just+ (mkLets binds $ rule_fn `mkApps` tpl_vals)+ where rule_fn = occurAnalyseExpr (mkLams tpl_vars rhs)++matchN ::+ InScopeSet ->+ [Var] -> [CoreExpr] -> [CoreExpr] -> Maybe ([CoreBind], [CoreExpr])+matchN in_scope tmpl_vars tmpl_es target_es+ = do (tv_subst, id_subst, binds) <- go init_menv emptySubstEnv+ tmpl_es+ target_es+ return+ (fromOL binds, map (lookup_tmpl tv_subst id_subst) tmpl_vars')+ where (init_rn_env, tmpl_vars')+ = mapAccumL rnBndrL (mkRnEnv2 in_scope) tmpl_vars+ init_menv+ = ME{me_tmpls = mkVarSet tmpl_vars', me_env = init_rn_env}+ go menv subst [] es = Just subst+ go menv subst ts [] = Nothing+ go menv subst (t : ts) (e : es)+ = do subst1 <- match menv subst t e+ go menv subst1 ts es+ + lookup_tmpl :: TvSubstEnv -> IdSubstEnv -> Var -> CoreExpr+ lookup_tmpl tv_subst id_subst tmpl_var'+ | isTyVar tmpl_var' =+ case lookupVarEnv tv_subst tmpl_var' of+ Just ty -> Type ty+ Nothing -> unbound tmpl_var'+ | otherwise =+ case lookupVarEnv id_subst tmpl_var' of+ Just e -> e+ other -> unbound tmpl_var'+ unbound var+ = pprPanic "Template variable unbound in rewrite rule"+ (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$+ ppr target_es)++type SubstEnv = (TvSubstEnv, IdSubstEnv, OrdList CoreBind)++type IdSubstEnv = IdEnv CoreExpr++emptySubstEnv :: SubstEnv+emptySubstEnv = (emptyVarEnv, emptyVarEnv, nilOL)++match ::+ MatchEnv -> SubstEnv -> CoreExpr -> CoreExpr -> Maybe SubstEnv+match menv subst (Var v1) e2+ | Just subst <- match_var menv subst v1 e2 = Just subst+match menv subst e1 (Note n e2) = match menv subst e1 e2+match menv subst e1 (Var v2)+ | isCheapUnfolding unfolding =+ match menv subst e1 (unfoldingTemplate unfolding)+ where rn_env = me_env menv+ unfolding = idUnfolding (lookupRnInScope rn_env (rnOccR rn_env v2))+match menv subst@(tv_subst, id_subst, binds) e1 (Let bind e2)+ | all freshly_bound bndrs, not (any locally_bound bind_fvs) =+ match (menv{me_env = rn_env'})+ (tv_subst, id_subst, binds `snocOL` bind')+ e1+ e2'+ where rn_env = me_env menv+ bndrs = bindersOf bind+ bind_fvs = varSetElems (bindFreeVars bind)+ locally_bound x = inRnEnvR rn_env x+ freshly_bound x = not (x `rnInScope` rn_env)+ bind' = bind+ e2' = e2+ rn_env' = extendRnInScopeList rn_env bndrs+match menv subst (Lit lit1) (Lit lit2) | lit1 == lit2 = Just subst+match menv subst (App f1 a1) (App f2 a2)+ = do subst' <- match menv subst f1 f2+ match menv subst' a1 a2+match menv subst (Lam x1 e1) (Lam x2 e2) = match menv' subst e1 e2+ where menv' = menv{me_env = rnBndr2 (me_env menv) x1 x2}+match menv subst (Lam x1 e1) e2+ = match menv' subst e1 (App e2 (varToCoreExpr new_x))+ where (rn_env', new_x) = rnBndrL (me_env menv) x1+ menv' = menv{me_env = rn_env'}+match menv subst e1 (Lam x2 e2)+ = match menv' subst (App e1 (varToCoreExpr new_x)) e2+ where (rn_env', new_x) = rnBndrR (me_env menv) x2+ menv' = menv{me_env = rn_env'}+match menv subst (Case e1 x1 ty1 alts1) (Case e2 x2 ty2 alts2)+ = do subst1 <- match_ty menv subst ty1 ty2+ subst2 <- match menv subst1 e1 e2+ let menv' = menv{me_env = rnBndr2 (me_env menv) x1 x2}+ match_alts menv' subst2 alts1 alts2+match menv subst (Type ty1) (Type ty2)+ = match_ty menv subst ty1 ty2+match menv subst (Cast e1 co1) (Cast e2 co2)+ = do subst1 <- match_ty menv subst co1 co2+ match menv subst1 e1 e2+match menv subst e1 e2 = Nothing++match_var ::+ MatchEnv -> SubstEnv -> Var -> CoreExpr -> Maybe SubstEnv+match_var menv subst@(tv_subst, id_subst, binds) v1 e2+ | v1' `elemVarSet` me_tmpls menv =+ case lookupVarEnv id_subst v1' of+ Nothing | any (inRnEnvR rn_env) (varSetElems (exprFreeVars e2)) ->+ Nothing+ | otherwise ->+ do tv_subst' <- Unify.ruleMatchTyX menv tv_subst (idType v1')+ (exprType e2)+ return (tv_subst', extendVarEnv id_subst v1' e2, binds)+ Just e1' | tcEqExprX (nukeRnEnvL rn_env) e1' e2 -> Just subst+ | otherwise -> Nothing+ | otherwise =+ case e2 of+ Var v2 | v1' == rnOccR rn_env v2 -> Just subst+ other -> Nothing+ where rn_env = me_env menv+ v1' = rnOccL rn_env v1++match_alts ::+ MatchEnv -> SubstEnv -> [CoreAlt] -> [CoreAlt] -> Maybe SubstEnv+match_alts menv subst [] [] = return subst+match_alts menv subst ((c1, vs1, r1) : alts1)+ ((c2, vs2, r2) : alts2)+ | c1 == c2 =+ do subst1 <- match menv' subst r1 r2+ match_alts menv subst1 alts1 alts2+ where menv' :: MatchEnv+ menv' = menv{me_env = rnBndrs2 (me_env menv) vs1 vs2}+match_alts menv subst alts1 alts2 = Nothing++match_ty :: MatchEnv -> SubstEnv -> Type -> Type -> Maybe SubstEnv+match_ty menv (tv_subst, id_subst, binds) ty1 ty2+ = do tv_subst' <- Unify.ruleMatchTyX menv tv_subst ty1 ty2+ return (tv_subst', id_subst, binds)++ruleCheckProgram ::+ (Activation -> Bool) -> String -> RuleBase -> [CoreBind] -> SDoc+ruleCheckProgram is_active rule_pat rule_base binds+ | isEmptyBag results =+ text "Rule check results: no rule application sites"+ | otherwise =+ vcat+ [text "Rule check results:", line,+ vcat [p $$ line | p <- bagToList results]]+ where results+ = unionManyBags+ (map (ruleCheckBind (RuleCheckEnv is_active rule_pat rule_base))+ binds)+ line = text (replicate 20 '-')++data RuleCheckEnv = RuleCheckEnv{rc_is_active ::+ Activation -> Bool,+ rc_pattern :: String, rc_rule_base :: RuleBase}++ruleCheckBind :: RuleCheckEnv -> CoreBind -> Bag SDoc+ruleCheckBind env (NonRec b r) = ruleCheck env r+ruleCheckBind env (Rec prs)+ = unionManyBags [ruleCheck env r | (b, r) <- prs]++ruleCheck :: RuleCheckEnv -> CoreExpr -> Bag SDoc+ruleCheck env (Var v) = emptyBag+ruleCheck env (Lit l) = emptyBag+ruleCheck env (Type ty) = emptyBag+ruleCheck env (App f a) = ruleCheckApp env (App f a) []+ruleCheck env (Note n e) = ruleCheck env e+ruleCheck env (Cast e co) = ruleCheck env e+ruleCheck env (Let bd e)+ = ruleCheckBind env bd `unionBags` ruleCheck env e+ruleCheck env (Lam b e) = ruleCheck env e+ruleCheck env (Case e _ _ as)+ = ruleCheck env e `unionBags`+ unionManyBags [ruleCheck env r | (_, _, r) <- as]+ruleCheckApp env (App f a) as+ = ruleCheck env a `unionBags` ruleCheckApp env f (a : as)+ruleCheckApp env (Var f) as = ruleCheckFun env f as+ruleCheckApp env other as = ruleCheck env other++ruleCheckFun :: RuleCheckEnv -> Id -> [CoreExpr] -> Bag SDoc+ruleCheckFun env fn args+ | null name_match_rules = emptyBag+ | otherwise =+ unitBag+ (ruleAppCheck_help (rc_is_active env) fn args name_match_rules)+ where name_match_rules+ = filter match (getRules (rc_rule_base env) fn)+ match rule = (rc_pattern env) `isPrefixOf` unpackFS (ruleName rule)++ruleAppCheck_help ::+ (Activation -> Bool) -> Id -> [CoreExpr] -> [CoreRule] -> SDoc+ruleAppCheck_help is_active fn args rules+ = vcat+ [text "Expression:" <+> ppr (mkApps (Var fn) args),+ vcat (map check_rule rules)]+ where n_args = length args+ i_args = args `zip` [1 :: Int ..]+ rough_args = map roughTopName args+ check_rule rule = rule_herald rule <> colon <+> rule_info rule+ rule_herald (BuiltinRule{ru_name = name})+ = ptext (sLit "Builtin rule") <+> doubleQuotes (ftext name)+ rule_herald (Rule{ru_name = name})+ = ptext (sLit "Rule") <+> doubleQuotes (ftext name)+ rule_info rule+ | Just _ <- matchRule noBlackList emptyInScopeSet args rough_args+ rule+ = text "matches (which is very peculiar!)"+ rule_info (BuiltinRule{}) = text "does not match"+ rule_info+ (Rule{ru_name = name, ru_act = act, ru_bndrs = rule_bndrs,+ ru_args = rule_args})+ | not (is_active act) = text "active only in later phase"+ | n_args < n_rule_args = text "too few arguments"+ | n_mismatches == n_rule_args = text "no arguments match"+ | n_mismatches == 0 =+ text+ "all arguments match (considered individually), but rule as a whole does not"+ | otherwise =+ text "arguments" <+> ppr mismatches <+>+ text "do not match (1-indexing)"+ where n_rule_args = length rule_args+ n_mismatches = length mismatches+ mismatches+ = [i | (rule_arg, (arg, i)) <- rule_args `zip` i_args,+ not (isJust (match_fn rule_arg arg))]+ lhs_fvs = exprsFreeVars rule_args+ match_fn rule_arg arg = match menv emptySubstEnv rule_arg arg+ where in_scope = lhs_fvs `unionVarSet` exprFreeVars arg+ menv+ = ME{me_env = mkRnEnv2 (mkInScopeSet in_scope),+ me_tmpls = mkVarSet rule_bndrs}
+ tests/examples/RecordInfixSelector.hs view
@@ -0,0 +1,3 @@+data RecordWithInfixSelector = Cons { (<>) :: Int -> Int }++idRecord = Cons { (<>) = id }
+ tests/examples/RecordInfixSelector.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordInfixSelector.hs.parser.golden view
@@ -0,0 +1,234 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 1+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 1+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 1+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 1+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 4 1 4 1+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 4 1 4 1+ ]+ }+ Nothing+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 30 1 31 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 1 1 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 6 1 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 6 1 29+ , srcInfoPoints = []+ }+ "RecordWithInfixSelector"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 32 1 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 37 1 38+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 58 1 59+ ]+ }+ Nothing+ Nothing+ (RecDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 32 1 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 37 1 38+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 58 1 59+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 32 1 36+ , srcInfoPoints = []+ }+ "Cons")+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 39 1 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 44 1 46 ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 39 1 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 39 1 40+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 40 1 42+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 1 42 1 43+ ]+ }+ "<>"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 51 1 53 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 47 1 50+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 54 1 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 54 1 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 1 54 1 57+ , srcInfoPoints = []+ }+ "Int"))))+ ])+ ]+ []+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 1 3 9+ , srcInfoPoints = []+ }+ "idRecord"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 10 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 10 3 11 ]+ }+ (RecConstr+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 12 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 17 3 18+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 29 3 30+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 12 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 12 3 16+ , srcInfoPoints = []+ }+ "Cons"))+ [ FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 19 3 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 24 3 25 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 19 3 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 19 3 20+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 20 3 22+ , SrcSpan "tests/examples/RecordInfixSelector.hs" 3 22 3 23+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 20 3 22+ , srcInfoPoints = []+ }+ "<>"))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 26 3 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 26 3 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordInfixSelector.hs" 3 26 3 28+ , srcInfoPoints = []+ }+ "id")))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/RecordInfixSelector.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordInfixSelector.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+data RecordWithInfixSelector = Cons{(<>) :: Int -> Int}+idRecord = Cons{(<>) = id}
+ tests/examples/RecordPatternSynonyms.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE PatternSynonyms #-}+module ShouldCompile where++pattern Single{x} = [x]++pattern Double{y,z} = (y,z)++pattern More{x} <- (x,_) where+ More x = (x, Nothing)++-- Selector+selector :: Int+selector = x [5]++update :: [String]+update = ["String"] { x = "updated" }
+ tests/examples/RecordPatternSynonyms.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPatternSynonyms.hs.parser.golden view
@@ -0,0 +1,688 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 17 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 1 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 1 4 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 1 6 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 1 8 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 1 15 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 17 1 17 1+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 17 1 17 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 1 2 7+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "ShouldCompile")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 1 1 13+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ ]+ []+ [ PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 1 4 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 1 4 8+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 19 4 20+ ]+ }+ (PRec+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 9 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 15 4 16+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 17 4 18+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 9 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 9 4 15+ , srcInfoPoints = []+ }+ "Single"))+ [ PFieldPun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ "x"))+ ])+ (PList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 21 4 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 21 4 22+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 23 4 24+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 4 22 4 23+ , srcInfoPoints = []+ }+ "x")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 1 6 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 1 6 8+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 21 6 22+ ]+ }+ (PRec+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 9 6 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 15 6 16+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 17 6 18+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 19 6 20+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 9 6 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 9 6 15+ , srcInfoPoints = []+ }+ "Double"))+ [ PFieldPun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ "y"))+ , PFieldPun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ "z"))+ ])+ (PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 23 6 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 23 6 24+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 25 6 26+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 27 6 28+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 24 6 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 24 6 25+ , srcInfoPoints = []+ }+ "y")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ "z")+ ])+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 1 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 1 8 8+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 17 8 19+ ]+ }+ (PRec+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 9 8 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 13 8 14+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 15 8 16+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 9 8 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 9 8 13+ , srcInfoPoints = []+ }+ "More"))+ [ PFieldPun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ "x"))+ ])+ (PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 20 8 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 20 8 21+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 22 8 23+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 24 8 25+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 21 8 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 21 8 22+ , srcInfoPoints = []+ }+ "x")+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 23 8 24+ , srcInfoPoints = []+ }+ ])+ (ExplicitBidirectional+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 26 12 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 8 26 8 31+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 3+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 24+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 3 9 7+ , srcInfoPoints = []+ }+ "More"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 8 9 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 8 9 9+ , srcInfoPoints = []+ }+ "x")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 10 9 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 10 9 11 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 12 9 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 12 9 13+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 14 9 15+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 23 9 24+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 13 9 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 13 9 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 13 9 14+ , srcInfoPoints = []+ }+ "x"))+ , Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 16 9 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 16 9 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 9 16 9 23+ , srcInfoPoints = []+ }+ "Nothing"))+ ]))+ Nothing+ ])+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 10 12 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 1 12 9+ , srcInfoPoints = []+ }+ "selector"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 13 12 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 13 12 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 12 13 12 16+ , srcInfoPoints = []+ }+ "Int")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 1 13 9+ , srcInfoPoints = []+ }+ "selector"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 10 13 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 10 13 11 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 12 13 13+ , srcInfoPoints = []+ }+ "x")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 14 13 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 14 13 15+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 16 13 17+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 15 13 16+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 13 15 13 16+ , srcInfoPoints = []+ }+ 5+ "5")+ ])))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 1 15 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 8 15 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 1 15 7+ , srcInfoPoints = []+ }+ "update"+ ]+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 11 15 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 11 15 12+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 18 15 19+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 12 15 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 12 15 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 15 12 15 18+ , srcInfoPoints = []+ }+ "String"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 38+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 1 16 7+ , srcInfoPoints = []+ }+ "update"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 8 16 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 8 16 9 ]+ }+ (RecUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 10 16 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 21 16 22+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 37 16 38+ ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 10 16 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 10 16 11+ , SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 19 16 20+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 11 16 19+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 11 16 19+ , srcInfoPoints = []+ }+ "String"+ "String")+ ])+ [ FieldUpdate+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 23 16 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 25 16 26 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 23 16 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 23 16 24+ , srcInfoPoints = []+ }+ "x"))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 27 16 36+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecordPatternSynonyms.hs" 16 27 16 36+ , srcInfoPoints = []+ }+ "updated"+ "updated"))+ ]))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/RecordPatternSynonyms.hs" 11 1 11 12)+ " Selector"+ ]+ )
+ tests/examples/RecordPatternSynonyms.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPatternSynonyms.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# LANGUAGE PatternSynonyms #-}+module ShouldCompile where++pattern Single{x} = [x]++pattern Double{y, z} = (y, z)++pattern More{x} <- (x, _)+ where More x = (x, Nothing)++selector :: Int+selector = x [5]++update :: [String]+update = ["String"]{x = "updated"}
+ tests/examples/RecordPuns.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE NamedFieldPuns #-}+module RecordPuns where++cotile = tile {Kind.ospeedup}
+ tests/examples/RecordPuns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPuns.hs.parser.golden view
@@ -0,0 +1,120 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPuns.hs" 1 1 1 1+ , SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 1+ , SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 1+ , SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 1+ , SrcSpan "tests/examples/RecordPuns.hs" 5 1 5 1+ , SrcSpan "tests/examples/RecordPuns.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPuns.hs" 2 1 2 7+ , SrcSpan "tests/examples/RecordPuns.hs" 2 19 2 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 2 8 2 18+ , srcInfoPoints = []+ }+ "RecordPuns")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPuns.hs" 1 1 1 13+ , SrcSpan "tests/examples/RecordPuns.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "NamedFieldPuns"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 1 4 7+ , srcInfoPoints = []+ }+ "cotile"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 8 4 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPuns.hs" 4 8 4 9 ]+ }+ (RecUpdate+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecordPuns.hs" 4 15 4 16+ , SrcSpan "tests/examples/RecordPuns.hs" 4 29 4 30+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 10 4 14+ , srcInfoPoints = []+ }+ "tile")))+ [ FieldPun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+ , srcInfoPoints = []+ }+ (Qual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+ , srcInfoPoints = []+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+ , srcInfoPoints = []+ }+ "Kind")+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecordPuns.hs" 4 16 4 29+ , srcInfoPoints = []+ }+ "ospeedup"))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/RecordPuns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecordPuns.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE NamedFieldPuns #-}+module RecordPuns where+cotile = tile{Kind.ospeedup}
+ tests/examples/RecordWildcard.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE RecordWildCards #-}+-- Should fail.+f A { .., b = v, .. } = v+
+ tests/examples/RecordWildcard.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcard.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+ (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcard.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcard.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcard.hs" 3 9) "Parse error: ,"
+ tests/examples/RecordWildcardError.hs view
@@ -0,0 +1,1 @@+foo Record{..} = xs
+ tests/examples/RecordWildcardError.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12) "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecordWildcardError.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12)+ "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecordWildcardError.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12) "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecordWildcardError.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/RecordWildcardError.hs" 1 12) "RecordWildCards language extension is not enabled. Please add {-# LANGUAGE RecordWildCards #-} pragma at the top of your module."
+ tests/examples/RecursiveDo.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE RecursiveDo #-}+justOnes = do+ rec xs <- Just (1:xs)+ return (map negate xs)+
+ tests/examples/RecursiveDo.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecursiveDo.hs.parser.golden view
@@ -0,0 +1,281 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 1 1 1 1+ , SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 1+ , SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 1+ , SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 1+ , SrcSpan "tests/examples/RecursiveDo.hs" 6 1 6 1+ , SrcSpan "tests/examples/RecursiveDo.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 1 1 1 13+ , SrcSpan "tests/examples/RecursiveDo.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "RecursiveDo"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 1 4 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 1 2 9+ , srcInfoPoints = []+ }+ "justOnes"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 10 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 2 10 2 11 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 2 12 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 2 12 2 14+ , SrcSpan "tests/examples/RecursiveDo.hs" 3 5 3 5+ , SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 5+ , SrcSpan "tests/examples/RecursiveDo.hs" 6 1 6 0+ ]+ }+ [ RecStmt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 5 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 3 5 3 8+ , SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 9+ , SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 3 12 3 14 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ "xs"))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 26+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 15 3 19+ , srcInfoPoints = []+ }+ "Just")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 20 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 3 20 3 21+ , SrcSpan "tests/examples/RecursiveDo.hs" 3 25 3 26+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 3 21 3 25+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ 1+ "1"))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 22 3 23+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 22 3 23+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 22 3 23+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 23 3 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 23 3 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 3 23 3 25+ , srcInfoPoints = []+ }+ "xs"))))))+ ]+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 5 4 11+ , srcInfoPoints = []+ }+ "return")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 12 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RecursiveDo.hs" 4 12 4 13+ , SrcSpan "tests/examples/RecursiveDo.hs" 4 26 4 27+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 26+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 13 4 16+ , srcInfoPoints = []+ }+ "map")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 17 4 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 17 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 17 4 23+ , srcInfoPoints = []+ }+ "negate"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RecursiveDo.hs" 4 24 4 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 24 4 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RecursiveDo.hs" 4 24 4 26+ , srcInfoPoints = []+ }+ "xs"))))))+ ]))+ Nothing+ ]+ , []+ )
+ tests/examples/RecursiveDo.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RecursiveDo.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE RecursiveDo #-}+justOnes+ = do rec xs <- Just (1 : xs)+ return (map negate xs)
+ tests/examples/RegularPatterns.hs view
@@ -0,0 +1,9 @@+{-# OPTIONS_GHC -F -pgmFhsx2hs #-}+{-# LANGUAGE RegularPatterns #-}+module RegularPatterns where++f :: [Int] -> [[Int]]+f [ 0+!, b+, 1?, (| 2,3 |) ] = [b]+f [ 1+, (| x | x `mod` 2 == 0 |) ] = [[x]]+f [ 2, a@(| b@:_, _ |)* ] = b:a+f _ = []
+ tests/examples/RegularPatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RegularPatterns.hs.parser.golden view
@@ -0,0 +1,851 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 1 1 10 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 1 1 1 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 2 1 2 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 5 1 5 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 1 6 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 1 7 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 8 1 8 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 9 1 9 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 10 1 10 1+ , SrcSpan "tests/examples/RegularPatterns.hs" 10 1 10 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 3 1 3 7+ , SrcSpan "tests/examples/RegularPatterns.hs" 3 24 3 29+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 3 8 3 23+ , srcInfoPoints = []+ }+ "RegularPatterns")+ Nothing+ Nothing))+ [ OptionsPragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 1 1 1 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 1 1 1 32+ , SrcSpan "tests/examples/RegularPatterns.hs" 1 32 1 35+ ]+ }+ (Just GHC)+ "-F -pgmFhsx2hs "+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 2 1 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 2 1 2 13+ , SrcSpan "tests/examples/RegularPatterns.hs" 2 30 2 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 2 14 2 29+ , srcInfoPoints = []+ }+ "RegularPatterns"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 1 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 5 3 5 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 6 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 5 12 5 14 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 6 5 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 5 6 5 7+ , SrcSpan "tests/examples/RegularPatterns.hs" 5 10 5 11+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 7 5 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 7 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 7 5 10+ , srcInfoPoints = []+ }+ "Int"))))+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 15 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 5 15 5 16+ , SrcSpan "tests/examples/RegularPatterns.hs" 5 21 5 22+ ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 16 5 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 5 16 5 17+ , SrcSpan "tests/examples/RegularPatterns.hs" 5 20 5 21+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ "Int"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 1 9 9+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 1 6 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 1 6 2+ , srcInfoPoints = []+ }+ "f")+ [ PRPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 3 6 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 6 3 6 4+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 8 6 9+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 12 6 13+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 16 6 17+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 28 6 29+ ]+ }+ [ RPOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 8+ , srcInfoPoints = []+ }+ (RPPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 5 6 6+ , srcInfoPoints = []+ }+ 0+ "0")))+ (RPPlusG+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 6 6 6 8+ , srcInfoPoints = []+ })+ , RPOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 12+ , srcInfoPoints = []+ }+ (RPPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 10 6 11+ , srcInfoPoints = []+ }+ "b")))+ (RPPlus+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 11 6 12+ , srcInfoPoints = []+ })+ , RPOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 16+ , srcInfoPoints = []+ }+ (RPPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ 1+ "1")))+ (RPOpt+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 15 6 16+ , srcInfoPoints = []+ })+ , RPSeq+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 18 6 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 6 18 6 20+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 22 6 23+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 25 6 27+ ]+ }+ [ RPPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ 2+ "2"))+ , RPPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 23 6 24+ , srcInfoPoints = []+ }+ 3+ "3"))+ ]+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 30 6 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 6 30 6 31 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 32 6 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 6 32 6 33+ , SrcSpan "tests/examples/RegularPatterns.hs" 6 34 6 35+ ]+ }+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 33 6 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 33 6 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 6 33 6 34+ , srcInfoPoints = []+ }+ "b"))+ ]))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 1 7 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 1 7 2+ , srcInfoPoints = []+ }+ "f")+ [ PRPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 3 7 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 7 3 7 4+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 7 7 8+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 34 7 35+ ]+ }+ [ RPOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 7+ , srcInfoPoints = []+ }+ (RPPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 5 7 6+ , srcInfoPoints = []+ }+ 1+ "1")))+ (RPPlus+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 7 6 7 7+ , srcInfoPoints = []+ })+ , RPGuard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 9 7 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 7 9 7 11+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 14 7 15+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 31 7 33+ ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 12 7 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 12 7 13+ , srcInfoPoints = []+ }+ "x"))+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 30+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 30+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 19+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 19 7 22+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 22 7 23+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 7 18 7 19+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 19 7 22+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 22 7 23+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 19 7 22+ , srcInfoPoints = []+ }+ "mod")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 24 7 25+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 24 7 25+ , srcInfoPoints = []+ }+ 2+ "2")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 26 7 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 26 7 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 26 7 28+ , srcInfoPoints = []+ }+ "==")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 29 7 30+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 29 7 30+ , srcInfoPoints = []+ }+ 0+ "0")))+ ]+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 36 7 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 7 36 7 37 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 38 7 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 7 38 7 39+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 42 7 43+ ]+ }+ [ List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 39 7 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 7 39 7 40+ , SrcSpan "tests/examples/RegularPatterns.hs" 7 41 7 42+ ]+ }+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 40 7 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 40 7 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 7 40 7 41+ , srcInfoPoints = []+ }+ "x"))+ ]+ ]))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 1 8 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 1 8 2+ , srcInfoPoints = []+ }+ "f")+ [ PRPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 3 8 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 8 3 8 4+ , SrcSpan "tests/examples/RegularPatterns.hs" 8 6 8 7+ , SrcSpan "tests/examples/RegularPatterns.hs" 8 25 8 26+ ]+ }+ [ RPPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 5 8 6+ , srcInfoPoints = []+ }+ 2+ "2"))+ , RPAs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 8 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 8 9 8 10 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 8 8 8 9+ , srcInfoPoints = []+ }+ "a")+ (RPOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 8 8 24+ , srcInfoPoints = []+ }+ (RPSeq+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 10 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 8 10 8 12+ , SrcSpan "tests/examples/RegularPatterns.hs" 8 17 8 18+ , SrcSpan "tests/examples/RegularPatterns.hs" 8 21 8 23+ ]+ }+ [ RPCAs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 13 8 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 8 14 8 16 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 13 8 14+ , srcInfoPoints = []+ }+ "b")+ (RPPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 16 8 17+ , srcInfoPoints = []+ }))+ , RPPat+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 19 8 20+ , srcInfoPoints = []+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 19 8 20+ , srcInfoPoints = []+ })+ ])+ (RPStar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 23 8 24+ , srcInfoPoints = []+ }))+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 27 8 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 8 27 8 28 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 29 8 30+ , srcInfoPoints = []+ }+ "b")))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 30 8 31+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 30 8 31+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 30 8 31+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 31 8 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 31 8 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RegularPatterns.hs" 8 31 8 32+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 1 9 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 1 9 2+ , srcInfoPoints = []+ }+ "f")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 3 9 4+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 5 9 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 9 5 9 6 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RegularPatterns.hs" 9 7 9 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RegularPatterns.hs" 9 7 9 8+ , SrcSpan "tests/examples/RegularPatterns.hs" 9 8 9 9+ ]+ }+ []))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/RegularPatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RegularPatterns.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# OPTIONS_GHC -F -pgmFhsx2hs #-}+{-# LANGUAGE RegularPatterns #-}+module RegularPatterns where++f :: [Int] -> [[Int]]+f [0+!, b+, 1?, (| 2, 3 |)] = [b]+f [1+, (| x | x `mod` 2 == 0 |)] = [[x]]+f [2, a@(| b@:_, _ |)*] = b : a+f _ = []
+ tests/examples/RelaxedDo.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE NondecreasingIndentation #-}+module Main where++import Control.Monad++main :: IO ()+main = do+ when ( 2 > 1) $ do+ putStrLn "a"+ putStrLn "b"++nestedDoBlocks = getChar >>= (\c1 -> do+ getChar >>= (\c2 -> do+ getChar >>= (\c3 -> return [c1,c2,c3])))
+ tests/examples/RelaxedDo.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RelaxedDo.hs.parser.golden view
@@ -0,0 +1,878 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 1 1 15 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 1 1 1 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 4 1 4 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 6 1 6 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 7 1 7 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 15 1 15 1+ , SrcSpan "tests/examples/RelaxedDo.hs" 15 1 15 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 2 1 2 7+ , SrcSpan "tests/examples/RelaxedDo.hs" 2 13 2 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ "Main")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 1 1 1 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 1 1 1 13+ , SrcSpan "tests/examples/RelaxedDo.hs" 1 39 1 42+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 1 14 1 38+ , srcInfoPoints = []+ }+ "NondecreasingIndentation"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 4 1 4 21+ , srcInfoPoints = [ SrcSpan "tests/examples/RelaxedDo.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 4 8 4 21+ , srcInfoPoints = []+ }+ "Control.Monad"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 1 6 14+ , srcInfoPoints = [ SrcSpan "tests/examples/RelaxedDo.hs" 6 6 6 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ "main"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 14+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 13+ , SrcSpan "tests/examples/RelaxedDo.hs" 6 13 6 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 13+ , SrcSpan "tests/examples/RelaxedDo.hs" 6 13 6 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 6 12 6 13+ , SrcSpan "tests/examples/RelaxedDo.hs" 6 13 6 14+ ]+ }))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 1 10 15+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 6 10 15+ , srcInfoPoints = [ SrcSpan "tests/examples/RelaxedDo.hs" 7 6 7 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 7 8 10 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 7 8 7 10+ , SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 3+ , SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 10 15+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 10 15+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 3 8 7+ , srcInfoPoints = []+ }+ "when")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 8 8 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 8 8 8 9+ , SrcSpan "tests/examples/RelaxedDo.hs" 8 15 8 16+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 10 8 15+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 10 8 11+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 8 10 8 11+ , srcInfoPoints = []+ }+ 2+ "2"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 12 8 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 8 12 8 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 8 12 8 13+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ 1+ "1")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 17 8 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 17 8 18+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 17 8 18+ , srcInfoPoints = []+ }+ "$")))+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 8 19 10 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 8 19 8 21+ , SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 3+ , SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 3+ , SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 3+ , SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 15+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 9 3 9 11+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 9 12 9 15+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 9 12 9 15+ , srcInfoPoints = []+ }+ "a"+ "a")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 15+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 10 3 10 11+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 10 12 10 15+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 10 12 10 15+ , srcInfoPoints = []+ }+ "b"+ "b")))+ ]))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 1 14 58+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 1 12 15+ , srcInfoPoints = []+ }+ "nestedDoBlocks"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 16 14 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 12 16 12 17 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 14 58+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 12 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 12 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 18 12 25+ , srcInfoPoints = []+ }+ "getChar")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 26 12 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 26 12 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 26 12 29+ , srcInfoPoints = []+ }+ ">>=")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 30 14 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 12 30 12 31+ , SrcSpan "tests/examples/RelaxedDo.hs" 14 57 14 58+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 31 14 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 12 31 12 32+ , SrcSpan "tests/examples/RelaxedDo.hs" 12 35 12 37+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 32 12 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 32 12 34+ , srcInfoPoints = []+ }+ "c1")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 12 38 14 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 12 38 12 40+ , SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 18+ , SrcSpan "tests/examples/RelaxedDo.hs" 14 57 14 57+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 13 18 14 57+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RelaxedDo.hs" 13 18 14 57+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 18 13 25+ , srcInfoPoints = []+ }+ "getChar")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 26 13 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 26 13 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 26 13 29+ , srcInfoPoints = []+ }+ ">>=")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 30 14 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 13 30 13 31+ , SrcSpan "tests/examples/RelaxedDo.hs" 14 56 14 57+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 31 14 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 13 31 13 32+ , SrcSpan "tests/examples/RelaxedDo.hs" 13 35 13 37+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 32 13 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 32 13 34+ , srcInfoPoints = []+ }+ "c2")+ ]+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 13 38 14 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RelaxedDo.hs" 13 38 13 40+ , SrcSpan "tests/examples/RelaxedDo.hs" 14 18 14 18+ , SrcSpan "tests/examples/RelaxedDo.hs" 14 18 14 18+ , SrcSpan "tests/examples/RelaxedDo.hs" 14 56 14 56+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RelaxedDo.hs" 14 18 14 56+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs" 14 18 14 56+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs" 14 18 14 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 18+ 14+ 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 18+ 14+ 25+ , srcInfoPoints = []+ }+ "getChar")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs" 14 26 14 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 26+ 14+ 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 26+ 14+ 29+ , srcInfoPoints = []+ }+ ">>=")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs" 14 30 14 56+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 30+ 14+ 31+ , SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 55+ 14+ 56+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 31+ 14+ 55+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 31+ 14+ 32+ , SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 35+ 14+ 37+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 32+ 14+ 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 32+ 14+ 34+ , srcInfoPoints = []+ }+ "c3")+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 38+ 14+ 55+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 38+ 14+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 38+ 14+ 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 38+ 14+ 44+ , srcInfoPoints = []+ }+ "return")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 45+ 14+ 55+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 45+ 14+ 46+ , SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 48+ 14+ 49+ , SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 51+ 14+ 52+ , SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 54+ 14+ 55+ ]+ }+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 46+ 14+ 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 46+ 14+ 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 46+ 14+ 48+ , srcInfoPoints = []+ }+ "c1"))+ , Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 49+ 14+ 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 49+ 14+ 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 49+ 14+ 51+ , srcInfoPoints = []+ }+ "c2"))+ , Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 52+ 14+ 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 52+ 14+ 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/RelaxedDo.hs"+ 14+ 52+ 14+ 54+ , srcInfoPoints = []+ }+ "c3"))+ ])))))+ ]))))+ ])))))+ Nothing+ ]+ , []+ )
+ tests/examples/RelaxedDo.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RelaxedDo.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE NondecreasingIndentation #-}+module Main where+import Control.Monad++main :: IO ()+main+ = do when (2 > 1) $+ do putStrLn "a"+ putStrLn "b"+nestedDoBlocks+ = getChar >>=+ (\ c1 ->+ do getChar >>=+ (\ c2 -> do getChar >>= (\ c3 -> return [c1, c2, c3])))
+ tests/examples/RoleAnnotations.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE RoleAnnotations, PolyKinds, KindSignatures #-}++module Roles where++data T1 a = K1 a+data T2 a = K2 a++data T5 a = K5 a+data T6 a = K6+data T7 a b = K7 b++type role T1 nominal+type role T2 representational+type role T3 phantom+type role T4 nominal _+type role T5 _
+ tests/examples/RoleAnnotations.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations.hs.parser.golden view
@@ -0,0 +1,640 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 17 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 1 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 5 1 5 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 6 1 6 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 8 1 8 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 9 1 9 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 10 1 10 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 12 1 12 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 13 1 13 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 14 1 14 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 15 1 15 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 16 1 16 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 17 1 17 1+ , SrcSpan "tests/examples/RoleAnnotations.hs" 17 1 17 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 3 1 3 7+ , SrcSpan "tests/examples/RoleAnnotations.hs" 3 14 3 19+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 3 8 3 13+ , srcInfoPoints = []+ }+ "Roles")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 1 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 1 1 1 13+ , SrcSpan "tests/examples/RoleAnnotations.hs" 1 29 1 30+ , SrcSpan "tests/examples/RoleAnnotations.hs" 1 40 1 41+ , SrcSpan "tests/examples/RoleAnnotations.hs" 1 57 1 60+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "RoleAnnotations"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 1 31 1 40+ , srcInfoPoints = []+ }+ "PolyKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 1 42 1 56+ , srcInfoPoints = []+ }+ "KindSignatures"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 1 5 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 5 11 5 12 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 5 1 5 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 6 5 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 5 6 5 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 5 6 5 8+ , srcInfoPoints = []+ }+ "T1"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 13 5 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 13 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 13 5 15+ , srcInfoPoints = []+ }+ "K1")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 1 6 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 6 11 6 12 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 6 1 6 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 6 6 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 6 6 6 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 6 6 6 8+ , srcInfoPoints = []+ }+ "T2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 13 6 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 13 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 13 6 15+ , srcInfoPoints = []+ }+ "K2")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 1 8 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 8 11 8 12 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 8 1 8 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 6 8 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 8 6 8 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 8 6 8 8+ , srcInfoPoints = []+ }+ "T5"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 13 8 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 13 8 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 13 8 15+ , srcInfoPoints = []+ }+ "K5")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 9 1 9 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 9 11 9 12 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 9 1 9 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 9 6 9 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 9 6 9 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/RoleAnnotations.hs" 9 6 9 8+ , srcInfoPoints = []+ }+ "T6"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ "K6")+ [])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 1 10 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 10 13 10 14 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 1 10 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 12+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 10+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 6 10 8+ , srcInfoPoints = []+ }+ "T7"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 11 10 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 11 10 12+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 15 10 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 15 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 15 10 17+ , srcInfoPoints = []+ }+ "K7")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 18 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 10 18 10 19+ , srcInfoPoints = []+ }+ "b")+ ])+ ]+ []+ , RoleAnnotDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 12 1 12 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 12 1 12 5+ , SrcSpan "tests/examples/RoleAnnotations.hs" 12 6 12 10+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 12 11 12 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 12 11 12 13+ , srcInfoPoints = []+ }+ "T1"))+ [ Nominal+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 12 14 12 21+ , srcInfoPoints = []+ }+ ]+ , RoleAnnotDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 13 1 13 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 13 1 13 5+ , SrcSpan "tests/examples/RoleAnnotations.hs" 13 6 13 10+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 13 11 13 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 13 11 13 13+ , srcInfoPoints = []+ }+ "T2"))+ [ Representational+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 13 14 13 30+ , srcInfoPoints = []+ }+ ]+ , RoleAnnotDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 14 1 14 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 14 1 14 5+ , SrcSpan "tests/examples/RoleAnnotations.hs" 14 6 14 10+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 14 11 14 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 14 11 14 13+ , srcInfoPoints = []+ }+ "T3"))+ [ Phantom+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 14 14 14 21+ , srcInfoPoints = []+ }+ ]+ , RoleAnnotDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 15 1 15 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 15 1 15 5+ , SrcSpan "tests/examples/RoleAnnotations.hs" 15 6 15 10+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 15 11 15 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 15 11 15 13+ , srcInfoPoints = []+ }+ "T4"))+ [ Nominal+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 15 14 15 21+ , srcInfoPoints = []+ }+ , RoleWildcard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 15 22 15 23+ , srcInfoPoints = []+ }+ ]+ , RoleAnnotDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 16 1 16 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations.hs" 16 1 16 5+ , SrcSpan "tests/examples/RoleAnnotations.hs" 16 6 16 10+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 16 11 16 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 16 11 16 13+ , srcInfoPoints = []+ }+ "T5"))+ [ RoleWildcard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations.hs" 16 16 16 17+ , srcInfoPoints = []+ }+ ]+ ]+ , []+ )
+ tests/examples/RoleAnnotations.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations.hs.prettyprinter.golden view
@@ -0,0 +1,22 @@+{-# LANGUAGE RoleAnnotations, PolyKinds, KindSignatures #-}+module Roles where++data T1 a = K1 a++data T2 a = K2 a++data T5 a = K5 a++data T6 a = K6++data T7 a b = K7 b++type role T1 nominal++type role T2 representational++type role T3 phantom++type role T4 nominal _++type role T5 _
+ tests/examples/RoleAnnotations2.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE RoleAnnotations #-}++data Foo a = Foo a+type role Foo representational++main = print $ foo 1++foo :: Int -> Int+foo role = 42
+ tests/examples/RoleAnnotations2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations2.hs.parser.golden view
@@ -0,0 +1,379 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 10 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 1 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 4 1 4 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 8 1 8 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 10 1 10 1+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 10 1 10 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 1 1 1 13+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "RoleAnnotations"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 12 3 13 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 6 3 11+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ "a")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 14 3 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 14 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ "Foo")+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 18 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 3 18 3 19+ , srcInfoPoints = []+ }+ "a")+ ])+ ]+ []+ , RoleAnnotDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 4 1 4 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 4 1 4 5+ , SrcSpan "tests/examples/RoleAnnotations2.hs" 4 6 4 10+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ "Foo"))+ [ Representational+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 4 15 4 31+ , srcInfoPoints = []+ }+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 6 6 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 6 6 7 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 8 6 13+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 16 6 19+ , srcInfoPoints = []+ }+ "foo")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 20 6 21+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 6 20 6 21+ , srcInfoPoints = []+ }+ 1+ "1")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 1 8 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 5 8 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 12 8 14 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 8 8 11+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 15 8 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 15 8 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 8 15 8 18+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 14+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 1 9 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 5 9 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 5 9 9+ , srcInfoPoints = []+ }+ "role")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 10 9 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 10 9 11 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 12 9 14+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/RoleAnnotations2.hs" 9 12 9 14+ , srcInfoPoints = []+ }+ 42+ "42")))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/RoleAnnotations2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/RoleAnnotations2.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE RoleAnnotations #-}++data Foo a = Foo a++type role Foo representational+main = print $ foo 1++foo :: Int -> Int+foo role = 42
+ tests/examples/Rules.hs view
@@ -0,0 +1,1 @@+{-# RULES "head/build" forall (g::forall b.(a->b->b)->b->b) . head (build g) = g (\x _ -> x) badHead #-}
+ tests/examples/Rules.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Rules.hs.parser.golden view
@@ -0,0 +1,321 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 1 1 1+ , SrcSpan "tests/examples/Rules.hs" 1 1 1 1+ , SrcSpan "tests/examples/Rules.hs" 1 1 1 1+ , SrcSpan "tests/examples/Rules.hs" 2 1 2 1+ , SrcSpan "tests/examples/Rules.hs" 2 1 2 1+ ]+ }+ Nothing+ []+ []+ [ RulePragmaDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 1 1 105+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 1 1 10+ , SrcSpan "tests/examples/Rules.hs" 1 102 1 105+ ]+ }+ [ Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 11 1 101+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 11 1 23+ , SrcSpan "tests/examples/Rules.hs" 1 24 1 30+ , SrcSpan "tests/examples/Rules.hs" 1 61 1 62+ , SrcSpan "tests/examples/Rules.hs" 1 78 1 79+ ]+ }+ "head/build"+ Nothing+ (Just+ [ TypedRuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 31 1 60+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 31 1 32+ , SrcSpan "tests/examples/Rules.hs" 1 33 1 35+ , SrcSpan "tests/examples/Rules.hs" 1 59 1 60+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 32 1 33+ , srcInfoPoints = []+ }+ "g")+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 35 1 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 35 1 41+ , SrcSpan "tests/examples/Rules.hs" 1 43 1 44+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 42 1 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 42 1 43+ , srcInfoPoints = []+ }+ "b")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 44 1 59+ , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 53 1 55 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 44 1 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 44 1 45+ , SrcSpan "tests/examples/Rules.hs" 1 52 1 53+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 52+ , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 46 1 48 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 45 1 46+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 48 1 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 49 1 51 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 48 1 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Rules.hs" 1 48 1 49+ , srcInfoPoints = []+ }+ "b"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 51 1 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Rules.hs" 1 51 1 52+ , srcInfoPoints = []+ }+ "b")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 59+ , srcInfoPoints = [ SrcSpan "tests/examples/Rules.hs" 1 56 1 58 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 55 1 56+ , srcInfoPoints = []+ }+ "b"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 58 1 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 58 1 59+ , srcInfoPoints = []+ }+ "b")))))+ ])+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 77+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 63 1 67+ , srcInfoPoints = []+ }+ "head")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 68 1 77+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 68 1 69+ , SrcSpan "tests/examples/Rules.hs" 1 76 1 77+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 76+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 69 1 74+ , srcInfoPoints = []+ }+ "build")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 75 1 76+ , srcInfoPoints = []+ }+ "g"))))))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 101+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 93+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 80 1 81+ , srcInfoPoints = []+ }+ "g")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 82 1 93+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 82 1 83+ , SrcSpan "tests/examples/Rules.hs" 1 92 1 93+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 83 1 92+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Rules.hs" 1 83 1 84+ , SrcSpan "tests/examples/Rules.hs" 1 88 1 90+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 84 1 85+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 84 1 85+ , srcInfoPoints = []+ }+ "x")+ , PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 86 1 87+ , srcInfoPoints = []+ }+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 91 1 92+ , srcInfoPoints = []+ }+ "x"))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Rules.hs" 1 94 1 101+ , srcInfoPoints = []+ }+ "badHead"))))+ ]+ ]+ , []+ )
+ tests/examples/Rules.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Rules.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# RULES+"head/build" forall (g :: forall b . (a -> b -> b) -> b -> b) .+ head (build g) = g (\ x _ -> x) badHead+ #-}
+ tests/examples/SCCPragmas.hs view
@@ -0,0 +1,3 @@+module SCCPragmas where++x = {-# SCC "wibble" #-} 3
+ tests/examples/SCCPragmas.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SCCPragmas.hs.parser.golden view
@@ -0,0 +1,78 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 1+ , SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 1+ , SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 1+ , SrcSpan "tests/examples/SCCPragmas.hs" 4 1 4 1+ , SrcSpan "tests/examples/SCCPragmas.hs" 4 1 4 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SCCPragmas.hs" 1 1 1 7+ , SrcSpan "tests/examples/SCCPragmas.hs" 1 19 1 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 1 8 1 18+ , srcInfoPoints = []+ }+ "SCCPragmas")+ Nothing+ Nothing))+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 3 3 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SCCPragmas.hs" 3 3 3 4 ]+ }+ (SCCPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 5 3 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SCCPragmas.hs" 3 13 3 21+ , SrcSpan "tests/examples/SCCPragmas.hs" 3 22 3 25+ ]+ }+ "wibble"+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SCCPragmas.hs" 3 26 3 27+ , srcInfoPoints = []+ }+ 3+ "3"))))+ Nothing+ ]+ , []+ )
+ tests/examples/SCCPragmas.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SCCPragmas.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+module SCCPragmas where+x = {-# SCC "wibble" #-} 3
+ tests/examples/SafeImports1.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE SafeImports #-}+import safe Prelude as P
+ tests/examples/SafeImports1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports1.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports1.hs" 1 1 1 1+ , SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports1.hs" 3 1 3 1+ , SrcSpan "tests/examples/SafeImports1.hs" 3 1 3 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports1.hs" 1 1 1 13+ , SrcSpan "tests/examples/SafeImports1.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "SafeImports"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports1.hs" 2 1 2 7+ , SrcSpan "tests/examples/SafeImports1.hs" 2 8 2 12+ , SrcSpan "tests/examples/SafeImports1.hs" 2 21 2 23+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 2 13 2 20+ , srcInfoPoints = []+ }+ "Prelude"+ , importQualified = False+ , importSrc = False+ , importSafe = True+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports1.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ "P")+ , importSpecs = Nothing+ }+ ]+ []+ , []+ )
+ tests/examples/SafeImports1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports1.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE SafeImports #-}+import safe Prelude as P
+ tests/examples/SafeImports2.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE Safe #-}+import safe Prelude as P
+ tests/examples/SafeImports2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports2.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports2.hs" 1 1 1 1+ , SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports2.hs" 3 1 3 1+ , SrcSpan "tests/examples/SafeImports2.hs" 3 1 3 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 1 1 1 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports2.hs" 1 1 1 13+ , SrcSpan "tests/examples/SafeImports2.hs" 1 19 1 22+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 1 14 1 18+ , srcInfoPoints = []+ }+ "Safe"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports2.hs" 2 1 2 7+ , SrcSpan "tests/examples/SafeImports2.hs" 2 8 2 12+ , SrcSpan "tests/examples/SafeImports2.hs" 2 21 2 23+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 2 13 2 20+ , srcInfoPoints = []+ }+ "Prelude"+ , importQualified = False+ , importSrc = False+ , importSafe = True+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports2.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ "P")+ , importSpecs = Nothing+ }+ ]+ []+ , []+ )
+ tests/examples/SafeImports2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports2.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE Safe #-}+import safe Prelude as P
+ tests/examples/SafeImports3.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE Trustworthy #-}+import safe Prelude as P
+ tests/examples/SafeImports3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports3.hs.parser.golden view
@@ -0,0 +1,65 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports3.hs" 1 1 1 1+ , SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 1+ , SrcSpan "tests/examples/SafeImports3.hs" 3 1 3 1+ , SrcSpan "tests/examples/SafeImports3.hs" 3 1 3 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports3.hs" 1 1 1 13+ , SrcSpan "tests/examples/SafeImports3.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "Trustworthy"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SafeImports3.hs" 2 1 2 7+ , SrcSpan "tests/examples/SafeImports3.hs" 2 8 2 12+ , SrcSpan "tests/examples/SafeImports3.hs" 2 21 2 23+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 2 13 2 20+ , srcInfoPoints = []+ }+ "Prelude"+ , importQualified = False+ , importSrc = False+ , importSafe = True+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SafeImports3.hs" 2 24 2 25+ , srcInfoPoints = []+ }+ "P")+ , importSpecs = Nothing+ }+ ]+ []+ , []+ )
+ tests/examples/SafeImports3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SafeImports3.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE Trustworthy #-}+import safe Prelude as P
+ tests/examples/ScopedTypeVariables.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE ScopedTypeVariables #-}++test :: IO Char+test = do+ x :: Char <- getChar+ return x+++value :: String = "Hello"++forallTest :: forall x . Eq x => x -> x+forallTest x = if x == x then (undefined :: x) else x
+ tests/examples/ScopedTypeVariables.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ScopedTypeVariables.hs.parser.golden view
@@ -0,0 +1,630 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 13 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 1 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 4 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 1 11 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 13 1 13 1+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 13 1 13 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 1 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 1 1 13+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 34 1 37+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 1 14 1 33+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 6 3 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ "test"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 16+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 12 3 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 12 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 3 12 3 16+ , srcInfoPoints = []+ }+ "Char"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 6 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 4 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 1 4 5+ , srcInfoPoints = []+ }+ "test"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 6 6 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 6 4 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 8 6 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 4 8 4 10+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 5+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 5+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 15 5 17 ]+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 7 5 9 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ "x"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 10 5 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 10 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 10 5 14+ , srcInfoPoints = []+ }+ "Char"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 18 5 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 18 5 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 5 18 5 25+ , srcInfoPoints = []+ }+ "getChar")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 13+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 5 6 11+ , srcInfoPoints = []+ }+ "return")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ "x"))))+ ]))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 26+ , srcInfoPoints = []+ }+ (PatTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 7 9 9 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 1 9 6+ , srcInfoPoints = []+ }+ "value"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 10 9 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 10 9 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 10 9 16+ , srcInfoPoints = []+ }+ "String"))))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 17 9 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 17 9 18 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 19 9 26+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 9 19 9 26+ , srcInfoPoints = []+ }+ "Hello"+ "Hello")))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 1 11 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 12 11 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 1 11 11+ , srcInfoPoints = []+ }+ "forallTest"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 15 11 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 15 11 21+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 24 11 25+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 22 11 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 22 11 23+ , srcInfoPoints = []+ }+ "x")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30+ , srcInfoPoints = []+ }+ "x"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 34 11 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 36 11 38 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 34 11 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 34 11 35+ , srcInfoPoints = []+ }+ "x"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 39 11 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 39 11 40+ , srcInfoPoints = []+ }+ "x"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 54+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 1 12 11+ , srcInfoPoints = []+ }+ "forallTest")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 12 12 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 12 12 13+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 14 12 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 14 12 15 ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 16 12 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 16 12 18+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 26 12 30+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 48 12 52+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 25+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 19 12 20+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 21 12 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 21 12 23+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 21 12 23+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 24 12 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 24 12 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 24 12 25+ , srcInfoPoints = []+ }+ "x"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 31 12 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 31 12 32+ , SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 46 12 47+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 42 12 44 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 32 12 41+ , srcInfoPoints = []+ }+ "undefined")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 45 12 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 45 12 46+ , srcInfoPoints = []+ }+ "x"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 53 12 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 53 12 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ScopedTypeVariables.hs" 12 53 12 54+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/ScopedTypeVariables.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ScopedTypeVariables.hs.prettyprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE ScopedTypeVariables #-}++test :: IO Char+test+ = do x :: Char <- getChar+ return x+value :: String = "Hello"++forallTest :: forall x . Eq x => x -> x+forallTest x = if x == x then (undefined :: x) else x
+ tests/examples/SimpleDeriving.hs view
@@ -0,0 +1,1 @@+data T = T deriving Eq
+ tests/examples/SimpleDeriving.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SimpleDeriving.hs.parser.golden view
@@ -0,0 +1,101 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 1+ , SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 1+ , SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 1+ , SrcSpan "tests/examples/SimpleDeriving.hs" 2 1 2 1+ , SrcSpan "tests/examples/SimpleDeriving.hs" 2 1 2 1+ ]+ }+ Nothing+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SimpleDeriving.hs" 1 8 1 9 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 1 1 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SimpleDeriving.hs" 1 6 1 7+ , srcInfoPoints = []+ }+ "T"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 10 1 11+ , srcInfoPoints = []+ }+ "T")+ [])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 12 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SimpleDeriving.hs" 1 12 1 20 ]+ }+ Nothing+ [ IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SimpleDeriving.hs" 1 21 1 23+ , srcInfoPoints = []+ }+ "Eq")))+ ]+ ]+ ]+ , []+ )
+ tests/examples/SimpleDeriving.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SimpleDeriving.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+data T = T deriving Eq
+ tests/examples/SingleClassAsst.hs view
@@ -0,0 +1,4 @@+module Test where++foo :: (Eq a) => a -> a+foo x = x
+ tests/examples/SingleClassAsst.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SingleClassAsst.hs.parser.golden view
@@ -0,0 +1,214 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 1+ , SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 1+ , SrcSpan "tests/examples/SingleClassAsst.hs" 3 1 3 1+ , SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 1+ , SrcSpan "tests/examples/SingleClassAsst.hs" 5 1 5 1+ , SrcSpan "tests/examples/SingleClassAsst.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SingleClassAsst.hs" 1 1 1 7+ , SrcSpan "tests/examples/SingleClassAsst.hs" 1 13 1 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 1 8 1 12+ , srcInfoPoints = []+ }+ "Test")+ Nothing+ Nothing))+ []+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 1 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 5 3 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 24+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 9+ , SrcSpan "tests/examples/SingleClassAsst.hs" 3 13 3 14+ , SrcSpan "tests/examples/SingleClassAsst.hs" 3 15 3 17+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 8 3 9+ , SrcSpan "tests/examples/SingleClassAsst.hs" 3 13 3 14+ , SrcSpan "tests/examples/SingleClassAsst.hs" 3 15 3 17+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ "a")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 18 3 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SingleClassAsst.hs" 3 20 3 22 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 18 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 18 3 19+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 10+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/SingleClassAsst.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 4 7 4 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SingleClassAsst.hs" 4 7 4 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SingleClassAsst.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/SingleClassAsst.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SingleClassAsst.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+module Test where++foo :: (Eq a) => a -> a+foo x = x
+ tests/examples/SpecializeInstance.hs view
@@ -0,0 +1,4 @@+instance Sized a => Sized (Digit a) where+ {-# SPECIALIZE instance Sized (Digit (Elem a)) #-}+ {-# SPECIALIZE instance Sized (Digit (Node a)) #-}+ size xs = foldl (\ i x -> i + size x) 0 xs
+ tests/examples/SpecializeInstance.hs.exactprinter.golden view
@@ -0,0 +1,5 @@+instance Sized a => Sized (Digit a) where+ {-# SPECIALISE instance Sized (Digit (Elem a)) #-}+ {-# SPECIALISE instance Sized (Digit (Node a)) #-}+ size xs = foldl (\ i x -> i + size x) 0 xs+
+ tests/examples/SpecializeInstance.hs.parser.golden view
@@ -0,0 +1,813 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 1+ , SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 1+ , SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 1+ , SrcSpan "tests/examples/SpecializeInstance.hs" 5 1 5 1+ , SrcSpan "tests/examples/SpecializeInstance.hs" 5 1 5 1+ ]+ }+ Nothing+ []+ []+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 5 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 1 1 9+ , SrcSpan "tests/examples/SpecializeInstance.hs" 1 37 1 42+ , SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 8+ , SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 8+ , SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 8+ , SrcSpan "tests/examples/SpecializeInstance.hs" 5 1 5 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 36+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15+ , srcInfoPoints = []+ }+ "Sized")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17+ , srcInfoPoints = []+ }+ "a"))))))+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 36+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 21 1 26+ , srcInfoPoints = []+ }+ "Sized")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 27 1 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 27 1 28+ , SrcSpan "tests/examples/SpecializeInstance.hs" 1 35 1 36+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 35+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 28 1 33+ , srcInfoPoints = []+ }+ "Digit")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 34 1 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 1 34 1 35+ , srcInfoPoints = []+ }+ "a"))))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 22+ , SrcSpan "tests/examples/SpecializeInstance.hs" 2 23 2 31+ , SrcSpan "tests/examples/SpecializeInstance.hs" 2 55 2 58+ ]+ }+ (InstSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 8 2 22+ , SrcSpan "tests/examples/SpecializeInstance.hs" 2 23 2 31+ , SrcSpan "tests/examples/SpecializeInstance.hs" 2 55 2 58+ ]+ }+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 54+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 54+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 32 2 37+ , srcInfoPoints = []+ }+ "Sized")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 38 2 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 38 2 39+ , SrcSpan "tests/examples/SpecializeInstance.hs" 2 53 2 54+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 39 2 53+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 39 2 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 39 2 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 2 39 2 44+ , srcInfoPoints = []+ }+ "Digit")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 45 2 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 2 45 2 46+ , SrcSpan "tests/examples/SpecializeInstance.hs" 2 52 2 53+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 2 46 2 52+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 2 46 2 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 2 46 2 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 2+ 46+ 2+ 50+ , srcInfoPoints = []+ }+ "Elem")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 2 51 2 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 2 51 2 52+ , srcInfoPoints = []+ }+ "a")))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 22+ , SrcSpan "tests/examples/SpecializeInstance.hs" 3 23 3 31+ , SrcSpan "tests/examples/SpecializeInstance.hs" 3 55 3 58+ ]+ }+ (InstSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 58+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 8 3 22+ , SrcSpan "tests/examples/SpecializeInstance.hs" 3 23 3 31+ , SrcSpan "tests/examples/SpecializeInstance.hs" 3 55 3 58+ ]+ }+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 54+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 54+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 32 3 37+ , srcInfoPoints = []+ }+ "Sized")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 38 3 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 38 3 39+ , SrcSpan "tests/examples/SpecializeInstance.hs" 3 53 3 54+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 39 3 53+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 39 3 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 39 3 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 3 39 3 44+ , srcInfoPoints = []+ }+ "Digit")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 45 3 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 3 45 3 46+ , SrcSpan "tests/examples/SpecializeInstance.hs" 3 52 3 53+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 3 46 3 52+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 3 46 3 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 3 46 3 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 3+ 46+ 3+ 50+ , srcInfoPoints = []+ }+ "Node")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 3 51 3 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 3 51 3 52+ , srcInfoPoints = []+ }+ "a")))))))))+ , InsDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 50+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 50+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ "size")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 13 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 13 4 15+ , srcInfoPoints = []+ }+ "xs")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 16 4 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializeInstance.hs" 4 16 4 17 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 18 4 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 18 4 47+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 18 4 45+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 18 4 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 18 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 18+ 4+ 23+ , srcInfoPoints = []+ }+ "foldl")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 24 4 45+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 24 4 25+ , SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 44 4 45+ ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 25 4 44+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 25 4 26+ , SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 31 4 33+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 27+ 4+ 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 27+ 4+ 28+ , srcInfoPoints = []+ }+ "i")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 29+ 4+ 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 29+ 4+ 30+ , srcInfoPoints = []+ }+ "x")+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 34+ 4+ 44+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 34+ 4+ 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 34+ 4+ 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 34+ 4+ 35+ , srcInfoPoints = []+ }+ "i")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 36+ 4+ 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 36+ 4+ 37+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 36+ 4+ 37+ , srcInfoPoints = []+ }+ "+")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 38+ 4+ 44+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 38+ 4+ 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 38+ 4+ 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 38+ 4+ 42+ , srcInfoPoints = []+ }+ "size")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 43+ 4+ 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 43+ 4+ 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs"+ 4+ 43+ 4+ 44+ , srcInfoPoints = []+ }+ "x"))))))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 46 4 47+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 46 4 47+ , srcInfoPoints = []+ }+ 0+ "0")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 48 4 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializeInstance.hs" 4 48 4 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializeInstance.hs" 4 48 4 50+ , srcInfoPoints = []+ }+ "xs")))))+ Nothing+ ])+ ])+ ]+ , []+ )
+ tests/examples/SpecializeInstance.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SpecializeInstance.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+instance Sized a => Sized (Digit a) where+ {-# SPECIALISE instance Sized (Digit (Elem a)) #-}+ + {-# SPECIALISE instance Sized (Digit (Node a)) #-}+ size xs = foldl (\ i x -> i + size x) 0 xs
+ tests/examples/SpecializePhaseControl.hs view
@@ -0,0 +1,15 @@+{-# SPECIALISE [1] x ::+ Integer -> Integer -> Integer,+ Integer -> Int -> Integer,+ Int -> Int -> Int #-}+{-# INLINABLE [1] x #-}+x :: (Num a, Integral b) => a -> b -> a+x = undefined++{-# SPECIALISE INLINE [999] y ::+ Integer -> Integer -> Integer,+ Integer -> Int -> Integer,+ Int -> Int -> Int #-}+{-# INLINABLE [1] y #-}+y :: (Num a, Integral b) => a -> b -> a+y = undefined
+ tests/examples/SpecializePhaseControl.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SpecializePhaseControl.hs.parser.golden view
@@ -0,0 +1,1036 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 16 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 1 6 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 1 9 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 1 14 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 16 1 16 1+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 16 1 16 1+ ]+ }+ Nothing+ []+ []+ [ SpecSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 4 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 1 1 15+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 22 1 24+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 38 2 39+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 34 3 35+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 27 4 30+ ]+ }+ (Just+ (ActiveFrom+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 16 1 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 16 1 17+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 17 1 18+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 18 1 19+ ]+ }+ 1))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 20 1 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 1 20 1 21+ , srcInfoPoints = []+ }+ "x"))+ [ TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 17 2 19 ]+ }+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 17 2 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 9 2 16+ , srcInfoPoints = []+ }+ "Integer")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 28 2 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 20 2 27+ , srcInfoPoints = []+ }+ "Integer")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 31 2 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 31 2 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 2 31 2 38+ , srcInfoPoints = []+ }+ "Integer")))))+ , TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 17 3 19 ]+ }+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 17 3 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 9 3 16+ , srcInfoPoints = []+ }+ "Integer")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 24 3 26 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 20 3 23+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 27 3 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 27 3 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 3 27 3 34+ , srcInfoPoints = []+ }+ "Integer")))))+ , TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 13 4 15 ]+ }+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 13 4 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 20 4 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 16 4 19+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 23 4 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 23 4 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 4 23 4 26+ , srcInfoPoints = []+ }+ "Int")))))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 1 6 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 3 6 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 1 6 2+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 6 6 40+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 6 6 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 6 6 7+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 12 6 13+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 24 6 25+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 26 6 28+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializePhaseControl.hs" 6 14 6 22+ , srcInfoPoints = []+ }+ "Integral")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24+ , srcInfoPoints = []+ }+ "b")))+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 29 6 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 31 6 33 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 29 6 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 29 6 30+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 34 6 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 36 6 38 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 34 6 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 34 6 35+ , srcInfoPoints = []+ }+ "b"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 39 6 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 39 6 40+ , srcInfoPoints = []+ }+ "a")))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 1 7 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 3 7 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 3 7 4 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 5 7 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 5 7 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 7 5 7 14+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ , SpecInlineSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 1 12 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 1 9 22+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 31 9 33+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 38 10 39+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 34 11 35+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 27 12 30+ ]+ }+ True+ (Just+ (ActiveFrom+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 23 9 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 23 9 24+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 24 9 27+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 27 9 28+ ]+ }+ 999))+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 29 9 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 9 29 9 30+ , srcInfoPoints = []+ }+ "y"))+ [ TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 17 10 19 ]+ }+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 17 10 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 9 10 16+ , srcInfoPoints = []+ }+ "Integer")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 28 10 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 20 10 27+ , srcInfoPoints = []+ }+ "Integer")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 31 10 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 31 10 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 10 31 10 38+ , srcInfoPoints = []+ }+ "Integer")))))+ , TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 17 11 19 ]+ }+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 17 11 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 9 11 16+ , srcInfoPoints = []+ }+ "Integer")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 24 11 26 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 20 11 23+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 27 11 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 27 11 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 11 27 11 34+ , srcInfoPoints = []+ }+ "Integer")))))+ , TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 13 12 15 ]+ }+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 13 12 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 9 12 12+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 20 12 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 16 12 19+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 23 12 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 23 12 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 12 23 12 26+ , srcInfoPoints = []+ }+ "Int")))))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 1 14 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 3 14 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 1 14 2+ , srcInfoPoints = []+ }+ "y"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 6 14 40+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 6 14 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 6 14 7+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 12 14 13+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 24 14 25+ , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 26 14 28+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializePhaseControl.hs" 14 7 14 10+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/SpecializePhaseControl.hs" 14 14 14 22+ , srcInfoPoints = []+ }+ "Integral")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24+ , srcInfoPoints = []+ }+ "b")))+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 29 14 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 31 14 33 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 29 14 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 29 14 30+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 34 14 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 36 14 38 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 34 14 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 34 14 35+ , srcInfoPoints = []+ }+ "b"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 39 14 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 39 14 40+ , srcInfoPoints = []+ }+ "a")))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 1 15 2+ , srcInfoPoints = []+ }+ "y"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 3 15 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 3 15 4 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 5 15 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 5 15 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/SpecializePhaseControl.hs" 15 5 15 14+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ , [ Comment+ True+ (SrcSpan "tests/examples/SpecializePhaseControl.hs" 5 1 5 24)+ "# INLINABLE [1] x #"+ , Comment+ True+ (SrcSpan "tests/examples/SpecializePhaseControl.hs" 13 1 13 24)+ "# INLINABLE [1] y #"+ ]+ )
+ tests/examples/SpecializePhaseControl.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/SpecializePhaseControl.hs.prettyprinter.golden view
@@ -0,0 +1,11 @@+{-# SPECIALISE [1] x :: Integer -> Integer -> Integer,+ Integer -> Int -> Integer, Int -> Int -> Int #-}++x :: (Num a, Integral b) => a -> b -> a+x = undefined++{-# SPECIALISE INLINE [999] y :: Integer -> Integer -> Integer,+ Integer -> Int -> Integer, Int -> Int -> Int #-}++y :: (Num a, Integral b) => a -> b -> a+y = undefined
+ tests/examples/StarInType.hs view
@@ -0,0 +1,5 @@+{-# language TypeOperators, KindSignatures #-}+data B = B+data a * b = Foo+type A = B * B+main = print 1
+ tests/examples/StarInType.hs.exactprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeOperators, KindSignatures #-}+data B = B+data a * b = Foo+type A = B * B+main = print 1+
+ tests/examples/StarInType.hs.parser.golden view
@@ -0,0 +1,287 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/StarInType.hs" 1 1 1 1+ , SrcSpan "tests/examples/StarInType.hs" 2 1 2 1+ , SrcSpan "tests/examples/StarInType.hs" 2 1 2 1+ , SrcSpan "tests/examples/StarInType.hs" 2 1 2 1+ , SrcSpan "tests/examples/StarInType.hs" 3 1 3 1+ , SrcSpan "tests/examples/StarInType.hs" 4 1 4 1+ , SrcSpan "tests/examples/StarInType.hs" 5 1 5 1+ , SrcSpan "tests/examples/StarInType.hs" 6 1 6 1+ , SrcSpan "tests/examples/StarInType.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 1 1 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/StarInType.hs" 1 1 1 13+ , SrcSpan "tests/examples/StarInType.hs" 1 27 1 28+ , SrcSpan "tests/examples/StarInType.hs" 1 44 1 47+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 1 29 1 43+ , srcInfoPoints = []+ }+ "KindSignatures"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 1 2 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/StarInType.hs" 2 8 2 9 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 1 2 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 6 2 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 6 2 7+ , srcInfoPoints = []+ }+ "B"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ "B")+ [])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 1 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/StarInType.hs" 3 12 3 13 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 11+ , srcInfoPoints = []+ }+ (DHInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 11+ , srcInfoPoints = []+ }+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ "a"))+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 8 3 9+ , srcInfoPoints = []+ }+ "*"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ "b")))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 3 14 3 17+ , srcInfoPoints = []+ }+ "Foo")+ [])+ ]+ []+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 1 4 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/StarInType.hs" 4 1 4 5+ , SrcSpan "tests/examples/StarInType.hs" 4 8 4 9+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "A"))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 15+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 10 4 11+ , srcInfoPoints = []+ }+ "B")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ "*")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 4 14 4 15+ , srcInfoPoints = []+ }+ "B"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 1 5 15+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 1 5 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 1 5 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 6 5 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/StarInType.hs" 5 6 5 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 8 5 13+ , srcInfoPoints = []+ }+ "print")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/StarInType.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ 1+ "1"))))+ Nothing+ ]+ , []+ )
+ tests/examples/StarInType.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/StarInType.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeOperators, KindSignatures #-}++data B = B++data a * b = Foo++type A = B * B+main = print 1
+ tests/examples/T11727.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PatternSynonyms #-}++module T11727 where++pattern A,B :: Int+pattern A = 5+pattern B = 5+
+ tests/examples/T11727.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T11727.hs.parser.golden view
@@ -0,0 +1,180 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T11727.hs" 1 1 1 1+ , SrcSpan "tests/examples/T11727.hs" 3 1 3 1+ , SrcSpan "tests/examples/T11727.hs" 3 1 3 1+ , SrcSpan "tests/examples/T11727.hs" 5 1 5 1+ , SrcSpan "tests/examples/T11727.hs" 6 1 6 1+ , SrcSpan "tests/examples/T11727.hs" 7 1 7 1+ , SrcSpan "tests/examples/T11727.hs" 9 1 9 1+ , SrcSpan "tests/examples/T11727.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 3 1 3 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T11727.hs" 3 1 3 7+ , SrcSpan "tests/examples/T11727.hs" 3 15 3 20+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ "T11727")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T11727.hs" 1 1 1 13+ , SrcSpan "tests/examples/T11727.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ ]+ []+ [ PatSynSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 1 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T11727.hs" 5 1 5 8+ , SrcSpan "tests/examples/T11727.hs" 5 10 5 11+ , SrcSpan "tests/examples/T11727.hs" 5 13 5 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ "A"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "B"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 16 5 19+ , srcInfoPoints = []+ }+ "Int")))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 1 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T11727.hs" 6 1 6 8+ , SrcSpan "tests/examples/T11727.hs" 6 11 6 12+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ "A"))+ [])+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 13 6 14+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ 5+ "5"))+ ImplicitBidirectional+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 1 7 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T11727.hs" 7 1 7 8+ , SrcSpan "tests/examples/T11727.hs" 7 11 7 12+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ "B"))+ [])+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 13 7 14+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 13 7 14+ , srcInfoPoints = []+ })+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 7 13 7 14+ , srcInfoPoints = []+ }+ 5+ "5"))+ ImplicitBidirectional+ ]+ , []+ )
+ tests/examples/T11727.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T11727.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE PatternSynonyms #-}+module T11727 where++pattern A, B :: Int++pattern A = 5++pattern B = 5
+ tests/examples/T13050.hs view
@@ -0,0 +1,7 @@+module HolesInfix where++f, g, q :: Int -> Int -> Int+f x y = _ x y+g x y = x `_` y+q x y = x `_a` y+
+ tests/examples/T13050.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T13050.hs.parser.golden view
@@ -0,0 +1,439 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T13050.hs" 1 1 1 1+ , SrcSpan "tests/examples/T13050.hs" 1 1 1 1+ , SrcSpan "tests/examples/T13050.hs" 3 1 3 1+ , SrcSpan "tests/examples/T13050.hs" 4 1 4 1+ , SrcSpan "tests/examples/T13050.hs" 5 1 5 1+ , SrcSpan "tests/examples/T13050.hs" 6 1 6 1+ , SrcSpan "tests/examples/T13050.hs" 8 1 8 1+ , SrcSpan "tests/examples/T13050.hs" 8 1 8 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 1 1 1 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T13050.hs" 1 1 1 7+ , SrcSpan "tests/examples/T13050.hs" 1 19 1 24+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 1 8 1 18+ , srcInfoPoints = []+ }+ "HolesInfix")+ Nothing+ Nothing))+ []+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 1 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T13050.hs" 3 2 3 3+ , SrcSpan "tests/examples/T13050.hs" 3 5 3 6+ , SrcSpan "tests/examples/T13050.hs" 3 9 3 11+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 4 3 5+ , srcInfoPoints = []+ }+ "g"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 7 3 8+ , srcInfoPoints = []+ }+ "q"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 29+ , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 3 16 3 18 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 12 3 15+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 29+ , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 3 23 3 25 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 19 3 22+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 26 3 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 26 3 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 3 26 3 29+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 1 4 14+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 1 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 3 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 3 4 4+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 7 4 14+ , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 4 7 4 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 12+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (ExprHole+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 9 4 10+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 11 4 12+ , srcInfoPoints = []+ }+ "x"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 1 5 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 1 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ "g")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 3 5 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 3 5 4+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 7 5 16+ , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 5 7 5 8 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 11 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T13050.hs" 5 11 5 12+ , SrcSpan "tests/examples/T13050.hs" 5 12 5 13+ , SrcSpan "tests/examples/T13050.hs" 5 13 5 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 11 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T13050.hs" 5 11 5 12+ , SrcSpan "tests/examples/T13050.hs" 5 12 5 13+ , SrcSpan "tests/examples/T13050.hs" 5 13 5 14+ ]+ }+ (ExprHole+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 12 5 13+ , srcInfoPoints = []+ })))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 1 6 17+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 1 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 1 6 2+ , srcInfoPoints = []+ }+ "q")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 3 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 3 6 4+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 5 6 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 5 6 6+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 7 6 17+ , srcInfoPoints = [ SrcSpan "tests/examples/T13050.hs" 6 7 6 8 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 11 6 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T13050.hs" 6 11 6 12+ , SrcSpan "tests/examples/T13050.hs" 6 12 6 14+ , SrcSpan "tests/examples/T13050.hs" 6 14 6 15+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 11 6 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T13050.hs" 6 11 6 12+ , SrcSpan "tests/examples/T13050.hs" 6 12 6 14+ , SrcSpan "tests/examples/T13050.hs" 6 14 6 15+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 12 6 14+ , srcInfoPoints = []+ }+ "_a")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T13050.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/T13050.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T13050.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+module HolesInfix where++f, g, q :: Int -> Int -> Int+f x y = _ x y+g x y = x `_` y+q x y = x `_a` y
+ tests/examples/T326.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeApplications #-}+module T326 where++(@:) a b = a
+ tests/examples/T326.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T326.hs.parser.golden view
@@ -0,0 +1,116 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 1 1 1 1+ , SrcSpan "tests/examples/T326.hs" 2 1 2 1+ , SrcSpan "tests/examples/T326.hs" 2 1 2 1+ , SrcSpan "tests/examples/T326.hs" 4 1 4 1+ , SrcSpan "tests/examples/T326.hs" 5 1 5 1+ , SrcSpan "tests/examples/T326.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 1 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 2 1 2 7+ , SrcSpan "tests/examples/T326.hs" 2 13 2 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ "T326")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 1 1 1 13+ , SrcSpan "tests/examples/T326.hs" 1 31 1 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "TypeApplications"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 4 1 4 2+ , SrcSpan "tests/examples/T326.hs" 4 2 4 4+ , SrcSpan "tests/examples/T326.hs" 4 4 4 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 2 4 4+ , srcInfoPoints = []+ }+ "@:")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 10 4 13+ , srcInfoPoints = [ SrcSpan "tests/examples/T326.hs" 4 10 4 11 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ "a"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/T326.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T326.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeApplications #-}+module T326 where+(@:) a b = a
+ tests/examples/THTSplices.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH+main = undefined :: $(undefined)
+ tests/examples/THTSplices.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTSplices.hs.parser.golden view
@@ -0,0 +1,133 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTSplices.hs" 1 1 1 1+ , SrcSpan "tests/examples/THTSplices.hs" 2 1 2 1+ , SrcSpan "tests/examples/THTSplices.hs" 2 1 2 1+ , SrcSpan "tests/examples/THTSplices.hs" 2 1 2 1+ , SrcSpan "tests/examples/THTSplices.hs" 3 1 3 1+ , SrcSpan "tests/examples/THTSplices.hs" 4 1 4 1+ , SrcSpan "tests/examples/THTSplices.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTSplices.hs" 1 1 1 13+ , SrcSpan "tests/examples/THTSplices.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTSplices.hs" 2 1 2 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 2 8 2 27+ , srcInfoPoints = []+ }+ "Language.Haskell.TH"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 1 3 33+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 6 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTSplices.hs" 3 6 3 7 ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTSplices.hs" 3 18 3 20 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 8 3 17+ , srcInfoPoints = []+ }+ "undefined")))+ (TySplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 21 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTSplices.hs" 3 21 3 23+ , SrcSpan "tests/examples/THTSplices.hs" 3 32 3 33+ ]+ }+ (ParenSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 21 3 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTSplices.hs" 3 21 3 23+ , SrcSpan "tests/examples/THTSplices.hs" 3 32 3 33+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 23 3 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 23 3 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTSplices.hs" 3 23 3 32+ , srcInfoPoints = []+ }+ "undefined")))))))+ Nothing+ ]+ , []+ )
+ tests/examples/THTSplices.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTSplices.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH+main = undefined :: $( undefined )
+ tests/examples/THTypedSplices.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH++import THTypedSplices.Defs++main = $$justTH ($$([e|| 2 ||]))
+ tests/examples/THTypedSplices.hs.exactprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH++import THTypedSplices.Defs++main = $$justTH ($$([|| 2 ||]))+
+ tests/examples/THTypedSplices.hs.parser.golden view
@@ -0,0 +1,177 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 1+ , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1+ , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1+ , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1+ , SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 1+ , SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 1+ , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1+ , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 13+ , SrcSpan "tests/examples/THTypedSplices.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 8 2 27+ , srcInfoPoints = []+ }+ "Language.Haskell.TH"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ , ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 8 4 27+ , srcInfoPoints = []+ }+ "THTypedSplices.Defs"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 33+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 33+ , srcInfoPoints = []+ }+ (SpliceExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16+ , srcInfoPoints = []+ }+ (TIdSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16+ , srcInfoPoints = []+ }+ "justTH"))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 18+ , SrcSpan "tests/examples/THTypedSplices.hs" 6 32 6 33+ ]+ }+ (SpliceExp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21+ , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32+ ]+ }+ (TParenSplice+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21+ , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32+ ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25+ , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31+ ]+ }+ (TExpBracket+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25+ , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31+ ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27+ , srcInfoPoints = []+ }+ 2+ "2")))))))))+ Nothing+ ]+ , []+ )
+ tests/examples/THTypedSplices.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTypedSplices.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}+import Language.Haskell.TH+import THTypedSplices.Defs+main = $$justTH ($$( [|| 2 ||] ))
+ tests/examples/THTypes.hs view
@@ -0,0 +1,11 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE QuasiQuotes #-}+module THTypes where++import Language.Haskell.TH++x :: DecsQ+x = [d| instance Show $(conT (mkName "Int")) |]++unit x = [t| $x |]
+ tests/examples/THTypes.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTypes.hs.parser.golden view
@@ -0,0 +1,363 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 1 1 12 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 1 1 1 1+ , SrcSpan "tests/examples/THTypes.hs" 2 1 2 1+ , SrcSpan "tests/examples/THTypes.hs" 3 1 3 1+ , SrcSpan "tests/examples/THTypes.hs" 4 1 4 1+ , SrcSpan "tests/examples/THTypes.hs" 4 1 4 1+ , SrcSpan "tests/examples/THTypes.hs" 6 1 6 1+ , SrcSpan "tests/examples/THTypes.hs" 8 1 8 1+ , SrcSpan "tests/examples/THTypes.hs" 9 1 9 1+ , SrcSpan "tests/examples/THTypes.hs" 11 1 11 1+ , SrcSpan "tests/examples/THTypes.hs" 12 1 12 1+ , SrcSpan "tests/examples/THTypes.hs" 12 1 12 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 4 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 4 1 4 7+ , SrcSpan "tests/examples/THTypes.hs" 4 16 4 21+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 4 8 4 15+ , srcInfoPoints = []+ }+ "THTypes")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 1 1 1 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 1 1 1 13+ , SrcSpan "tests/examples/THTypes.hs" 1 32 1 35+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 1 14 1 31+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 2 1 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 2 1 2 13+ , SrcSpan "tests/examples/THTypes.hs" 2 30 2 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 2 14 2 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 3 1 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 3 1 3 13+ , SrcSpan "tests/examples/THTypes.hs" 3 26 3 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 3 14 3 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 6 1 6 27+ , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 6 1 6 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 6 8 6 27+ , srcInfoPoints = []+ }+ "Language.Haskell.TH"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 1 8 11+ , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 8 3 8 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 1 8 2+ , srcInfoPoints = []+ }+ "x"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 6 8 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 6 8 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 8 6 8 11+ , srcInfoPoints = []+ }+ "DecsQ")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 1 9 48+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 1 9 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 1 9 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 3 9 48+ , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 9 3 9 4 ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 5 9 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 9 5 9 8+ , SrcSpan "tests/examples/THTypes.hs" 9 46 9 48+ ]+ }+ (DeclBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 5 9 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 9 9 9 9+ , SrcSpan "tests/examples/THTypes.hs" 9 46 9 46+ , SrcSpan "tests/examples/THTypes.hs" 9 46 9 48+ ]+ }+ [ InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 9 9 45+ , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 9 9 9 17 ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 45+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 45+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ "Show")))+ (TySplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 23 9 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 9 23 9 25+ , SrcSpan "tests/examples/THTypes.hs" 9 44 9 45+ ]+ }+ (ParenSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 9 23 9 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 9 23 9 25+ , SrcSpan "tests/examples/THTypes.hs" 9 44 9 45+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 25 9 44+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 25 9 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 25 9 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 25 9 29+ , srcInfoPoints = []+ }+ "conT")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 30 9 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 9 30 9 31+ , SrcSpan "tests/examples/THTypes.hs" 9 43 9 44+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 31 9 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 31 9 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/THTypes.hs" 9 31 9 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/THTypes.hs" 9 31 9 37+ , srcInfoPoints = []+ }+ "mkName")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/THTypes.hs" 9 38 9 43+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/THTypes.hs" 9 38 9 43+ , srcInfoPoints = []+ }+ "Int"+ "Int")))))))))+ Nothing+ ])))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 1 11 19+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 1 11 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 1 11 5+ , srcInfoPoints = []+ }+ "unit")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 6 11 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 6 11 7+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 8 11 19+ , srcInfoPoints = [ SrcSpan "tests/examples/THTypes.hs" 11 8 11 9 ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 10 11 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 11 10 11 13+ , SrcSpan "tests/examples/THTypes.hs" 11 17 11 19+ ]+ }+ (TypeBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 10 11 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/THTypes.hs" 11 10 11 13+ , SrcSpan "tests/examples/THTypes.hs" 11 17 11 19+ ]+ }+ (TySplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 14 11 16+ , srcInfoPoints = []+ }+ (IdSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/THTypes.hs" 11 14 11 16+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/THTypes.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/THTypes.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE QuasiQuotes #-}+module THTypes where+import Language.Haskell.TH++x :: DecsQ+x = [d|+ + instance Show $( conT (mkName "Int") )+ |]+unit x = [t| $x |]
+ tests/examples/TabWhitespace.hs view
@@ -0,0 +1,1 @@+ -- hi
+ tests/examples/TabWhitespace.hs.exactprinter.golden view
@@ -0,0 +1,2 @@+ -- hi+
+ tests/examples/TabWhitespace.hs.parser.golden view
@@ -0,0 +1,19 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+ , SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+ , SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+ , SrcSpan "tests/examples/TabWhitespace.hs" 2 1 2 1+ ]+ }+ Nothing+ []+ []+ []+ , [ Comment+ False (SrcSpan "tests/examples/TabWhitespace.hs" 1 9 1 14) " hi"+ ]+ )
+ tests/examples/TabWhitespace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TabWhitespace.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+
+ tests/examples/TemplateHaskellQuotedNames.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+f = g 'Constructor 'function+h = g '() '[]
+ tests/examples/TemplateHaskellQuotedNames.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TemplateHaskellQuotedNames.hs.parser.golden view
@@ -0,0 +1,246 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 1+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 1+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 4 1 4 1+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 13+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 29+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 3 2 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 3 2 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 29+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6+ , srcInfoPoints = []+ }+ "g")))+ (VarQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 7 2 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 7 2 8 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 8 2 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 8 2 19+ , srcInfoPoints = []+ }+ "Constructor"))))+ (VarQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 20 2 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 20 2 21+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 21 2 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 21 2 29+ , srcInfoPoints = []+ }+ "function")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "h"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 3 3 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 3 3 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 10+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ "g")))+ (VarQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 7 3 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 7 3 8 ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 9+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 9 3 10+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 9+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 9 3 10+ ]+ }))))+ (VarQuote+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 11 3 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 11 3 12+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 13+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 13 3 14+ ]+ }+ (ListCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 13+ , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 13 3 14+ ]+ })))))+ Nothing+ ]+ , []+ )
+ tests/examples/TemplateHaskellQuotedNames.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TemplateHaskellQuotedNames.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TemplateHaskell #-}+f = g 'Constructor 'function+h = g '() '[]
+ tests/examples/TensorTests.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE ConstraintKinds, FlexibleContexts, DataKinds, NoImplicitPrelude,+ RebindableSyntax, ScopedTypeVariables, TypeFamilies, TypeOperators,+ UndecidableInstances #-}++module TensorTests (tensorTests) where++type TMRParams = ( '(,) <$> Tensors) <*> MRCombos+tmrParams :: Proxy TMRParams+tmrParams = Proxy++--type ExtParams = ( '(,) <$> Tensors) <*> MRExtCombos+type TrEmParams = ( '(,) <$> Tensors) <*> MM'RCombos+tremParams :: Proxy TrEmParams+tremParams = Proxy++type NormParams = ( '(,) <$> '[RT]) <*> (Filter Liftable MRCombos)++--data Liftable :: TyFun (Factored, *) Bool -> *+type instance Apply Liftable '(m,zq) = Int64 :== (LiftOf zq)+
+ tests/examples/TensorTests.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TensorTests.hs.parser.golden view
@@ -0,0 +1,965 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 1 21 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 1 1 1 1+ , SrcSpan "tests/examples/TensorTests.hs" 5 1 5 1+ , SrcSpan "tests/examples/TensorTests.hs" 5 1 5 1+ , SrcSpan "tests/examples/TensorTests.hs" 7 1 7 1+ , SrcSpan "tests/examples/TensorTests.hs" 8 1 8 1+ , SrcSpan "tests/examples/TensorTests.hs" 9 1 9 1+ , SrcSpan "tests/examples/TensorTests.hs" 12 1 12 1+ , SrcSpan "tests/examples/TensorTests.hs" 13 1 13 1+ , SrcSpan "tests/examples/TensorTests.hs" 14 1 14 1+ , SrcSpan "tests/examples/TensorTests.hs" 16 1 16 1+ , SrcSpan "tests/examples/TensorTests.hs" 19 1 19 1+ , SrcSpan "tests/examples/TensorTests.hs" 21 1 21 1+ , SrcSpan "tests/examples/TensorTests.hs" 21 1 21 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 1 5 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 5 1 5 7+ , SrcSpan "tests/examples/TensorTests.hs" 5 34 5 39+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 8 5 19+ , srcInfoPoints = []+ }+ "TensorTests")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 20 5 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 5 20 5 21+ , SrcSpan "tests/examples/TensorTests.hs" 5 32 5 33+ ]+ }+ [ EVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 21 5 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 21 5 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 5 21 5 32+ , srcInfoPoints = []+ }+ "tensorTests"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 1 3 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 1 1 1 13+ , SrcSpan "tests/examples/TensorTests.hs" 1 29 1 30+ , SrcSpan "tests/examples/TensorTests.hs" 1 47 1 48+ , SrcSpan "tests/examples/TensorTests.hs" 1 58 1 59+ , SrcSpan "tests/examples/TensorTests.hs" 1 77 1 78+ , SrcSpan "tests/examples/TensorTests.hs" 2 30 2 31+ , SrcSpan "tests/examples/TensorTests.hs" 2 51 2 52+ , SrcSpan "tests/examples/TensorTests.hs" 2 65 2 66+ , SrcSpan "tests/examples/TensorTests.hs" 2 80 2 81+ , SrcSpan "tests/examples/TensorTests.hs" 3 35 3 38+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "ConstraintKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 31 1 47+ , srcInfoPoints = []+ }+ "FlexibleContexts"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 49 1 58+ , srcInfoPoints = []+ }+ "DataKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 1 60 1 77+ , srcInfoPoints = []+ }+ "NoImplicitPrelude"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 14 2 30+ , srcInfoPoints = []+ }+ "RebindableSyntax"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 32 2 51+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 53 2 65+ , srcInfoPoints = []+ }+ "TypeFamilies"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 2 67 2 80+ , srcInfoPoints = []+ }+ "TypeOperators"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 3 14 3 34+ , srcInfoPoints = []+ }+ "UndecidableInstances"+ ]+ ]+ []+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 1 7 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 7 1 7 5+ , SrcSpan "tests/examples/TensorTests.hs" 7 16 7 17+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 6 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 6 7 15+ , srcInfoPoints = []+ }+ "TMRParams"))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 18 7 50+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 18 7 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 7 18 7 19+ , SrcSpan "tests/examples/TensorTests.hs" 7 36 7 37+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 20 7 36+ , srcInfoPoints = []+ }+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 20 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 7 20 7 21 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 20 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 7 20 7 21 ]+ }+ True+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 21 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 7 21 7 22+ , SrcSpan "tests/examples/TensorTests.hs" 7 22 7 23+ , SrcSpan "tests/examples/TensorTests.hs" 7 23 7 24+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 21 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 7 21 7 22+ , SrcSpan "tests/examples/TensorTests.hs" 7 22 7 23+ , SrcSpan "tests/examples/TensorTests.hs" 7 23 7 24+ ]+ }+ Boxed+ 2))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 25 7 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 25 7 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 25 7 28+ , srcInfoPoints = []+ }+ "<$>")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 29 7 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 29 7 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 29 7 36+ , srcInfoPoints = []+ }+ "Tensors")))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 38 7 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 38 7 41+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 38 7 41+ , srcInfoPoints = []+ }+ "<*>")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 42 7 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 42 7 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 7 42 7 50+ , srcInfoPoints = []+ }+ "MRCombos"))))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 1 8 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 8 11 8 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 1 8 10+ , srcInfoPoints = []+ }+ "tmrParams"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ "Proxy")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 20 8 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 20 8 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 8 20 8 29+ , srcInfoPoints = []+ }+ "TMRParams"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 1 9 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 1 9 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 1 9 10+ , srcInfoPoints = []+ }+ "tmrParams"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 11 9 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 9 11 9 12 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 13 9 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 13 9 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 9 13 9 18+ , srcInfoPoints = []+ }+ "Proxy"))))+ Nothing+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 1 12 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 12 1 12 5+ , SrcSpan "tests/examples/TensorTests.hs" 12 17 12 18+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 6 12 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 6 12 16+ , srcInfoPoints = []+ }+ "TrEmParams"))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 19 12 53+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 19 12 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 12 19 12 20+ , SrcSpan "tests/examples/TensorTests.hs" 12 37 12 38+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 21 12 37+ , srcInfoPoints = []+ }+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 21 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 12 21 12 22 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 21 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 12 21 12 22 ]+ }+ True+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 22 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 12 22 12 23+ , SrcSpan "tests/examples/TensorTests.hs" 12 23 12 24+ , SrcSpan "tests/examples/TensorTests.hs" 12 24 12 25+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 22 12 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 12 22 12 23+ , SrcSpan "tests/examples/TensorTests.hs" 12 23 12 24+ , SrcSpan "tests/examples/TensorTests.hs" 12 24 12 25+ ]+ }+ Boxed+ 2))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 26 12 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 26 12 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 26 12 29+ , srcInfoPoints = []+ }+ "<$>")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 30 12 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 30 12 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 30 12 37+ , srcInfoPoints = []+ }+ "Tensors")))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 39 12 42+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 39 12 42+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 39 12 42+ , srcInfoPoints = []+ }+ "<*>")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 43 12 53+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 43 12 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 12 43 12 53+ , srcInfoPoints = []+ }+ "MM'RCombos"))))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 1 13 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 13 12 13 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 1 13 11+ , srcInfoPoints = []+ }+ "tremParams"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 31+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 15 13 20+ , srcInfoPoints = []+ }+ "Proxy")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 21 13 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 21 13 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 13 21 13 31+ , srcInfoPoints = []+ }+ "TrEmParams"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 1 14 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 1 14 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 1 14 11+ , srcInfoPoints = []+ }+ "tremParams"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 12 14 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 14 12 14 13 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 14 14 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 14 14 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 14 14 14 19+ , srcInfoPoints = []+ }+ "Proxy"))))+ Nothing+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 1 16 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 1 16 5+ , SrcSpan "tests/examples/TensorTests.hs" 16 17 16 18+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 6 16 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 6 16 16+ , srcInfoPoints = []+ }+ "NormParams"))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 19 16 67+ , srcInfoPoints = []+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 19 16 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 19 16 20+ , SrcSpan "tests/examples/TensorTests.hs" 16 35 16 36+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 21 16 35+ , srcInfoPoints = []+ }+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 21 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 21 16 22 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 21 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 21 16 22 ]+ }+ True+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 22 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 22 16 23+ , SrcSpan "tests/examples/TensorTests.hs" 16 23 16 24+ , SrcSpan "tests/examples/TensorTests.hs" 16 24 16 25+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 22 16 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 22 16 23+ , SrcSpan "tests/examples/TensorTests.hs" 16 23 16 24+ , SrcSpan "tests/examples/TensorTests.hs" 16 24 16 25+ ]+ }+ Boxed+ 2))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 26 16 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 26 16 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 26 16 29+ , srcInfoPoints = []+ }+ "<$>")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 30 16 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 30 16 31+ , SrcSpan "tests/examples/TensorTests.hs" 16 34 16 35+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 30 16 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 30 16 31+ , SrcSpan "tests/examples/TensorTests.hs" 16 34 16 35+ ]+ }+ True+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 32 16 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TensorTests.hs" 16 32 16 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TensorTests.hs" 16 32 16 34+ , srcInfoPoints = []+ }+ "RT"))+ ]))))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 37 16 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 37 16 40+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 37 16 40+ , srcInfoPoints = []+ }+ "<*>")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 41 16 67+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 16 41 16 42+ , SrcSpan "tests/examples/TensorTests.hs" 16 66 16 67+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 66+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 57+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 42 16 48+ , srcInfoPoints = []+ }+ "Filter")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 49 16 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 49 16 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 49 16 57+ , srcInfoPoints = []+ }+ "Liftable"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 58 16 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 58 16 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 16 58 16 66+ , srcInfoPoints = []+ }+ "MRCombos"))))))+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 1 19 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 19 1 19 5+ , SrcSpan "tests/examples/TensorTests.hs" 19 6 19 14+ , SrcSpan "tests/examples/TensorTests.hs" 19 38 19 39+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 37+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 29+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 15 19 20+ , srcInfoPoints = []+ }+ "Apply")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 21 19 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 21 19 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 21 19 29+ , srcInfoPoints = []+ }+ "Liftable"))))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 30 19 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 19 30 19 31+ , SrcSpan "tests/examples/TensorTests.hs" 19 33 19 34+ , SrcSpan "tests/examples/TensorTests.hs" 19 36 19 37+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 30 19 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 19 30 19 31+ , SrcSpan "tests/examples/TensorTests.hs" 19 33 19 34+ , SrcSpan "tests/examples/TensorTests.hs" 19 36 19 37+ ]+ }+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 32 19 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 32 19 33+ , srcInfoPoints = []+ }+ "m")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 34 19 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 34 19 36+ , srcInfoPoints = []+ }+ "zq")+ ])))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 61+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 45+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 40 19 45+ , srcInfoPoints = []+ }+ "Int64")))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 46 19 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 46 19 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 46 19 49+ , srcInfoPoints = []+ }+ ":==")))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 50 19 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TensorTests.hs" 19 50 19 51+ , SrcSpan "tests/examples/TensorTests.hs" 19 60 19 61+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 60+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 57+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 57+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 51 19 57+ , srcInfoPoints = []+ }+ "LiftOf")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 58 19 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TensorTests.hs" 19 58 19 60+ , srcInfoPoints = []+ }+ "zq")))))+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/TensorTests.hs" 11 1 11 55)+ "type ExtParams = ( '(,) <$> Tensors) <*> MRExtCombos"+ , Comment+ False+ (SrcSpan "tests/examples/TensorTests.hs" 18 1 18 49)+ "data Liftable :: TyFun (Factored, *) Bool -> *"+ ]+ )
+ tests/examples/TensorTests.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TensorTests.hs.prettyprinter.golden view
@@ -0,0 +1,18 @@+{-# LANGUAGE ConstraintKinds, FlexibleContexts, DataKinds,+ NoImplicitPrelude, RebindableSyntax, ScopedTypeVariables,+ TypeFamilies, TypeOperators, UndecidableInstances #-}+module TensorTests (tensorTests) where++type TMRParams = ('(,) <$> Tensors) <*> MRCombos++tmrParams :: Proxy TMRParams+tmrParams = Proxy++type TrEmParams = ('(,) <$> Tensors) <*> MM'RCombos++tremParams :: Proxy TrEmParams+tremParams = Proxy++type NormParams = ('(,) <$> '[RT]) <*> (Filter Liftable MRCombos)++type instance Apply Liftable '(m, zq) = Int64 :== (LiftOf zq)
+ tests/examples/Testing.hs view
@@ -0,0 +1,2 @@+{-# LINE 5 "templates\GenericTemplate.hs" #-}+main = return ()
+ tests/examples/Testing.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Testing.hs.parser.golden view
@@ -0,0 +1,89 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Testing.hs" 2 1 2 1+ , SrcSpan "tests/examples/Testing.hs" 2 1 2 1+ , SrcSpan "tests/examples/Testing.hs" 2 1 2 1+ , SrcSpan "tests/examples/Testing.hs" 3 1 3 1+ , SrcSpan "tests/examples/Testing.hs" 3 1 3 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 2 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 2 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 1 2 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 6 2 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Testing.hs" 2 6 2 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 8 2 14+ , srcInfoPoints = []+ }+ "return")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 15 2 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Testing.hs" 2 15 2 16+ , SrcSpan "tests/examples/Testing.hs" 2 16 2 17+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 15 2 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Testing.hs" 2 15 2 16+ , SrcSpan "tests/examples/Testing.hs" 2 16 2 17+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Testing.hs" 2 15 2 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Testing.hs" 2 15 2 16+ , SrcSpan "tests/examples/Testing.hs" 2 16 2 17+ ]+ })))))+ Nothing+ ]+ , [ Comment+ True+ (SrcSpan "tests/examples/Testing.hs" 1 1 1 46)+ "# LINE 5 \"templates\\GenericTemplate.hs\" #"+ ]+ )
+ tests/examples/Testing.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Testing.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+main = return ()
+ tests/examples/TrailingWhere.hs view
@@ -0,0 +1,5 @@+fail = x+ where+ broken = 24+ where+ x = 413
+ tests/examples/TrailingWhere.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere.hs.parser.golden view
@@ -0,0 +1,148 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 6 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere.hs" 6 1 6 0+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 5 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 2 5 2 10 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ "fail"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 6 1 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 1 6 1 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ "x"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 5 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 3 5 3 5+ , SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 5+ , SrcSpan "tests/examples/TrailingWhere.hs" 6 1 6 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 5 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 4 9 4 14 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 5 3 11+ , srcInfoPoints = []+ }+ "broken"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 12 3 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 3 12 3 13 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 14 3 16+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 3 14 3 16+ , srcInfoPoints = []+ }+ 24+ "24")))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 0 5 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 5+ , SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 5+ , SrcSpan "tests/examples/TrailingWhere.hs" 5 0 5 0+ ]+ }+ []))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 12+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 5 5 6+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 7 5 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere.hs" 5 7 5 8 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 9 5 12+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere.hs" 5 9 5 12+ , srcInfoPoints = []+ }+ 413+ "413")))+ Nothing+ ]))+ ]+ , []+ )
+ tests/examples/TrailingWhere.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+fail = x+ where broken = 24+ where+ x = 413
+ tests/examples/TrailingWhere2.hs view
@@ -0,0 +1,6 @@+data Baz = Baz++instance Show Baz where+ show _ = ""+ where+ show _ = ""
+ tests/examples/TrailingWhere2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere2.hs.parser.golden view
@@ -0,0 +1,231 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 7 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere2.hs" 3 1 3 1+ , SrcSpan "tests/examples/TrailingWhere2.hs" 7 1 7 0+ ]+ }+ Nothing+ []+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere2.hs" 1 10 1 11 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 1 1 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ "Baz"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 1 12 1 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 1 12 1 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 1 12 1 15+ , srcInfoPoints = []+ }+ "Baz")+ [])+ ]+ []+ , InstDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 3 1 7 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere2.hs" 3 1 3 9+ , SrcSpan "tests/examples/TrailingWhere2.hs" 3 19 3 24+ , SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 4 3+ , SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 3+ , SrcSpan "tests/examples/TrailingWhere2.hs" 7 1 7 0+ ]+ }+ Nothing+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 18+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 18+ , srcInfoPoints = []+ }+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 10 3 14+ , srcInfoPoints = []+ }+ "Show")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 15 3 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 15 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 3 15 3 18+ , srcInfoPoints = []+ }+ "Baz")))))+ (Just+ [ InsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 6 14+ , srcInfoPoints = []+ }+ (FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 6 14+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 6 3+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere2.hs" 5 5 5 10 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 3 4 7+ , srcInfoPoints = []+ }+ "show")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 4 10 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere2.hs" 4 10 4 11 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 4 12 4 14+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 4 12 4 14+ , srcInfoPoints = []+ }+ ""+ "")))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 0 6 3+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 3+ , SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 3+ , SrcSpan "tests/examples/TrailingWhere2.hs" 6 0 6 0+ ]+ }+ []))+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 3 6 7+ , srcInfoPoints = []+ }+ "show")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere2.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 6 10 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere2.hs" 6 10 6 11 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 6 12 6 14+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere2.hs" 6 12 6 14+ , srcInfoPoints = []+ }+ ""+ "")))+ Nothing+ ])+ ])+ ]+ , []+ )
+ tests/examples/TrailingWhere2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere2.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+data Baz = Baz++instance Show Baz where+ show _ = ""+ where+ show _ = ""
+ tests/examples/TrailingWhere3.hs view
@@ -0,0 +1,3 @@+main = f where+ f = g where+ g = putStrLn "hello world"
+ tests/examples/TrailingWhere3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere3.hs.parser.golden view
@@ -0,0 +1,178 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 4 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 1+ , SrcSpan "tests/examples/TrailingWhere3.hs" 4 1 4 0+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 3 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 1 10 1 15 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 6 1 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 1 6 1 7 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 1 8 1 9+ , srcInfoPoints = []+ }+ "f"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 3 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 2 5+ , SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 5+ , SrcSpan "tests/examples/TrailingWhere3.hs" 4 1 4 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 3 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 2 11 2 16 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 2 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 5 2 6+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 7 2 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 2 7 2 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere3.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ "g"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 0 3 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 5+ , SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 5+ , SrcSpan "tests/examples/TrailingWhere3.hs" 3 0 3 0+ ]+ }+ []))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 31+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ "g"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 7 3 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TrailingWhere3.hs" 3 7 3 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere3.hs" 3 9 3 17+ , srcInfoPoints = []+ }+ "putStrLn")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere3.hs" 3 18 3 31+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TrailingWhere3.hs" 3 18 3 31+ , srcInfoPoints = []+ }+ "hello world"+ "hello world"))))+ Nothing+ ]))+ ]+ , []+ )
+ tests/examples/TrailingWhere3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TrailingWhere3.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+main = f+ where f = g+ where+ g = putStrLn "hello world"
+ tests/examples/TupleSections.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TupleSections #-}++foo x = (1,,) x 3
+ tests/examples/TupleSections.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TupleSections.hs.parser.golden view
@@ -0,0 +1,138 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TupleSections.hs" 1 1 1 1+ , SrcSpan "tests/examples/TupleSections.hs" 3 1 3 1+ , SrcSpan "tests/examples/TupleSections.hs" 3 1 3 1+ , SrcSpan "tests/examples/TupleSections.hs" 3 1 3 1+ , SrcSpan "tests/examples/TupleSections.hs" 4 1 4 1+ , SrcSpan "tests/examples/TupleSections.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TupleSections.hs" 1 1 1 13+ , SrcSpan "tests/examples/TupleSections.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TupleSections"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 1 3 18+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 1 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 7 3 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TupleSections.hs" 3 7 3 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 9 3 18+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 9 3 16+ , srcInfoPoints = []+ }+ (TupleSection+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 9 3 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TupleSections.hs" 3 9 3 10+ , SrcSpan "tests/examples/TupleSections.hs" 3 11 3 12+ , SrcSpan "tests/examples/TupleSections.hs" 3 12 3 13+ , SrcSpan "tests/examples/TupleSections.hs" 3 13 3 14+ ]+ }+ Boxed+ [ Just+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TupleSections.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TupleSections.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ 1+ "1"))+ , Nothing+ , Nothing+ ])+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TupleSections.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ "x"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TupleSections.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ 3+ "3"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/TupleSections.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TupleSections.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE TupleSections #-}+foo x = (1, ,) x 3
+ tests/examples/TyQuasiQuote.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes, TemplateHaskell #-}+f :: [qq| something in here |]+f = ()
+ tests/examples/TyQuasiQuote.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TyQuasiQuote.hs.parser.golden view
@@ -0,0 +1,109 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 1 1+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 1+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 1+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 1+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 1+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 4 1 4 1+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 1 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TyQuasiQuote.hs" 1 1 1 13+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 1 25 1 26+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 1 43 1 46+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 1 27 1 42+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TyQuasiQuote.hs" 2 3 2 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyQuasiQuote+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 2 6 2 31+ , srcInfoPoints = []+ }+ "qq"+ " something in here ")+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 7+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 3 3 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 3 3 4 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 6+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 6 3 7+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 6+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 6 3 7+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TyQuasiQuote.hs" 3 5 3 6+ , SrcSpan "tests/examples/TyQuasiQuote.hs" 3 6 3 7+ ]+ }))))+ Nothing+ ]+ , []+ )
+ tests/examples/TyQuasiQuote.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TyQuasiQuote.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE QuasiQuotes, TemplateHaskell #-}++f :: [qq| something in here |]+f = ()
+ tests/examples/TySplice.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}++[| f :: $ty |]+[| f :: $(fun ty) |]
+ tests/examples/TySplice.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice.hs.parser.golden view
@@ -0,0 +1,191 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 1 1 1 1+ , SrcSpan "tests/examples/TySplice.hs" 3 1 3 1+ , SrcSpan "tests/examples/TySplice.hs" 3 1 3 1+ , SrcSpan "tests/examples/TySplice.hs" 3 1 3 1+ , SrcSpan "tests/examples/TySplice.hs" 4 1 4 1+ , SrcSpan "tests/examples/TySplice.hs" 5 1 5 1+ , SrcSpan "tests/examples/TySplice.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 1 1 1 13+ , SrcSpan "tests/examples/TySplice.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ []+ [ SpliceDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 1 3 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 3 1 3 3+ , SrcSpan "tests/examples/TySplice.hs" 3 13 3 15+ ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 1 3 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 3 1 3 3+ , SrcSpan "tests/examples/TySplice.hs" 3 13 3 15+ ]+ }+ (ExpBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 1 3 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 3 1 3 3+ , SrcSpan "tests/examples/TySplice.hs" 3 13 3 15+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 12+ , srcInfoPoints = [ SrcSpan "tests/examples/TySplice.hs" 3 6 3 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 5+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 4 3 5+ , srcInfoPoints = []+ }+ "f")))+ (TySplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ (IdSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 3 9 3 12+ , srcInfoPoints = []+ }+ "ty")))))+ , SpliceDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 4 1 4 3+ , SrcSpan "tests/examples/TySplice.hs" 4 19 4 21+ ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 4 1 4 3+ , SrcSpan "tests/examples/TySplice.hs" 4 19 4 21+ ]+ }+ (ExpBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 4 1 4 3+ , SrcSpan "tests/examples/TySplice.hs" 4 19 4 21+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 18+ , srcInfoPoints = [ SrcSpan "tests/examples/TySplice.hs" 4 6 4 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 5+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 4 4 5+ , srcInfoPoints = []+ }+ "f")))+ (TySplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 9 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 4 9 4 11+ , SrcSpan "tests/examples/TySplice.hs" 4 17 4 18+ ]+ }+ (ParenSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 9 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice.hs" 4 9 4 11+ , SrcSpan "tests/examples/TySplice.hs" 4 17 4 18+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 11 4 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TySplice.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ "fun")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 15 4 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice.hs" 4 15 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TySplice.hs" 4 15 4 17+ , srcInfoPoints = []+ }+ "ty")))))))))+ ]+ , []+ )
+ tests/examples/TySplice.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TemplateHaskell #-}++[| f :: $ty |]++[| f :: $( fun ty ) |]
+ tests/examples/TySplice2.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}+t1 :: $( [t|Int|] )+t1 = 1+
+ tests/examples/TySplice2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice2.hs.parser.golden view
@@ -0,0 +1,129 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice2.hs" 1 1 1 1+ , SrcSpan "tests/examples/TySplice2.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice2.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice2.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice2.hs" 3 1 3 1+ , SrcSpan "tests/examples/TySplice2.hs" 5 1 5 1+ , SrcSpan "tests/examples/TySplice2.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice2.hs" 1 1 1 13+ , SrcSpan "tests/examples/TySplice2.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 1 2 20+ , srcInfoPoints = [ SrcSpan "tests/examples/TySplice2.hs" 2 4 2 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 1 2 3+ , srcInfoPoints = []+ }+ "t1"+ ]+ (TySplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 7 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice2.hs" 2 7 2 9+ , SrcSpan "tests/examples/TySplice2.hs" 2 19 2 20+ ]+ }+ (ParenSplice+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 7 2 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice2.hs" 2 7 2 9+ , SrcSpan "tests/examples/TySplice2.hs" 2 19 2 20+ ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 10 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice2.hs" 2 10 2 13+ , SrcSpan "tests/examples/TySplice2.hs" 2 16 2 18+ ]+ }+ (TypeBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 10 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice2.hs" 2 10 2 13+ , SrcSpan "tests/examples/TySplice2.hs" 2 16 2 18+ ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 13 2 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 13 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 2 13 2 16+ , srcInfoPoints = []+ }+ "Int")))))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 1 3 7+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 1 3 3+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 1 3 3+ , srcInfoPoints = []+ }+ "t1"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 4 3 7+ , srcInfoPoints = [ SrcSpan "tests/examples/TySplice2.hs" 3 4 3 5 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice2.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ ]+ , []+ )
+ tests/examples/TySplice2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice2.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TemplateHaskell #-}++t1 :: $( [t| Int |] )+t1 = 1
+ tests/examples/TySplice3.hs view
@@ -0,0 +1,2 @@+{-# LANGUAGE QuasiQuotes #-}+[qq| abc |]
+ tests/examples/TySplice3.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice3.hs.parser.golden view
@@ -0,0 +1,46 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice3.hs" 1 1 1 1+ , SrcSpan "tests/examples/TySplice3.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice3.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice3.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice3.hs" 3 1 3 1+ , SrcSpan "tests/examples/TySplice3.hs" 3 1 3 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 1 1 1 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice3.hs" 1 1 1 13+ , SrcSpan "tests/examples/TySplice3.hs" 1 26 1 29+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 1 14 1 25+ , srcInfoPoints = []+ }+ "QuasiQuotes"+ ]+ ]+ []+ [ SpliceDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 2 1 2 12+ , srcInfoPoints = []+ }+ (QuasiQuote+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice3.hs" 2 1 2 12+ , srcInfoPoints = []+ }+ "qq"+ " abc ")+ ]+ , []+ )
+ tests/examples/TySplice3.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice3.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE QuasiQuotes #-}++[qq| abc |]
+ tests/examples/TySplice4.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TemplateHaskell #-}+x = [d| f :: a -> Int+ f x = 1 |]++y = [d| f2 :: a -> Int; f2 x = 1 |]
+ tests/examples/TySplice4.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice4.hs.parser.golden view
@@ -0,0 +1,309 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 1 1 1 1+ , SrcSpan "tests/examples/TySplice4.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice4.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice4.hs" 2 1 2 1+ , SrcSpan "tests/examples/TySplice4.hs" 5 1 5 1+ , SrcSpan "tests/examples/TySplice4.hs" 6 1 6 1+ , SrcSpan "tests/examples/TySplice4.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 1 1 1 13+ , SrcSpan "tests/examples/TySplice4.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "TemplateHaskell"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 1 3 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "x"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 3 3 19+ , srcInfoPoints = [ SrcSpan "tests/examples/TySplice4.hs" 2 3 2 4 ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 5 3 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 2 5 2 8+ , SrcSpan "tests/examples/TySplice4.hs" 3 9 3 9+ , SrcSpan "tests/examples/TySplice4.hs" 3 17 3 19+ ]+ }+ (DeclBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 5 3 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 2 9 2 9+ , SrcSpan "tests/examples/TySplice4.hs" 3 9 3 9+ , SrcSpan "tests/examples/TySplice4.hs" 3 17 3 17+ , SrcSpan "tests/examples/TySplice4.hs" 3 17 3 19+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 9 2 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 2 11 2 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 9 2 10+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 14 2 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 2 16 2 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 14 2 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 14 2 15+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 19 2 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 19 2 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 2 19 2 22+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 9 3 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 9 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 11 3 12+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 13 3 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 3 13 3 14 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TySplice4.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ ]+ ])))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 1 5 36+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 1 5 2+ , srcInfoPoints = []+ }+ "y"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 3 5 36+ , srcInfoPoints = [ SrcSpan "tests/examples/TySplice4.hs" 5 3 5 4 ]+ }+ (BracketExp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 5 5 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 5 5 5 8+ , SrcSpan "tests/examples/TySplice4.hs" 5 23 5 24+ , SrcSpan "tests/examples/TySplice4.hs" 5 34 5 36+ ]+ }+ (DeclBracket+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 5 5 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 5 9 5 9+ , SrcSpan "tests/examples/TySplice4.hs" 5 23 5 24+ , SrcSpan "tests/examples/TySplice4.hs" 5 34 5 34+ , SrcSpan "tests/examples/TySplice4.hs" 5 34 5 36+ ]+ }+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 9 5 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 5 12 5 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 9 5 11+ , srcInfoPoints = []+ }+ "f2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 15 5 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 5 17 5 19 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 15 5 16+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 20 5 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 20 5 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 20 5 23+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 25 5 33+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 25 5 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 25 5 27+ , srcInfoPoints = []+ }+ "f2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 28 5 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 28 5 29+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 30 5 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TySplice4.hs" 5 30 5 31 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TySplice4.hs" 5 32 5 33+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TySplice4.hs" 5 32 5 33+ , srcInfoPoints = []+ }+ 1+ "1")))+ Nothing+ ]+ ])))+ Nothing+ ]+ , []+ )
+ tests/examples/TySplice4.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TySplice4.hs.prettyprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE TemplateHaskell #-}+x = [d|+ + f :: a -> Int+ f x = 1 |]+y = [d|+ + f2 :: a -> Int+ f2 x = 1 |]
+ tests/examples/TypeEqualityParen.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeFamilies #-}+f :: ( Eq a, (a ~ Int) ) => a -> Int+f _ = 3
+ tests/examples/TypeEqualityParen.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeEqualityParen.hs.parser.golden view
@@ -0,0 +1,260 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 1 1+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 1+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 1+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 1+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 4 1 4 1+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 1 1 1 13+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 3 2 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 6 2 37+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 6 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 6 2 7+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 12 2 13+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 24 2 25+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 26 2 28+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10+ , srcInfoPoints = []+ }+ "Eq")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12+ , srcInfoPoints = []+ }+ "a")))+ , ParenA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 14 2 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 14 2 15+ , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 22 2 23+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22+ , srcInfoPoints = []+ }+ "Int")))))+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 29 2 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 31 2 33 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 29 2 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 29 2 30+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 34 2 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 34 2 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 34 2 37+ , srcInfoPoints = []+ }+ "Int")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 8+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 3 3 4+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 5 3 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 5 3 6 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 7 3 8+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeEqualityParen.hs" 3 7 3 8+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/TypeEqualityParen.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeEqualityParen.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}++f :: (Eq a, (a ~ Int)) => a -> Int+f _ = 3
+ tests/examples/TypeErrorMessage.hs view
@@ -0,0 +1,1 @@+newtype PoC = PoC (forall b . b)
+ tests/examples/TypeErrorMessage.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1) "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeErrorMessage.hs.parser.golden view
@@ -0,0 +1,3 @@+ParseFailed+ (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1)+ "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeErrorMessage.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1) "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeErrorMessage.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/TypeErrorMessage.hs" 2 1) "At least one of ExplicitForAll or TypeOperators language extensions needs to be enabled. Please add: {-# LANGUAGE ExplicitForAll #-} or {-# LANGUAGE TypeOperators #-} language pragma at the top of your module."
+ tests/examples/TypeFunctions.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE TypeFamilies, KindSignatures #-}++data Id = Id++type family Rep (f :: * -> *) x :: *++type instance Rep Id x = x
+ tests/examples/TypeFunctions.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeFunctions.hs.parser.golden view
@@ -0,0 +1,244 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 1 1 1 1+ , SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeFunctions.hs" 5 1 5 1+ , SrcSpan "tests/examples/TypeFunctions.hs" 7 1 7 1+ , SrcSpan "tests/examples/TypeFunctions.hs" 8 1 8 1+ , SrcSpan "tests/examples/TypeFunctions.hs" 8 1 8 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 1 1 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 1 1 1 13+ , SrcSpan "tests/examples/TypeFunctions.hs" 1 26 1 27+ , SrcSpan "tests/examples/TypeFunctions.hs" 1 43 1 46+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 1 28 1 42+ , srcInfoPoints = []+ }+ "KindSignatures"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 3 9 3 10 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 6 3 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 6 3 8+ , srcInfoPoints = []+ }+ "Id"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 11 3 13+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 11 3 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 3 11 3 13+ , srcInfoPoints = []+ }+ "Id")+ [])+ ]+ []+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 1 5 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 5 1 5 5+ , SrcSpan "tests/examples/TypeFunctions.hs" 5 6 5 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 32+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 30+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 13 5 16+ , srcInfoPoints = []+ }+ "Rep"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 17 5 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 5 17 5 18+ , SrcSpan "tests/examples/TypeFunctions.hs" 5 20 5 22+ , SrcSpan "tests/examples/TypeFunctions.hs" 5 29 5 30+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ "f")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 23 5 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 5 25 5 27 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 23 5 24+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 28 5 29+ , srcInfoPoints = []+ }))))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 31 5 32+ , srcInfoPoints = []+ }+ "x")))+ (Just+ (KindSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 33 5 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 5 33 5 35 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 36 5 37+ , srcInfoPoints = []+ })))+ Nothing+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 1 7 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeFunctions.hs" 7 1 7 5+ , SrcSpan "tests/examples/TypeFunctions.hs" 7 6 7 14+ , SrcSpan "tests/examples/TypeFunctions.hs" 7 24 7 25+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 23+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 15 7 18+ , srcInfoPoints = []+ }+ "Rep")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 19 7 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 19 7 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 19 7 21+ , srcInfoPoints = []+ }+ "Id"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 22 7 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 22 7 23+ , srcInfoPoints = []+ }+ "x")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 26 7 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 7 26 7 27+ , srcInfoPoints = []+ }+ "x"))+ ]+ , []+ )
+ tests/examples/TypeFunctions.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeFunctions.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE TypeFamilies, KindSignatures #-}++data Id = Id++type family Rep (f :: * -> *) x :: *++type instance Rep Id x = x
+ tests/examples/TypeInstances.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE TypeFamilies #-}++class MapType v where+ type Key v :: *+ type instance Key v = TileKey v++ type Source v :: *
+ tests/examples/TypeInstances.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeInstances.hs.parser.golden view
@@ -0,0 +1,249 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 1 1 1 1+ , SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeInstances.hs" 8 1 8 1+ , SrcSpan "tests/examples/TypeInstances.hs" 8 1 8 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 1 1 1 13+ , SrcSpan "tests/examples/TypeInstances.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ ]+ []+ [ ClassDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 1 7 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 3 1 3 6+ , SrcSpan "tests/examples/TypeInstances.hs" 3 17 3 22+ , SrcSpan "tests/examples/TypeInstances.hs" 4 3 4 3+ , SrcSpan "tests/examples/TypeInstances.hs" 5 3 5 3+ , SrcSpan "tests/examples/TypeInstances.hs" 7 3 7 3+ , SrcSpan "tests/examples/TypeInstances.hs" 8 1 8 0+ ]+ }+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 7 3 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 7 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 7 3 14+ , srcInfoPoints = []+ }+ "MapType"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ "v")))+ []+ (Just+ [ ClsTyFam+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 3 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 4 3 4 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 8 4 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 8 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 8 4 11+ , srcInfoPoints = []+ }+ "Key"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ "v")))+ (Just+ (KindSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 14 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 4 14 4 16 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 17 4 18+ , srcInfoPoints = []+ })))+ Nothing+ , ClsTyDef+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 3 5 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 5 3 5 7+ , SrcSpan "tests/examples/TypeInstances.hs" 5 8 5 16+ ]+ }+ (TypeEqn+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 5 23 5 24 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 22+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeInstances.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ "Key")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 21 5 22+ , srcInfoPoints = []+ }+ "v")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 34+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeInstances.hs" 5 25 5 32+ , srcInfoPoints = []+ }+ "TileKey")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 33 5 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 5 33 5 34+ , srcInfoPoints = []+ }+ "v"))))+ , ClsTyFam+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 3 7 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 7 3 7 7 ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 8 7 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 8 7 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 8 7 14+ , srcInfoPoints = []+ }+ "Source"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 15 7 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 15 7 16+ , srcInfoPoints = []+ }+ "v")))+ (Just+ (KindSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 17 7 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeInstances.hs" 7 17 7 19 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 20 7 21+ , srcInfoPoints = []+ })))+ Nothing+ ])+ ]+ , []+ )
+ tests/examples/TypeInstances.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeInstances.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeFamilies #-}++class MapType v where+ type Key v :: *+ type Key v = TileKey v+ type Source v :: *
+ tests/examples/TypeListCons.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE DataKinds, TypeOperators #-}++module TypeListCons where++type List1 a = a ': '[]+type List2 a b = a ': '[]+type List3 a b c = a ': b ': c ': '[]
+ tests/examples/TypeListCons.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeListCons.hs.parser.golden view
@@ -0,0 +1,426 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 1 1 1 1+ , SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeListCons.hs" 5 1 5 1+ , SrcSpan "tests/examples/TypeListCons.hs" 6 1 6 1+ , SrcSpan "tests/examples/TypeListCons.hs" 7 1 7 1+ , SrcSpan "tests/examples/TypeListCons.hs" 8 1 8 1+ , SrcSpan "tests/examples/TypeListCons.hs" 8 1 8 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 3 1 3 7+ , SrcSpan "tests/examples/TypeListCons.hs" 3 21 3 26+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 3 8 3 20+ , srcInfoPoints = []+ }+ "TypeListCons")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 1 1 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 1 1 1 13+ , SrcSpan "tests/examples/TypeListCons.hs" 1 23 1 24+ , SrcSpan "tests/examples/TypeListCons.hs" 1 39 1 42+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "DataKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 1 25 1 38+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ ]+ []+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 1 5 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 5 1 5 5+ , SrcSpan "tests/examples/TypeListCons.hs" 5 14 5 15+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 6 5 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 6 5 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 6 5 11+ , srcInfoPoints = []+ }+ "List1"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 12 5 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 12 5 13+ , srcInfoPoints = []+ }+ "a")))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 16 5 24+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ "a"))+ (PromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 18 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 5 18 5 19 ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 19 5 20+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 19 5 20+ , srcInfoPoints = []+ })))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 22+ , SrcSpan "tests/examples/TypeListCons.hs" 5 23 5 24+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 5 21 5 22+ , SrcSpan "tests/examples/TypeListCons.hs" 5 23 5 24+ ]+ }+ True+ [])))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 1 6 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 6 1 6 5+ , SrcSpan "tests/examples/TypeListCons.hs" 6 16 6 17+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 15+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 6 6 11+ , srcInfoPoints = []+ }+ "List2"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 12 6 13+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ "b")))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 18 6 26+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ "a"))+ (PromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 20 6 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 6 20 6 21 ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 21 6 22+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 21 6 22+ , srcInfoPoints = []+ })))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 24+ , SrcSpan "tests/examples/TypeListCons.hs" 6 25 6 26+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 6 23 6 24+ , SrcSpan "tests/examples/TypeListCons.hs" 6 25 6 26+ ]+ }+ True+ [])))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 1 7 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 7 1 7 5+ , SrcSpan "tests/examples/TypeListCons.hs" 7 18 7 19+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 17+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 15+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 13+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 6 7 11+ , srcInfoPoints = []+ }+ "List3"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 12 7 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 12 7 13+ , srcInfoPoints = []+ }+ "a")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ "b")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ "c")))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 20 7 38+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 20 7 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 20 7 21+ , srcInfoPoints = []+ }+ "a"))+ (PromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 22 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 7 22 7 23 ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 23 7 24+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 23 7 24+ , srcInfoPoints = []+ })))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 25 7 38+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ "b"))+ (PromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 27 7 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 7 27 7 28 ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 28 7 29+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 28 7 29+ , srcInfoPoints = []+ })))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 30 7 38+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 30 7 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 30 7 31+ , srcInfoPoints = []+ }+ "c"))+ (PromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 32 7 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 7 32 7 33 ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 33 7 34+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 33 7 34+ , srcInfoPoints = []+ })))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 36+ , SrcSpan "tests/examples/TypeListCons.hs" 7 37 7 38+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeListCons.hs" 7 35 7 36+ , SrcSpan "tests/examples/TypeListCons.hs" 7 37 7 38+ ]+ }+ True+ [])))))+ ]+ , []+ )
+ tests/examples/TypeListCons.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeListCons.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE DataKinds, TypeOperators #-}+module TypeListCons where++type List1 a = a ': '[]++type List2 a b = a ': '[]++type List3 a b c = a ': b ': c ': '[]
+ tests/examples/TypeOperatorAsVariable.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators #-}++type T (~>) = ()++type Foo = ()
+ tests/examples/TypeOperatorAsVariable.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorAsVariable.hs.parser.golden view
@@ -0,0 +1,159 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 1 1+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 1 5 1+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 6 1 6 1+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 1 1 13+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ ]+ []+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 1 3 5+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 13 3 14+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 6 3 12+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 6 3 7+ , srcInfoPoints = []+ }+ "T"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 8 3 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 8 3 9+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 9 3 11+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 11 3 12+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 9 3 11+ , srcInfoPoints = []+ }+ "~>")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 16+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 16 3 17+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 16+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 16 3 17+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 15 3 16+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 3 16 3 17+ ]+ })))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 1 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 1 5 5+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 10 5 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ "Foo"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 13+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 13 5 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 13+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 13 5 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 12 5 13+ , SrcSpan "tests/examples/TypeOperatorAsVariable.hs" 5 13 5 14+ ]+ })))+ ]+ , []+ )
+ tests/examples/TypeOperatorAsVariable.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorAsVariable.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeOperators #-}++type T (~>) = ()++type Foo = ()
+ tests/examples/TypeOperatorsTest.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators, FlexibleContexts, FlexibleInstances #-}++f :: ArrowXml (~>) => a ~> a+f = undefined
+ tests/examples/TypeOperatorsTest.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorsTest.hs.parser.golden view
@@ -0,0 +1,242 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 1 1+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 1+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 1+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 5 1 5 1+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 1 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 1 1 13+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 27 1 28+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 45 1 46+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 65 1 68+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 29 1 45+ , srcInfoPoints = []+ }+ "FlexibleContexts"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 1 47 1 64+ , srcInfoPoints = []+ }+ "FlexibleInstances"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 3 3 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 29+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14+ , srcInfoPoints = []+ }+ "ArrowXml")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18+ , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18+ , srcInfoPoints = []+ }+ "~>")))))))+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 23 3 29+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 23 3 24+ , srcInfoPoints = []+ }+ "a"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 25 3 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 25 3 27+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 25 3 27+ , srcInfoPoints = []+ }+ "~>")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 28 3 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 28 3 29+ , srcInfoPoints = []+ }+ "a"))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 3 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 3 4 4 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 5 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 5 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/TypeOperatorsTest.hs" 4 5 4 14+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ , []+ )
+ tests/examples/TypeOperatorsTest.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/TypeOperatorsTest.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeOperators, FlexibleContexts, FlexibleInstances #-}++f :: ArrowXml (~>) => a ~> a+f = undefined
+ tests/examples/UnboxedSingleton.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE UnboxedTuples #-}+-- See e.g. GHC.Prim.indexArray#+foo a = (# a #)
+ tests/examples/UnboxedSingleton.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedSingleton.hs.parser.golden view
@@ -0,0 +1,113 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnboxedSingleton.hs" 4 1 4 1+ , SrcSpan "tests/examples/UnboxedSingleton.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedSingleton.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnboxedSingleton.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnboxedTuples"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "foo")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 5 3 6+ , srcInfoPoints = []+ }+ "a")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 7 3 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 7 3 8 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 9 3 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 9 3 11+ , SrcSpan "tests/examples/UnboxedSingleton.hs" 3 14 3 16+ ]+ }+ Unboxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedSingleton.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ "a"))+ ]))+ Nothing+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/UnboxedSingleton.hs" 2 1 2 33)+ " See e.g. GHC.Prim.indexArray#"+ ]+ )
+ tests/examples/UnboxedSingleton.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedSingleton.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE UnboxedTuples #-}+foo a = (# a #)
+ tests/examples/UnboxedTuples.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE UnboxedTuples #-}++foo :: (a, b) -> (# b , a #)+foo (a, b) =+ case (# b, a #) of+ (# b, a #) -> (# , #) b a
+ tests/examples/UnboxedTuples.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedTuples.hs.parser.golden view
@@ -0,0 +1,365 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 4 1+ , SrcSpan "tests/examples/UnboxedTuples.hs" 7 1 7 1+ , SrcSpan "tests/examples/UnboxedTuples.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnboxedTuples.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnboxedTuples"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 5 3 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 1 3 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 8 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 15 3 17 ]+ }+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 8 3 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 8 3 9+ , SrcSpan "tests/examples/UnboxedTuples.hs" 3 10 3 11+ , SrcSpan "tests/examples/UnboxedTuples.hs" 3 13 3 14+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 9 3 10+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 12 3 13+ , srcInfoPoints = []+ }+ "b")+ ])+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 18 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 3 18 3 20+ , SrcSpan "tests/examples/UnboxedTuples.hs" 3 23 3 24+ , SrcSpan "tests/examples/UnboxedTuples.hs" 3 27 3 29+ ]+ }+ Unboxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 21 3 22+ , srcInfoPoints = []+ }+ "b")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 25 3 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 3 25 3 26+ , srcInfoPoints = []+ }+ "a")+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 6 30+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 6 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo")+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 5 4 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 4 5 4 6+ , SrcSpan "tests/examples/UnboxedTuples.hs" 4 7 4 8+ , SrcSpan "tests/examples/UnboxedTuples.hs" 4 10 4 11+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 9 4 10+ , srcInfoPoints = []+ }+ "b")+ ]+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 4 12 6 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 4 12 4 13 ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 3 6 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 5 3 5 7+ , SrcSpan "tests/examples/UnboxedTuples.hs" 5 19 5 21+ , SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 5+ , SrcSpan "tests/examples/UnboxedTuples.hs" 7 1 7 0+ ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 8 5 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 5 8 5 10+ , SrcSpan "tests/examples/UnboxedTuples.hs" 5 12 5 13+ , SrcSpan "tests/examples/UnboxedTuples.hs" 5 16 5 18+ ]+ }+ Unboxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 5 11 5 12+ , srcInfoPoints = []+ }+ "b"))+ , Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ "a"))+ ])+ [ Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 30+ , srcInfoPoints = []+ }+ (PTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 5 6 7+ , SrcSpan "tests/examples/UnboxedTuples.hs" 6 9 6 10+ , SrcSpan "tests/examples/UnboxedTuples.hs" 6 13 6 15+ ]+ }+ Unboxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 8 6 9+ , srcInfoPoints = []+ }+ "b")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ "a")+ ])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 16 6 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 16 6 18 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 30+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 28+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 21+ , SrcSpan "tests/examples/UnboxedTuples.hs" 6 22 6 23+ , SrcSpan "tests/examples/UnboxedTuples.hs" 6 24 6 26+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 21+ , SrcSpan "tests/examples/UnboxedTuples.hs" 6 22 6 23+ , SrcSpan "tests/examples/UnboxedTuples.hs" 6 24 6 26+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 19 6 26+ , srcInfoPoints =+ [ SrcSpan+ "tests/examples/UnboxedTuples.hs" 6 19 6 21+ , SrcSpan+ "tests/examples/UnboxedTuples.hs" 6 22 6 23+ , SrcSpan+ "tests/examples/UnboxedTuples.hs" 6 24 6 26+ ]+ }+ Unboxed+ 2)))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 27 6 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 27 6 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 27 6 28+ , srcInfoPoints = []+ }+ "b"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 29 6 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 29 6 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnboxedTuples.hs" 6 29 6 30+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ ]))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/UnboxedTuples.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnboxedTuples.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE UnboxedTuples #-}++foo :: (a, b) -> (# b, a #)+foo (a, b)+ = case (# b, a #) of+ (# b, a #) -> (# , #) b a
+ tests/examples/Unicode.hs view
@@ -0,0 +1,118 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++import System.Environment++main :: IO ()+main = do+ as ← getArgs+ print $ as+ print $ test 0+ print $ test2 0+ print $ testRewrite 0+ print $ testRewriteReverse 0+ print $ testRewrite2 0+ print $ testRewriteReverse2 0++test :: a → Bool+test x = pi+ where+ f = replicate 2000 x+ i = repeat x+ pf = f |> 300+ pi = i |> 300++test2 :: a → (Bool,Bool)+test2 x = (pf,pi)+ where+ f = replicate 2000 x+ i = repeat x+ pf = f |> 300+ pi = i |> 300++testRewrite :: a → Bool+testRewrite x = pi+ where+ f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = lf > 300+ pi = li > 300++testRewriteReverse :: a → Bool+testRewriteReverse x = pi+ where+ f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = 300 ≤ lf+ pi = 300 ≤ li++testRewrite2 :: a → (Bool,Bool)+testRewrite2 x = (length i > 300,300 > length i)+ where+-- f = replicate 2000 x+ i = repeat x+-- lf = length f+-- li = length i+-- pf = lf > 300+-- pi = li > 300++testRewriteReverse2 :: a → (Bool,Bool)+testRewriteReverse2 x = (2000 < length i,length i > 20)+ where+ f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = 2000 == lf+ pi = lf ≥ li+++lengthOP :: (Num a, Ord a) ⇒ Bool → (a → a → Bool) → [b] → a → Bool+lengthOP v (⊜) [] n = 0 ⊜ n+lengthOP v (⊜) xxs n = co xxs 0+ where+ co (_:xs) c | n > c = co xs (c+1)+ | otherwise = v+ co [] c = c ⊜ n++(≣) = (==)+(≤) = (<=)+(≥) = (>=)++(|≣) = lengthOP False (≣)+(|<) = lengthOP False (<)+(|≤) = lengthOP False (≤)+(|>) = lengthOP True (>)+(|≥) = lengthOP True (≥)++(|=) = lengthOP False (==)+(|==) = lengthOP False (==)+(|<=) = lengthOP False (<=)+(|>=) = lengthOP False (>=)+++-- ≣≤≥+(≣|) = flip (|≣)+(<|) = flip (|≥)+(≤|) = flip (|>)+(>|) = flip (|≤)+(≥|) = flip (|<)++{-# RULES+-- length+"xs |≣ n" forall xs n. (length xs) == n = xs |≣ n+"xs |< n" forall xs n. (length xs) < n = xs |< n+"xs |≤ n" forall xs n. (length xs) <= n = xs |≤ n+"xs |> n" forall xs n. (length xs) > n = xs |> n+"xs |≥ n" forall xs n. (length xs) >= n = xs |≥ n++"n ≣| xs" forall xs n. n == (length xs) = xs |≣ n+"n <| xs" forall xs n. n < (length xs) = xs |≥ n+"n ≤| xs" forall xs n. n <= (length xs) = xs |> n+"n >| xs" forall xs n. n > (length xs) = xs |≤ n+"n ≥| xs" forall xs n. n >= (length xs) = xs |< n+ #-}
+ tests/examples/Unicode.hs.exactprinter.golden view
@@ -0,0 +1,119 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++import System.Environment++main :: IO ()+main = do+ as <-getArgs+ print $ as+ print $ test 0+ print $ test2 0+ print $ testRewrite 0+ print $ testRewriteReverse 0+ print $ testRewrite2 0+ print $ testRewriteReverse2 0++test :: a ->Bool+test x = pi+ where+ f = replicate 2000 x+ i = repeat x+ pf = f |> 300+ pi = i |> 300++test2 :: a ->(Bool,Bool)+test2 x = (pf,pi)+ where+ f = replicate 2000 x+ i = repeat x+ pf = f |> 300+ pi = i |> 300++testRewrite :: a ->Bool+testRewrite x = pi+ where+ f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = lf > 300+ pi = li > 300++testRewriteReverse :: a ->Bool+testRewriteReverse x = pi+ where+ f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = 300 d lf+ pi = 300 d li++testRewrite2 :: a ->(Bool,Bool)+testRewrite2 x = (length i > 300,300 > length i)+ where+-- f = replicate 2000 x+ i = repeat x+-- lf = length f+-- li = length i+-- pf = lf > 300+-- pi = li > 300++testRewriteReverse2 :: a ->(Bool,Bool)+testRewriteReverse2 x = (2000 < length i,length i > 20)+ where+ f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = 2000 == lf+ pi = lf e li+++lengthOP :: (Num a, Ord a) =>Bool ->(a ->a ->Bool) ->[b] ->a ->Bool+lengthOP v () [] n = 0 n+lengthOP v () xxs n = co xxs 0+ where+ co (_:xs) c | n > c = co xs (c+1)+ | otherwise = v+ co [] c = c n++(c) = (==)+(d) = (<=)+(e) = (>=)++(|c) = lengthOP False (c)+(|<) = lengthOP False (<)+(|d) = lengthOP False (d)+(|>) = lengthOP True (>)+(|e) = lengthOP True (e)++(|=) = lengthOP False (==)+(|==) = lengthOP False (==)+(|<=) = lengthOP False (<=)+(|>=) = lengthOP False (>=)+++-- cde+(c|) = flip (|c)+(<|) = flip (|e)+(d|) = flip (|>)+(>|) = flip (|d)+(e|) = flip (|<)++{-# RULES+-- length+"xs |\8803 n"forallxsn. (length xs) == n = xs |c n+"xs |< n" forall xs n. (length xs) < n = xs |< n+"xs |\8804 n"forallxsn. (length xs) <= n = xs |d n+"xs |> n" forall xs n. (length xs) > n = xs |> n+"xs |\8805 n"forallxsn. (length xs) >= n = xs |e n++"n \8803| xs"forallxsn. n == (length xs) = xs |c n+"n <| xs" forall xs n. n < (length xs) = xs |e n+"n \8804| xs"forallxsn. n <= (length xs) = xs |> n+"n >| xs" forall xs n. n > (length xs) = xs |d n+"n \8805| xs"forallxsn. n >= (length xs) = xs |< n+ #-}+
+ tests/examples/Unicode.hs.parser.golden view
@@ -0,0 +1,7749 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 1 1 119 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 1 1 1 1+ , SrcSpan "tests/examples/Unicode.hs" 2 1 2 1+ , SrcSpan "tests/examples/Unicode.hs" 2 1 2 1+ , SrcSpan "tests/examples/Unicode.hs" 4 1 4 1+ , SrcSpan "tests/examples/Unicode.hs" 6 1 6 1+ , SrcSpan "tests/examples/Unicode.hs" 7 1 7 1+ , SrcSpan "tests/examples/Unicode.hs" 17 1 17 1+ , SrcSpan "tests/examples/Unicode.hs" 18 1 18 1+ , SrcSpan "tests/examples/Unicode.hs" 25 1 25 1+ , SrcSpan "tests/examples/Unicode.hs" 26 1 26 1+ , SrcSpan "tests/examples/Unicode.hs" 33 1 33 1+ , SrcSpan "tests/examples/Unicode.hs" 34 1 34 1+ , SrcSpan "tests/examples/Unicode.hs" 43 1 43 1+ , SrcSpan "tests/examples/Unicode.hs" 44 1 44 1+ , SrcSpan "tests/examples/Unicode.hs" 53 1 53 1+ , SrcSpan "tests/examples/Unicode.hs" 54 1 54 1+ , SrcSpan "tests/examples/Unicode.hs" 63 1 63 1+ , SrcSpan "tests/examples/Unicode.hs" 64 1 64 1+ , SrcSpan "tests/examples/Unicode.hs" 74 1 74 1+ , SrcSpan "tests/examples/Unicode.hs" 75 1 75 1+ , SrcSpan "tests/examples/Unicode.hs" 76 1 76 1+ , SrcSpan "tests/examples/Unicode.hs" 82 1 82 1+ , SrcSpan "tests/examples/Unicode.hs" 83 1 83 1+ , SrcSpan "tests/examples/Unicode.hs" 84 1 84 1+ , SrcSpan "tests/examples/Unicode.hs" 86 1 86 1+ , SrcSpan "tests/examples/Unicode.hs" 87 1 87 1+ , SrcSpan "tests/examples/Unicode.hs" 88 1 88 1+ , SrcSpan "tests/examples/Unicode.hs" 89 1 89 1+ , SrcSpan "tests/examples/Unicode.hs" 90 1 90 1+ , SrcSpan "tests/examples/Unicode.hs" 92 1 92 1+ , SrcSpan "tests/examples/Unicode.hs" 93 1 93 1+ , SrcSpan "tests/examples/Unicode.hs" 94 1 94 1+ , SrcSpan "tests/examples/Unicode.hs" 95 1 95 1+ , SrcSpan "tests/examples/Unicode.hs" 99 1 99 1+ , SrcSpan "tests/examples/Unicode.hs" 100 1 100 1+ , SrcSpan "tests/examples/Unicode.hs" 101 1 101 1+ , SrcSpan "tests/examples/Unicode.hs" 102 1 102 1+ , SrcSpan "tests/examples/Unicode.hs" 103 1 103 1+ , SrcSpan "tests/examples/Unicode.hs" 105 1 105 1+ , SrcSpan "tests/examples/Unicode.hs" 119 1 119 1+ , SrcSpan "tests/examples/Unicode.hs" 119 1 119 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 2 1 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 2 1 2 7+ , SrcSpan "tests/examples/Unicode.hs" 2 13 2 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ "Main")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 1 1 1 13+ , SrcSpan "tests/examples/Unicode.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnicodeSyntax"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 4 1 4 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 4 8 4 26+ , srcInfoPoints = []+ }+ "System.Environment"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 1 6 14+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 6 6 6 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ "main"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 14+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 12 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 6 12 6 13+ , SrcSpan "tests/examples/Unicode.hs" 6 13 6 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 12 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 6 12 6 13+ , SrcSpan "tests/examples/Unicode.hs" 6 13 6 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 6 12 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 6 12 6 13+ , SrcSpan "tests/examples/Unicode.hs" 6 13 6 14+ ]+ }))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 1 15 32+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 6 15 32+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 7 6 7 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 7 8 15 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 7 8 7 10+ , SrcSpan "tests/examples/Unicode.hs" 8 3 8 3+ , SrcSpan "tests/examples/Unicode.hs" 9 3 9 3+ , SrcSpan "tests/examples/Unicode.hs" 10 3 10 3+ , SrcSpan "tests/examples/Unicode.hs" 11 3 11 3+ , SrcSpan "tests/examples/Unicode.hs" 12 3 12 3+ , SrcSpan "tests/examples/Unicode.hs" 13 3 13 3+ , SrcSpan "tests/examples/Unicode.hs" 14 3 14 3+ , SrcSpan "tests/examples/Unicode.hs" 15 3 15 3+ , SrcSpan "tests/examples/Unicode.hs" 17 1 17 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 3 8 15+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 8 6 8 7 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 3 8 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 3 8 5+ , srcInfoPoints = []+ }+ "as"))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 8 8 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 8 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 8 8 8 15+ , srcInfoPoints = []+ }+ "getArgs")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 13+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 3 9 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ "$")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 11 9 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 11 9 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 9 11 9 13+ , srcInfoPoints = []+ }+ "as"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 3 10 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 9 10 10+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 11 10 15+ , srcInfoPoints = []+ }+ "test")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 31 10 32+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 10 31 10 32+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 3 11 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 9 11 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 9 11 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 9 11 10+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 11 11 16+ , srcInfoPoints = []+ }+ "test2")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 31 11 32+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 11 31 11 32+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 3 12 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 9 12 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 9 12 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 9 12 10+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 11 12 22+ , srcInfoPoints = []+ }+ "testRewrite")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 31 12 32+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 12 31 12 32+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 3 13 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 11 13 29+ , srcInfoPoints = []+ }+ "testRewriteReverse")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 31 13 32+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 13 31 13 32+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 3 14 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 11 14 23+ , srcInfoPoints = []+ }+ "testRewrite2")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 31 14 32+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 14 31 14 32+ , srcInfoPoints = []+ }+ 0+ "0"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 3 15 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 11 15 30+ , srcInfoPoints = []+ }+ "testRewriteReverse2")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 31 15 32+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 15 31 15 32+ , srcInfoPoints = []+ }+ 0+ "0"))))+ ]))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 1 17 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 17 6 17 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 1 17 5+ , srcInfoPoints = []+ }+ "test"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 9 17 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 17 11 17 12 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 9 17 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 9 17 10+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 13 17 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 13 17 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 17 13 17 17+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 1 23 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 19 3 19 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 1 23 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 19 3 19 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 1 18 5+ , srcInfoPoints = []+ }+ "test")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 6 18 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 6 18 7+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 8 18 12+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 18 8 18 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 10 18 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 10 18 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 18 10 18 12+ , srcInfoPoints = []+ }+ "pi"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 23 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 20 5 20 5+ , SrcSpan "tests/examples/Unicode.hs" 21 5 21 5+ , SrcSpan "tests/examples/Unicode.hs" 22 5 22 5+ , SrcSpan "tests/examples/Unicode.hs" 23 5 23 5+ , SrcSpan "tests/examples/Unicode.hs" 25 1 25 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 20 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 20 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 5 20 6+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 8 20 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 20 8 20 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 10 20 26+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 10 20 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 20 10 20 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 20 10 20 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 20 10 20 19+ , srcInfoPoints = []+ }+ "replicate")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 20 20 20 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 20 20 20 24+ , srcInfoPoints = []+ }+ 2000+ "2000")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 20 25 20 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 20 25 20 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 20 25 20 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 5 21 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 5 21 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 5 21 6+ , srcInfoPoints = []+ }+ "i"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 8 21 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 21 8 21 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 10 21 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 10 21 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 21 10 21 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 21 10 21 16+ , srcInfoPoints = []+ }+ "repeat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 21 25 21 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 21 25 21 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 21 25 21 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 5 22 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 5 22 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 5 22 7+ , srcInfoPoints = []+ }+ "pf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 8 22 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 22 8 22 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 10 22 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 10 22 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 22 10 22 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 22 10 22 11+ , srcInfoPoints = []+ }+ "f")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 12 22 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 22 12 22 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 22 12 22 14+ , srcInfoPoints = []+ }+ "|>")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 22 15 22 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 22 15 22 18+ , srcInfoPoints = []+ }+ 300+ "300"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 5 23 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 5 23 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 5 23 7+ , srcInfoPoints = []+ }+ "pi"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 8 23 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 23 8 23 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 10 23 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 10 23 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 23 10 23 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 23 10 23 11+ , srcInfoPoints = []+ }+ "i")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 12 23 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 23 12 23 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 23 12 23 14+ , srcInfoPoints = []+ }+ "|>")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 23 15 23 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 23 15 23 18+ , srcInfoPoints = []+ }+ 300+ "300"))))+ Nothing+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 1 25 25+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 25 7 25 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 1 25 6+ , srcInfoPoints = []+ }+ "test2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 10 25 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 25 12 25 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 10 25 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 10 25 11+ , srcInfoPoints = []+ }+ "a"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 14 25 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 25 14 25 15+ , SrcSpan "tests/examples/Unicode.hs" 25 19 25 20+ , SrcSpan "tests/examples/Unicode.hs" 25 24 25 25+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 15 25 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 15 25 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 15 25 19+ , srcInfoPoints = []+ }+ "Bool"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 20 25 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 20 25 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 25 20 25 24+ , srcInfoPoints = []+ }+ "Bool"))+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 1 31 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 27 3 27 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 1 31 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 27 3 27 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 1 26 6+ , srcInfoPoints = []+ }+ "test2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 7 26 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 7 26 8+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 9 26 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 26 9 26 10 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 11 26 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 26 11 26 12+ , SrcSpan "tests/examples/Unicode.hs" 26 14 26 15+ , SrcSpan "tests/examples/Unicode.hs" 26 17 26 18+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 12 26 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 12 26 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 12 26 14+ , srcInfoPoints = []+ }+ "pf"))+ , Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 15 26 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 15 26 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 26 15 26 17+ , srcInfoPoints = []+ }+ "pi"))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 31 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 28 5 28 5+ , SrcSpan "tests/examples/Unicode.hs" 29 5 29 5+ , SrcSpan "tests/examples/Unicode.hs" 30 5 30 5+ , SrcSpan "tests/examples/Unicode.hs" 31 5 31 5+ , SrcSpan "tests/examples/Unicode.hs" 33 1 33 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 28 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 28 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 5 28 6+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 8 28 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 28 8 28 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 10 28 26+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 10 28 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 28 10 28 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 28 10 28 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 28 10 28 19+ , srcInfoPoints = []+ }+ "replicate")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 28 20 28 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 28 20 28 24+ , srcInfoPoints = []+ }+ 2000+ "2000")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 28 25 28 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 28 25 28 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 28 25 28 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 5 29 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 5 29 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 5 29 6+ , srcInfoPoints = []+ }+ "i"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 8 29 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 29 8 29 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 10 29 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 10 29 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 29 10 29 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 29 10 29 16+ , srcInfoPoints = []+ }+ "repeat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 29 25 29 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 29 25 29 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 29 25 29 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 5 30 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 5 30 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 5 30 7+ , srcInfoPoints = []+ }+ "pf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 8 30 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 30 8 30 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 10 30 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 10 30 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 30 10 30 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 30 10 30 11+ , srcInfoPoints = []+ }+ "f")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 12 30 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 30 12 30 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 30 12 30 14+ , srcInfoPoints = []+ }+ "|>")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 30 15 30 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 30 15 30 18+ , srcInfoPoints = []+ }+ 300+ "300"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 5 31 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 5 31 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 5 31 7+ , srcInfoPoints = []+ }+ "pi"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 8 31 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 31 8 31 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 10 31 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 10 31 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 31 10 31 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 31 10 31 11+ , srcInfoPoints = []+ }+ "i")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 12 31 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 31 12 31 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 31 12 31 14+ , srcInfoPoints = []+ }+ "|>")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 31 15 31 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 31 15 31 18+ , srcInfoPoints = []+ }+ 300+ "300"))))+ Nothing+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 1 33 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 33 13 33 15 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 1 33 12+ , srcInfoPoints = []+ }+ "testRewrite"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 16 33 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 33 18 33 19 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 16 33 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 16 33 17+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 20 33 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 20 33 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 33 20 33 24+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 1 41 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 35 3 35 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 1 41 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 35 3 35 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 1 34 12+ , srcInfoPoints = []+ }+ "testRewrite")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 13 34 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 13 34 14+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 15 34 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 34 15 34 16 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 17 34 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 17 34 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 34 17 34 19+ , srcInfoPoints = []+ }+ "pi"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 41 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 36 5 36 5+ , SrcSpan "tests/examples/Unicode.hs" 37 5 37 5+ , SrcSpan "tests/examples/Unicode.hs" 38 5 38 5+ , SrcSpan "tests/examples/Unicode.hs" 39 5 39 5+ , SrcSpan "tests/examples/Unicode.hs" 40 5 40 5+ , SrcSpan "tests/examples/Unicode.hs" 41 5 41 5+ , SrcSpan "tests/examples/Unicode.hs" 43 1 43 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 36 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 36 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 5 36 6+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 8 36 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 36 8 36 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 10 36 26+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 10 36 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 36 10 36 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 36 10 36 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 36 10 36 19+ , srcInfoPoints = []+ }+ "replicate")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 36 20 36 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 36 20 36 24+ , srcInfoPoints = []+ }+ 2000+ "2000")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 36 25 36 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 36 25 36 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 36 25 36 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 5 37 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 5 37 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 5 37 6+ , srcInfoPoints = []+ }+ "i"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 8 37 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 37 8 37 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 10 37 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 10 37 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 37 10 37 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 37 10 37 16+ , srcInfoPoints = []+ }+ "repeat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 37 25 37 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 37 25 37 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 37 25 37 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 5 38 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 5 38 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 5 38 7+ , srcInfoPoints = []+ }+ "lf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 8 38 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 38 8 38 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 10 38 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 10 38 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 38 10 38 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 38 10 38 16+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 38 17 38 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 38 17 38 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 38 17 38 18+ , srcInfoPoints = []+ }+ "f")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 5 39 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 5 39 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 5 39 7+ , srcInfoPoints = []+ }+ "li"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 8 39 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 39 8 39 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 10 39 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 10 39 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 39 10 39 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 39 10 39 16+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 39 17 39 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 39 17 39 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 39 17 39 18+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 5 40 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 5 40 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 5 40 7+ , srcInfoPoints = []+ }+ "pf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 8 40 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 40 8 40 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 10 40 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 10 40 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 40 10 40 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 40 10 40 12+ , srcInfoPoints = []+ }+ "lf")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 13 40 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 40 13 40 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 40 13 40 14+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 40 15 40 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 40 15 40 18+ , srcInfoPoints = []+ }+ 300+ "300"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 5 41 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 5 41 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 5 41 7+ , srcInfoPoints = []+ }+ "pi"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 8 41 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 41 8 41 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 10 41 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 10 41 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 41 10 41 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 41 10 41 12+ , srcInfoPoints = []+ }+ "li")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 13 41 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 41 13 41 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 41 13 41 14+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 41 15 41 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 41 15 41 18+ , srcInfoPoints = []+ }+ 300+ "300"))))+ Nothing+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 1 43 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 43 20 43 22 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 1 43 19+ , srcInfoPoints = []+ }+ "testRewriteReverse"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 23 43 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 43 25 43 26 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 23 43 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 23 43 24+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 27 43 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 27 43 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 43 27 43 31+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 1 51 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 45 3 45 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 1 51 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 45 3 45 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 1 44 19+ , srcInfoPoints = []+ }+ "testRewriteReverse")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 20 44 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 20 44 21+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 22 44 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 44 22 44 23 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 24 44 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 24 44 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 44 24 44 26+ , srcInfoPoints = []+ }+ "pi"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 51 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 46 5 46 5+ , SrcSpan "tests/examples/Unicode.hs" 47 5 47 5+ , SrcSpan "tests/examples/Unicode.hs" 48 5 48 5+ , SrcSpan "tests/examples/Unicode.hs" 49 5 49 5+ , SrcSpan "tests/examples/Unicode.hs" 50 5 50 5+ , SrcSpan "tests/examples/Unicode.hs" 51 5 51 5+ , SrcSpan "tests/examples/Unicode.hs" 53 1 53 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 46 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 46 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 5 46 6+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 8 46 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 46 8 46 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 10 46 26+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 10 46 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 46 10 46 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 46 10 46 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 46 10 46 19+ , srcInfoPoints = []+ }+ "replicate")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 46 20 46 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 46 20 46 24+ , srcInfoPoints = []+ }+ 2000+ "2000")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 46 25 46 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 46 25 46 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 46 25 46 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 5 47 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 5 47 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 5 47 6+ , srcInfoPoints = []+ }+ "i"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 8 47 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 47 8 47 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 10 47 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 10 47 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 47 10 47 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 47 10 47 16+ , srcInfoPoints = []+ }+ "repeat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 47 25 47 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 47 25 47 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 47 25 47 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 5 48 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 5 48 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 5 48 7+ , srcInfoPoints = []+ }+ "lf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 8 48 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 48 8 48 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 10 48 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 10 48 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 48 10 48 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 48 10 48 16+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 48 17 48 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 48 17 48 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 48 17 48 18+ , srcInfoPoints = []+ }+ "f")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 5 49 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 5 49 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 5 49 7+ , srcInfoPoints = []+ }+ "li"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 8 49 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 49 8 49 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 10 49 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 10 49 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 49 10 49 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 49 10 49 16+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 49 17 49 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 49 17 49 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 49 17 49 18+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 5 50 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 5 50 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 5 50 7+ , srcInfoPoints = []+ }+ "pf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 8 50 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 50 8 50 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 10 50 18+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 10 50 13+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 50 10 50 13+ , srcInfoPoints = []+ }+ 300+ "300"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 14 50 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 50 14 50 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 50 14 50 15+ , srcInfoPoints = []+ }+ "\8804")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 50 16 50 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 50 16 50 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 50 16 50 18+ , srcInfoPoints = []+ }+ "lf")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 5 51 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 5 51 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 5 51 7+ , srcInfoPoints = []+ }+ "pi"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 8 51 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 51 8 51 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 10 51 18+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 10 51 13+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 51 10 51 13+ , srcInfoPoints = []+ }+ 300+ "300"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 14 51 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 51 14 51 15+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 51 14 51 15+ , srcInfoPoints = []+ }+ "\8804")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 51 16 51 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 51 16 51 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 51 16 51 18+ , srcInfoPoints = []+ }+ "li")))))+ Nothing+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 1 53 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 53 14 53 16 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 1 53 13+ , srcInfoPoints = []+ }+ "testRewrite2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 17 53 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 53 19 53 20 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 17 53 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 17 53 18+ , srcInfoPoints = []+ }+ "a"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 21 53 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 53 21 53 22+ , SrcSpan "tests/examples/Unicode.hs" 53 26 53 27+ , SrcSpan "tests/examples/Unicode.hs" 53 31 53 32+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 22 53 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 22 53 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 22 53 26+ , srcInfoPoints = []+ }+ "Bool"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 27 53 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 27 53 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 53 27 53 31+ , srcInfoPoints = []+ }+ "Bool"))+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 1 57 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 55 3 55 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 1 57 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 55 3 55 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 1 54 13+ , srcInfoPoints = []+ }+ "testRewrite2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 14 54 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 14 54 15+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 16 54 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 54 16 54 17 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 18 54 49+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 54 18 54 19+ , SrcSpan "tests/examples/Unicode.hs" 54 33 54 34+ , SrcSpan "tests/examples/Unicode.hs" 54 48 54 49+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 33+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 19 54 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 54 19 54 25+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 26 54 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 26 54 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 54 26 54 27+ , srcInfoPoints = []+ }+ "i"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 28 54 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 28 54 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 28 54 29+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 30 54 33+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 30 54 33+ , srcInfoPoints = []+ }+ 300+ "300"))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 34 54 48+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 34 54 37+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 34 54 37+ , srcInfoPoints = []+ }+ 300+ "300"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 38 54 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 38 54 39+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 38 54 39+ , srcInfoPoints = []+ }+ ">")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 40 54 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 40 54 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 40 54 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 54 40 54 46+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 47 54 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 54 47 54 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 54 47 54 48+ , srcInfoPoints = []+ }+ "i"))))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 57 5 57 5+ , SrcSpan "tests/examples/Unicode.hs" 63 1 63 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 5 57 6+ , srcInfoPoints = []+ }+ "i"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 8 57 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 57 8 57 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 10 57 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 10 57 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 57 10 57 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 57 10 57 16+ , srcInfoPoints = []+ }+ "repeat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 57 25 57 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 57 25 57 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 57 25 57 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 1 63 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 63 21 63 23 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 1 63 20+ , srcInfoPoints = []+ }+ "testRewriteReverse2"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 24 63 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 63 26 63 27 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 24 63 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 24 63 25+ , srcInfoPoints = []+ }+ "a"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 28 63 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 63 28 63 29+ , SrcSpan "tests/examples/Unicode.hs" 63 33 63 34+ , SrcSpan "tests/examples/Unicode.hs" 63 38 63 39+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 29 63 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 29 63 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 29 63 33+ , srcInfoPoints = []+ }+ "Bool"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 34 63 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 34 63 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 63 34 63 38+ , srcInfoPoints = []+ }+ "Bool"))+ ]))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 1 71 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 65 3 65 8 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 1 71 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 65 3 65 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 1 64 20+ , srcInfoPoints = []+ }+ "testRewriteReverse2")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 21 64 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 21 64 22+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 23 64 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 64 23 64 24 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 25 64 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 64 25 64 26+ , SrcSpan "tests/examples/Unicode.hs" 64 41 64 42+ , SrcSpan "tests/examples/Unicode.hs" 64 55 64 56+ ]+ }+ Boxed+ [ InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 26 64 41+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 26 64 30+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 26 64 30+ , srcInfoPoints = []+ }+ 2000+ "2000"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 31 64 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 31 64 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 31 64 32+ , srcInfoPoints = []+ }+ "<")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 33 64 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 33 64 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 33 64 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 64 33 64 39+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 40 64 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 40 64 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 64 40 64 41+ , srcInfoPoints = []+ }+ "i"))))+ , InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 55+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 50+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 42 64 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 64 42 64 48+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 49 64 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 49 64 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 64 49 64 50+ , srcInfoPoints = []+ }+ "i"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 51 64 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 51 64 52+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 51 64 52+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 53 64 55+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 64 53 64 55+ , srcInfoPoints = []+ }+ 20+ "20"))+ ]))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 71 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 66 5 66 5+ , SrcSpan "tests/examples/Unicode.hs" 67 5 67 5+ , SrcSpan "tests/examples/Unicode.hs" 68 5 68 5+ , SrcSpan "tests/examples/Unicode.hs" 69 5 69 5+ , SrcSpan "tests/examples/Unicode.hs" 70 5 70 5+ , SrcSpan "tests/examples/Unicode.hs" 71 5 71 5+ , SrcSpan "tests/examples/Unicode.hs" 74 1 74 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 66 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 66 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 5 66 6+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 8 66 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 66 8 66 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 10 66 26+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 10 66 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 66 10 66 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 66 10 66 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 66 10 66 19+ , srcInfoPoints = []+ }+ "replicate")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 66 20 66 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 66 20 66 24+ , srcInfoPoints = []+ }+ 2000+ "2000")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 66 25 66 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 66 25 66 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 66 25 66 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 5 67 26+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 5 67 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 5 67 6+ , srcInfoPoints = []+ }+ "i"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 8 67 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 67 8 67 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 10 67 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 10 67 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 67 10 67 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 67 10 67 16+ , srcInfoPoints = []+ }+ "repeat")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 67 25 67 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 67 25 67 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 67 25 67 26+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 5 68 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 5 68 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 5 68 7+ , srcInfoPoints = []+ }+ "lf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 8 68 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 68 8 68 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 10 68 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 10 68 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 68 10 68 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 68 10 68 16+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 68 17 68 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 68 17 68 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 68 17 68 18+ , srcInfoPoints = []+ }+ "f")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 5 69 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 5 69 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 5 69 7+ , srcInfoPoints = []+ }+ "li"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 8 69 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 69 8 69 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 10 69 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 10 69 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 69 10 69 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 69 10 69 16+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 69 17 69 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 69 17 69 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 69 17 69 18+ , srcInfoPoints = []+ }+ "i")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 5 70 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 5 70 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 5 70 7+ , srcInfoPoints = []+ }+ "pf"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 8 70 20+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 70 8 70 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 10 70 20+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 10 70 14+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 70 10 70 14+ , srcInfoPoints = []+ }+ 2000+ "2000"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 15 70 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 70 15 70 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 70 15 70 17+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 70 18 70 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 70 18 70 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 70 18 70 20+ , srcInfoPoints = []+ }+ "lf")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 5 71 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 5 71 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 5 71 7+ , srcInfoPoints = []+ }+ "pi"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 8 71 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 71 8 71 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 10 71 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 10 71 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 71 10 71 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 71 10 71 12+ , srcInfoPoints = []+ }+ "lf")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 13 71 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 71 13 71 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 71 13 71 14+ , srcInfoPoints = []+ }+ "\8805")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 71 15 71 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 71 15 71 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 71 15 71 17+ , srcInfoPoints = []+ }+ "li")))))+ Nothing+ ]))+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 1 74 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 10 74 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 1 74 9+ , srcInfoPoints = []+ }+ "lengthOP"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 13 74 68+ , srcInfoPoints = []+ }+ Nothing+ (Just+ (CxTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 13 74 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 13 74 14+ , SrcSpan "tests/examples/Unicode.hs" 74 19 74 20+ , SrcSpan "tests/examples/Unicode.hs" 74 26 74 27+ , SrcSpan "tests/examples/Unicode.hs" 74 28 74 29+ ]+ }+ [ TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19+ , srcInfoPoints = []+ }+ "a")))+ , TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24+ , srcInfoPoints = []+ }+ "Ord")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26+ , srcInfoPoints = []+ }+ "a")))+ ]))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 35 74 36 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 30 74 34+ , srcInfoPoints = []+ }+ "Bool")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 37 74 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 52 74 53 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 37 74 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 37 74 38+ , SrcSpan "tests/examples/Unicode.hs" 74 50 74 51+ ]+ }+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 38 74 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 40 74 41 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 38 74 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 38 74 39+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 42 74 50+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 44 74 45 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 42 74 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 42 74 43+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 46 74 50+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 46 74 50+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 74 46 74 50+ , srcInfoPoints = []+ }+ "Bool"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 54 74 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 58 74 59 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 54 74 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 54 74 55+ , SrcSpan "tests/examples/Unicode.hs" 74 56 74 57+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 55 74 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 55 74 56+ , srcInfoPoints = []+ }+ "b")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 60 74 68+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 74 62 74 63 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 60 74 61+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 60 74 61+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 64 74 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 64 74 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 64 74 68+ , srcInfoPoints = []+ }+ "Bool"))))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 1 80 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 1 75 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 1 75 9+ , srcInfoPoints = []+ }+ "lengthOP")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 10 75 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 10 75 11+ , srcInfoPoints = []+ }+ "v")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 12 75 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 75 12 75 13+ , SrcSpan "tests/examples/Unicode.hs" 75 13 75 14+ , SrcSpan "tests/examples/Unicode.hs" 75 14 75 15+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 13 75 14+ , srcInfoPoints = []+ }+ "\8860")+ , PList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 16 75 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 75 16 75 17+ , SrcSpan "tests/examples/Unicode.hs" 75 17 75 18+ ]+ }+ []+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 20 75 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 20 75 21+ , srcInfoPoints = []+ }+ "n")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 22 75 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 75 22 75 23 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 24 75 29+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 24 75 25+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 24 75 25+ , srcInfoPoints = []+ }+ 0+ "0"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 26 75 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 26 75 27+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 26 75 27+ , srcInfoPoints = []+ }+ "\8860")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 28 75 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 28 75 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 75 28 75 29+ , srcInfoPoints = []+ }+ "n")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 1 80 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 77 3 77 8 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 1 76 9+ , srcInfoPoints = []+ }+ "lengthOP")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 10 76 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 10 76 11+ , srcInfoPoints = []+ }+ "v")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 12 76 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 76 12 76 13+ , SrcSpan "tests/examples/Unicode.hs" 76 13 76 14+ , SrcSpan "tests/examples/Unicode.hs" 76 14 76 15+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 13 76 14+ , srcInfoPoints = []+ }+ "\8860")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 16 76 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 16 76 19+ , srcInfoPoints = []+ }+ "xxs")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 20 76 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 20 76 21+ , srcInfoPoints = []+ }+ "n")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 22 76 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 76 22 76 23 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 24 76 26+ , srcInfoPoints = []+ }+ "co")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 27 76 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 27 76 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 27 76 30+ , srcInfoPoints = []+ }+ "xxs"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 31 76 32+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 76 31 76 32+ , srcInfoPoints = []+ }+ 0+ "0"))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 80 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 78 5 78 5+ , SrcSpan "tests/examples/Unicode.hs" 80 5 80 5+ , SrcSpan "tests/examples/Unicode.hs" 82 1 82 0+ ]+ }+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 80 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 79 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 5 78 7+ , srcInfoPoints = []+ }+ "co")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 8 78 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 78 8 78 9+ , SrcSpan "tests/examples/Unicode.hs" 78 13 78 14+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 9 78 13+ , srcInfoPoints = []+ }+ (PWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 9 78 10+ , srcInfoPoints = []+ })+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 10 78 11+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 10 78 11+ , srcInfoPoints = []+ }))+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 11 78 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 11 78 13+ , srcInfoPoints = []+ }+ "xs")))+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 15 78 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 15 78 16+ , srcInfoPoints = []+ }+ "c")+ ]+ (GuardedRhss+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 17 79 32+ , srcInfoPoints = []+ }+ [ GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 78 17 78 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 78 17 78 18+ , SrcSpan "tests/examples/Unicode.hs" 78 29 78 30+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 19 78 24+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 19 78 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 19 78 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 19 78 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 19 78 20+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 21 78 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 21 78 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 21 78 22+ , srcInfoPoints = []+ }+ ">")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 23 78 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 23 78 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 23 78 24+ , srcInfoPoints = []+ }+ "c"))))+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 31 78 42+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 31 78 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 31 78 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 31 78 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 31 78 33+ , srcInfoPoints = []+ }+ "co")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 34 78 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 34 78 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 34 78 36+ , srcInfoPoints = []+ }+ "xs"))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 37 78 42+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 78 37 78 38+ , SrcSpan "tests/examples/Unicode.hs" 78 41 78 42+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 38 78 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 38 78 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 38 78 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 38 78 39+ , srcInfoPoints = []+ }+ "c")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 39 78 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 39 78 40+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 39 78 40+ , srcInfoPoints = []+ }+ "+")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 78 40 78 41+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 78 40 78 41+ , srcInfoPoints = []+ }+ 1+ "1")))))+ , GuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 79 17 79 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 79 17 79 18+ , SrcSpan "tests/examples/Unicode.hs" 79 29 79 30+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 79 19 79 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 79 19 79 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 79 19 79 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Unicode.hs" 79 19 79 28+ , srcInfoPoints = []+ }+ "otherwise")))+ ]+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 79 31 79 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 79 31 79 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 79 31 79 32+ , srcInfoPoints = []+ }+ "v")))+ ])+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 5 80 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 5 80 7+ , srcInfoPoints = []+ }+ "co")+ [ PList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 8 80 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 80 8 80 9+ , SrcSpan "tests/examples/Unicode.hs" 80 9 80 10+ ]+ }+ []+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 15 80 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 15 80 16+ , srcInfoPoints = []+ }+ "c")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 17 80 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 80 17 80 18 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 80 19 80 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 19 80 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 19 80 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 19 80 20+ , srcInfoPoints = []+ }+ "c")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 21 80 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 21 80 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 21 80 22+ , srcInfoPoints = []+ }+ "\8860")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 23 80 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 23 80 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Unicode.hs" 80 23 80 24+ , srcInfoPoints = []+ }+ "n")))))+ Nothing+ ]+ ]))+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 1 82 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 1 82 4+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 82 1 82 2+ , SrcSpan "tests/examples/Unicode.hs" 82 2 82 3+ , SrcSpan "tests/examples/Unicode.hs" 82 3 82 4+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 2 82 3+ , srcInfoPoints = []+ }+ "\8803"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 5 82 11+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 82 5 82 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 7 82 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 82 7 82 8+ , SrcSpan "tests/examples/Unicode.hs" 82 8 82 10+ , SrcSpan "tests/examples/Unicode.hs" 82 10 82 11+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 7 82 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 82 7 82 8+ , SrcSpan "tests/examples/Unicode.hs" 82 8 82 10+ , SrcSpan "tests/examples/Unicode.hs" 82 10 82 11+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 82 8 82 10+ , srcInfoPoints = []+ }+ "=="))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 1 83 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 1 83 4+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 83 1 83 2+ , SrcSpan "tests/examples/Unicode.hs" 83 2 83 3+ , SrcSpan "tests/examples/Unicode.hs" 83 3 83 4+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 2 83 3+ , srcInfoPoints = []+ }+ "\8804"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 5 83 11+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 83 5 83 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 7 83 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 83 7 83 8+ , SrcSpan "tests/examples/Unicode.hs" 83 8 83 10+ , SrcSpan "tests/examples/Unicode.hs" 83 10 83 11+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 7 83 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 83 7 83 8+ , SrcSpan "tests/examples/Unicode.hs" 83 8 83 10+ , SrcSpan "tests/examples/Unicode.hs" 83 10 83 11+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 83 8 83 10+ , srcInfoPoints = []+ }+ "<="))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 1 84 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 1 84 4+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 84 1 84 2+ , SrcSpan "tests/examples/Unicode.hs" 84 2 84 3+ , SrcSpan "tests/examples/Unicode.hs" 84 3 84 4+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 2 84 3+ , srcInfoPoints = []+ }+ "\8805"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 5 84 11+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 84 5 84 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 7 84 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 84 7 84 8+ , SrcSpan "tests/examples/Unicode.hs" 84 8 84 10+ , SrcSpan "tests/examples/Unicode.hs" 84 10 84 11+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 7 84 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 84 7 84 8+ , SrcSpan "tests/examples/Unicode.hs" 84 8 84 10+ , SrcSpan "tests/examples/Unicode.hs" 84 10 84 11+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 84 8 84 10+ , srcInfoPoints = []+ }+ ">="))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 1 86 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 1 86 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 86 1 86 2+ , SrcSpan "tests/examples/Unicode.hs" 86 2 86 4+ , SrcSpan "tests/examples/Unicode.hs" 86 4 86 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 2 86 4+ , srcInfoPoints = []+ }+ "|\8803"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 7 86 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 86 7 86 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 9 86 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 18 86 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 18 86 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 18 86 23+ , srcInfoPoints = []+ }+ "False"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 24 86 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 86 24 86 25+ , SrcSpan "tests/examples/Unicode.hs" 86 25 86 26+ , SrcSpan "tests/examples/Unicode.hs" 86 26 86 27+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 24 86 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 86 24 86 25+ , SrcSpan "tests/examples/Unicode.hs" 86 25 86 26+ , SrcSpan "tests/examples/Unicode.hs" 86 26 86 27+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 86 25 86 26+ , srcInfoPoints = []+ }+ "\8803")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 1 87 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 1 87 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 87 1 87 2+ , SrcSpan "tests/examples/Unicode.hs" 87 2 87 4+ , SrcSpan "tests/examples/Unicode.hs" 87 4 87 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 2 87 4+ , srcInfoPoints = []+ }+ "|<"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 7 87 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 87 7 87 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 9 87 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 18 87 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 18 87 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 18 87 23+ , srcInfoPoints = []+ }+ "False"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 24 87 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 87 24 87 25+ , SrcSpan "tests/examples/Unicode.hs" 87 25 87 26+ , SrcSpan "tests/examples/Unicode.hs" 87 26 87 27+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 24 87 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 87 24 87 25+ , SrcSpan "tests/examples/Unicode.hs" 87 25 87 26+ , SrcSpan "tests/examples/Unicode.hs" 87 26 87 27+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 87 25 87 26+ , srcInfoPoints = []+ }+ "<")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 1 88 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 1 88 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 88 1 88 2+ , SrcSpan "tests/examples/Unicode.hs" 88 2 88 4+ , SrcSpan "tests/examples/Unicode.hs" 88 4 88 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 2 88 4+ , srcInfoPoints = []+ }+ "|\8804"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 7 88 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 88 7 88 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 9 88 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 18 88 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 18 88 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 18 88 23+ , srcInfoPoints = []+ }+ "False"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 24 88 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 88 24 88 25+ , SrcSpan "tests/examples/Unicode.hs" 88 25 88 26+ , SrcSpan "tests/examples/Unicode.hs" 88 26 88 27+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 24 88 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 88 24 88 25+ , SrcSpan "tests/examples/Unicode.hs" 88 25 88 26+ , SrcSpan "tests/examples/Unicode.hs" 88 26 88 27+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 88 25 88 26+ , srcInfoPoints = []+ }+ "\8804")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 1 89 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 1 89 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 89 1 89 2+ , SrcSpan "tests/examples/Unicode.hs" 89 2 89 4+ , SrcSpan "tests/examples/Unicode.hs" 89 4 89 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 2 89 4+ , srcInfoPoints = []+ }+ "|>"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 7 89 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 89 7 89 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 9 89 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 18 89 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 18 89 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 18 89 22+ , srcInfoPoints = []+ }+ "True"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 24 89 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 89 24 89 25+ , SrcSpan "tests/examples/Unicode.hs" 89 25 89 26+ , SrcSpan "tests/examples/Unicode.hs" 89 26 89 27+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 24 89 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 89 24 89 25+ , SrcSpan "tests/examples/Unicode.hs" 89 25 89 26+ , SrcSpan "tests/examples/Unicode.hs" 89 26 89 27+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 89 25 89 26+ , srcInfoPoints = []+ }+ ">")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 1 90 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 1 90 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 90 1 90 2+ , SrcSpan "tests/examples/Unicode.hs" 90 2 90 4+ , SrcSpan "tests/examples/Unicode.hs" 90 4 90 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 2 90 4+ , srcInfoPoints = []+ }+ "|\8805"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 7 90 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 90 7 90 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 9 90 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 18 90 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 18 90 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 18 90 22+ , srcInfoPoints = []+ }+ "True"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 24 90 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 90 24 90 25+ , SrcSpan "tests/examples/Unicode.hs" 90 25 90 26+ , SrcSpan "tests/examples/Unicode.hs" 90 26 90 27+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 24 90 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 90 24 90 25+ , SrcSpan "tests/examples/Unicode.hs" 90 25 90 26+ , SrcSpan "tests/examples/Unicode.hs" 90 26 90 27+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 90 25 90 26+ , srcInfoPoints = []+ }+ "\8805")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 1 92 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 1 92 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 92 1 92 2+ , SrcSpan "tests/examples/Unicode.hs" 92 2 92 4+ , SrcSpan "tests/examples/Unicode.hs" 92 4 92 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 2 92 4+ , srcInfoPoints = []+ }+ "|="))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 7 92 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 92 7 92 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 9 92 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 18 92 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 18 92 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 18 92 23+ , srcInfoPoints = []+ }+ "False"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 24 92 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 92 24 92 25+ , SrcSpan "tests/examples/Unicode.hs" 92 25 92 27+ , SrcSpan "tests/examples/Unicode.hs" 92 27 92 28+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 24 92 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 92 24 92 25+ , SrcSpan "tests/examples/Unicode.hs" 92 25 92 27+ , SrcSpan "tests/examples/Unicode.hs" 92 27 92 28+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 92 25 92 27+ , srcInfoPoints = []+ }+ "==")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 1 93 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 1 93 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 93 1 93 2+ , SrcSpan "tests/examples/Unicode.hs" 93 2 93 5+ , SrcSpan "tests/examples/Unicode.hs" 93 5 93 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 2 93 5+ , srcInfoPoints = []+ }+ "|=="))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 7 93 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 93 7 93 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 9 93 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 18 93 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 18 93 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 18 93 23+ , srcInfoPoints = []+ }+ "False"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 24 93 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 93 24 93 25+ , SrcSpan "tests/examples/Unicode.hs" 93 25 93 27+ , SrcSpan "tests/examples/Unicode.hs" 93 27 93 28+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 24 93 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 93 24 93 25+ , SrcSpan "tests/examples/Unicode.hs" 93 25 93 27+ , SrcSpan "tests/examples/Unicode.hs" 93 27 93 28+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 93 25 93 27+ , srcInfoPoints = []+ }+ "==")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 1 94 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 1 94 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 94 1 94 2+ , SrcSpan "tests/examples/Unicode.hs" 94 2 94 5+ , SrcSpan "tests/examples/Unicode.hs" 94 5 94 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 2 94 5+ , srcInfoPoints = []+ }+ "|<="))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 7 94 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 94 7 94 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 9 94 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 18 94 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 18 94 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 18 94 23+ , srcInfoPoints = []+ }+ "False"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 24 94 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 94 24 94 25+ , SrcSpan "tests/examples/Unicode.hs" 94 25 94 27+ , SrcSpan "tests/examples/Unicode.hs" 94 27 94 28+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 24 94 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 94 24 94 25+ , SrcSpan "tests/examples/Unicode.hs" 94 25 94 27+ , SrcSpan "tests/examples/Unicode.hs" 94 27 94 28+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 94 25 94 27+ , srcInfoPoints = []+ }+ "<=")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 1 95 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 1 95 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 95 1 95 2+ , SrcSpan "tests/examples/Unicode.hs" 95 2 95 5+ , SrcSpan "tests/examples/Unicode.hs" 95 5 95 6+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 2 95 5+ , srcInfoPoints = []+ }+ "|>="))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 7 95 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 95 7 95 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 9 95 17+ , srcInfoPoints = []+ }+ "lengthOP")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 18 95 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 18 95 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 18 95 23+ , srcInfoPoints = []+ }+ "False"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 24 95 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 95 24 95 25+ , SrcSpan "tests/examples/Unicode.hs" 95 25 95 27+ , SrcSpan "tests/examples/Unicode.hs" 95 27 95 28+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 24 95 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 95 24 95 25+ , SrcSpan "tests/examples/Unicode.hs" 95 25 95 27+ , SrcSpan "tests/examples/Unicode.hs" 95 27 95 28+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 95 25 95 27+ , srcInfoPoints = []+ }+ ">=")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 1 99 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 1 99 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 99 1 99 2+ , SrcSpan "tests/examples/Unicode.hs" 99 2 99 4+ , SrcSpan "tests/examples/Unicode.hs" 99 4 99 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 2 99 4+ , srcInfoPoints = []+ }+ "\8803|"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 6 99 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Unicode.hs" 99 6 99 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 8 99 12+ , srcInfoPoints = []+ }+ "flip")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 13 99 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 99 13 99 14+ , SrcSpan "tests/examples/Unicode.hs" 99 14 99 16+ , SrcSpan "tests/examples/Unicode.hs" 99 16 99 17+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 13 99 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 99 13 99 14+ , SrcSpan "tests/examples/Unicode.hs" 99 14 99 16+ , SrcSpan "tests/examples/Unicode.hs" 99 16 99 17+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 99 14 99 16+ , srcInfoPoints = []+ }+ "|\8803")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 1 100 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 1 100 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 100 1 100 2+ , SrcSpan "tests/examples/Unicode.hs" 100 2 100 4+ , SrcSpan "tests/examples/Unicode.hs" 100 4 100 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 2 100 4+ , srcInfoPoints = []+ }+ "<|"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 6 100 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 100 6 100 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 8 100 12+ , srcInfoPoints = []+ }+ "flip")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 13 100 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 100 13 100 14+ , SrcSpan "tests/examples/Unicode.hs" 100 14 100 16+ , SrcSpan "tests/examples/Unicode.hs" 100 16 100 17+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 13 100 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 100 13 100 14+ , SrcSpan "tests/examples/Unicode.hs" 100 14 100 16+ , SrcSpan "tests/examples/Unicode.hs" 100 16 100 17+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 100 14 100 16+ , srcInfoPoints = []+ }+ "|\8805")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 1 101 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 1 101 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 101 1 101 2+ , SrcSpan "tests/examples/Unicode.hs" 101 2 101 4+ , SrcSpan "tests/examples/Unicode.hs" 101 4 101 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 2 101 4+ , srcInfoPoints = []+ }+ "\8804|"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 6 101 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 101 6 101 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 8 101 12+ , srcInfoPoints = []+ }+ "flip")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 13 101 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 101 13 101 14+ , SrcSpan "tests/examples/Unicode.hs" 101 14 101 16+ , SrcSpan "tests/examples/Unicode.hs" 101 16 101 17+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 13 101 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 101 13 101 14+ , SrcSpan "tests/examples/Unicode.hs" 101 14 101 16+ , SrcSpan "tests/examples/Unicode.hs" 101 16 101 17+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 101 14 101 16+ , srcInfoPoints = []+ }+ "|>")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 1 102 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 1 102 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 102 1 102 2+ , SrcSpan "tests/examples/Unicode.hs" 102 2 102 4+ , SrcSpan "tests/examples/Unicode.hs" 102 4 102 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 2 102 4+ , srcInfoPoints = []+ }+ ">|"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 6 102 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 102 6 102 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 8 102 12+ , srcInfoPoints = []+ }+ "flip")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 13 102 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 102 13 102 14+ , SrcSpan "tests/examples/Unicode.hs" 102 14 102 16+ , SrcSpan "tests/examples/Unicode.hs" 102 16 102 17+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 13 102 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 102 13 102 14+ , SrcSpan "tests/examples/Unicode.hs" 102 14 102 16+ , SrcSpan "tests/examples/Unicode.hs" 102 16 102 17+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 102 14 102 16+ , srcInfoPoints = []+ }+ "|\8804")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 1 103 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 1 103 5+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 103 1 103 2+ , SrcSpan "tests/examples/Unicode.hs" 103 2 103 4+ , SrcSpan "tests/examples/Unicode.hs" 103 4 103 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 2 103 4+ , srcInfoPoints = []+ }+ "\8805|"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 6 103 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 103 6 103 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 8 103 12+ , srcInfoPoints = []+ }+ "flip")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 13 103 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 103 13 103 14+ , SrcSpan "tests/examples/Unicode.hs" 103 14 103 16+ , SrcSpan "tests/examples/Unicode.hs" 103 16 103 17+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 13 103 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 103 13 103 14+ , SrcSpan "tests/examples/Unicode.hs" 103 14 103 16+ , SrcSpan "tests/examples/Unicode.hs" 103 16 103 17+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 103 14 103 16+ , srcInfoPoints = []+ }+ "|<")))))+ Nothing+ , RulePragmaDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 105 1 118 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 105 1 105 10+ , SrcSpan "tests/examples/Unicode.hs" 118 3 118 6+ ]+ }+ [ Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 1 107 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 107 1 107 10+ , SrcSpan "tests/examples/Unicode.hs" 107 11 107 17+ , SrcSpan "tests/examples/Unicode.hs" 107 22 107 23+ , SrcSpan "tests/examples/Unicode.hs" 107 42 107 43+ ]+ }+ "xs |\8803 n"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 18 107 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 18 107 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 21 107 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 21 107 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 25 107 41+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 25 107 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 107 25 107 26+ , SrcSpan "tests/examples/Unicode.hs" 107 35 107 36+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 26 107 32+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 33 107 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 33 107 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 33 107 35+ , srcInfoPoints = []+ }+ "xs")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 37 107 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 37 107 39+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 37 107 39+ , srcInfoPoints = []+ }+ "==")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 40 107 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 40 107 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 40 107 41+ , srcInfoPoints = []+ }+ "n"))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 44 107 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 47 107 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 47 107 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 47 107 49+ , srcInfoPoints = []+ }+ "|\8803")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 50 107 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 50 107 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 107 50 107 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 1 108 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 108 1 108 10+ , SrcSpan "tests/examples/Unicode.hs" 108 11 108 17+ , SrcSpan "tests/examples/Unicode.hs" 108 22 108 23+ , SrcSpan "tests/examples/Unicode.hs" 108 42 108 43+ ]+ }+ "xs |< n"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 18 108 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 18 108 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 21 108 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 21 108 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 25 108 41+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 25 108 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 108 25 108 26+ , SrcSpan "tests/examples/Unicode.hs" 108 35 108 36+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 26 108 32+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 33 108 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 33 108 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 33 108 35+ , srcInfoPoints = []+ }+ "xs")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 37 108 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 37 108 38+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 37 108 38+ , srcInfoPoints = []+ }+ "<")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 40 108 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 40 108 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 40 108 41+ , srcInfoPoints = []+ }+ "n"))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 44 108 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 47 108 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 47 108 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 47 108 49+ , srcInfoPoints = []+ }+ "|<")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 50 108 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 50 108 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 108 50 108 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 1 109 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 109 1 109 10+ , SrcSpan "tests/examples/Unicode.hs" 109 11 109 17+ , SrcSpan "tests/examples/Unicode.hs" 109 22 109 23+ , SrcSpan "tests/examples/Unicode.hs" 109 42 109 43+ ]+ }+ "xs |\8804 n"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 18 109 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 18 109 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 21 109 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 21 109 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 25 109 41+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 25 109 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 109 25 109 26+ , SrcSpan "tests/examples/Unicode.hs" 109 35 109 36+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 26 109 32+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 33 109 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 33 109 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 33 109 35+ , srcInfoPoints = []+ }+ "xs")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 37 109 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 37 109 39+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 37 109 39+ , srcInfoPoints = []+ }+ "<=")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 40 109 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 40 109 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 40 109 41+ , srcInfoPoints = []+ }+ "n"))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 44 109 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 47 109 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 47 109 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 47 109 49+ , srcInfoPoints = []+ }+ "|\8804")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 50 109 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 50 109 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 109 50 109 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 1 110 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 110 1 110 10+ , SrcSpan "tests/examples/Unicode.hs" 110 11 110 17+ , SrcSpan "tests/examples/Unicode.hs" 110 22 110 23+ , SrcSpan "tests/examples/Unicode.hs" 110 42 110 43+ ]+ }+ "xs |> n"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 18 110 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 18 110 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 21 110 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 21 110 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 25 110 41+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 25 110 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 110 25 110 26+ , SrcSpan "tests/examples/Unicode.hs" 110 35 110 36+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 26 110 32+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 33 110 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 33 110 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 33 110 35+ , srcInfoPoints = []+ }+ "xs")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 37 110 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 37 110 38+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 37 110 38+ , srcInfoPoints = []+ }+ ">")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 40 110 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 40 110 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 40 110 41+ , srcInfoPoints = []+ }+ "n"))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 44 110 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 47 110 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 47 110 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 47 110 49+ , srcInfoPoints = []+ }+ "|>")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 50 110 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 50 110 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 110 50 110 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 1 111 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 111 1 111 10+ , SrcSpan "tests/examples/Unicode.hs" 111 11 111 17+ , SrcSpan "tests/examples/Unicode.hs" 111 22 111 23+ , SrcSpan "tests/examples/Unicode.hs" 111 42 111 43+ ]+ }+ "xs |\8805 n"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 18 111 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 18 111 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 21 111 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 21 111 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 25 111 41+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 25 111 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 111 25 111 26+ , SrcSpan "tests/examples/Unicode.hs" 111 35 111 36+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 26 111 32+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 33 111 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 33 111 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 33 111 35+ , srcInfoPoints = []+ }+ "xs")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 37 111 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 37 111 39+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 37 111 39+ , srcInfoPoints = []+ }+ ">=")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 40 111 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 40 111 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 40 111 41+ , srcInfoPoints = []+ }+ "n"))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 44 111 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 47 111 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 47 111 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 47 111 49+ , srcInfoPoints = []+ }+ "|\8805")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 50 111 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 50 111 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 111 50 111 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 1 113 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 113 1 113 10+ , SrcSpan "tests/examples/Unicode.hs" 113 11 113 17+ , SrcSpan "tests/examples/Unicode.hs" 113 22 113 23+ , SrcSpan "tests/examples/Unicode.hs" 113 42 113 43+ ]+ }+ "n \8803| xs"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 18 113 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 18 113 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 21 113 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 21 113 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 25 113 26+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 27 113 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 27 113 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 27 113 29+ , srcInfoPoints = []+ }+ "==")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 30 113 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 113 30 113 31+ , SrcSpan "tests/examples/Unicode.hs" 113 40 113 41+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 31 113 37+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 38 113 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 38 113 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 38 113 40+ , srcInfoPoints = []+ }+ "xs"))))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 44 113 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 47 113 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 47 113 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 47 113 49+ , srcInfoPoints = []+ }+ "|\8803")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 50 113 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 50 113 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 113 50 113 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 1 114 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 114 1 114 10+ , SrcSpan "tests/examples/Unicode.hs" 114 11 114 17+ , SrcSpan "tests/examples/Unicode.hs" 114 22 114 23+ , SrcSpan "tests/examples/Unicode.hs" 114 42 114 43+ ]+ }+ "n <| xs"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 18 114 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 18 114 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 21 114 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 21 114 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 25 114 26+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 27 114 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 27 114 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 27 114 28+ , srcInfoPoints = []+ }+ "<")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 30 114 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 114 30 114 31+ , SrcSpan "tests/examples/Unicode.hs" 114 40 114 41+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 31 114 37+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 38 114 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 38 114 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 38 114 40+ , srcInfoPoints = []+ }+ "xs"))))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 44 114 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 47 114 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 47 114 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 47 114 49+ , srcInfoPoints = []+ }+ "|\8805")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 50 114 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 50 114 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 114 50 114 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 1 115 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 115 1 115 10+ , SrcSpan "tests/examples/Unicode.hs" 115 11 115 17+ , SrcSpan "tests/examples/Unicode.hs" 115 22 115 23+ , SrcSpan "tests/examples/Unicode.hs" 115 42 115 43+ ]+ }+ "n \8804| xs"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 18 115 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 18 115 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 21 115 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 21 115 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 25 115 26+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 27 115 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 27 115 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 27 115 29+ , srcInfoPoints = []+ }+ "<=")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 30 115 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 115 30 115 31+ , SrcSpan "tests/examples/Unicode.hs" 115 40 115 41+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 31 115 37+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 38 115 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 38 115 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 38 115 40+ , srcInfoPoints = []+ }+ "xs"))))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 44 115 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 47 115 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 47 115 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 47 115 49+ , srcInfoPoints = []+ }+ "|>")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 50 115 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 50 115 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 115 50 115 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 1 116 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 116 1 116 10+ , SrcSpan "tests/examples/Unicode.hs" 116 11 116 17+ , SrcSpan "tests/examples/Unicode.hs" 116 22 116 23+ , SrcSpan "tests/examples/Unicode.hs" 116 42 116 43+ ]+ }+ "n >| xs"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 18 116 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 18 116 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 21 116 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 21 116 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 25 116 26+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 27 116 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 27 116 28+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 27 116 28+ , srcInfoPoints = []+ }+ ">")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 30 116 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 116 30 116 31+ , SrcSpan "tests/examples/Unicode.hs" 116 40 116 41+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 31 116 37+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 38 116 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 38 116 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 38 116 40+ , srcInfoPoints = []+ }+ "xs"))))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 44 116 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 47 116 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 47 116 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 47 116 49+ , srcInfoPoints = []+ }+ "|\8804")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 50 116 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 50 116 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 116 50 116 51+ , srcInfoPoints = []+ }+ "n"))))+ , Rule+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 1 117 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 117 1 117 10+ , SrcSpan "tests/examples/Unicode.hs" 117 11 117 17+ , SrcSpan "tests/examples/Unicode.hs" 117 22 117 23+ , SrcSpan "tests/examples/Unicode.hs" 117 42 117 43+ ]+ }+ "n \8805| xs"+ Nothing+ (Just+ [ RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 18 117 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 18 117 20+ , srcInfoPoints = []+ }+ "xs")+ , RuleVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 21 117 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 21 117 22+ , srcInfoPoints = []+ }+ "n")+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 41+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 25 117 26+ , srcInfoPoints = []+ }+ "n")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 27 117 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 27 117 29+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 27 117 29+ , srcInfoPoints = []+ }+ ">=")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 30 117 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode.hs" 117 30 117 31+ , SrcSpan "tests/examples/Unicode.hs" 117 40 117 41+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 31 117 37+ , srcInfoPoints = []+ }+ "length")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 38 117 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 38 117 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 38 117 40+ , srcInfoPoints = []+ }+ "xs"))))))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 51+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 46+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 44 117 46+ , srcInfoPoints = []+ }+ "xs")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 47 117 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 47 117 49+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 47 117 49+ , srcInfoPoints = []+ }+ "|<")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 50 117 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 50 117 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 117 50 117 51+ , srcInfoPoints = []+ }+ "n"))))+ ]+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/Unicode.hs" 56 1 56 28)+ " f = replicate 2000 x"+ , Comment+ False+ (SrcSpan "tests/examples/Unicode.hs" 58 1 58 20)+ " lf = length f"+ , Comment+ False+ (SrcSpan "tests/examples/Unicode.hs" 59 1 59 20)+ " li = length i"+ , Comment+ False+ (SrcSpan "tests/examples/Unicode.hs" 60 1 60 20)+ " pf = lf > 300"+ , Comment+ False+ (SrcSpan "tests/examples/Unicode.hs" 61 1 61 20)+ " pi = li > 300"+ , Comment+ False+ (SrcSpan "tests/examples/Unicode.hs" 98 1 98 7)+ " \8803\8804\8805"+ , Comment+ False (SrcSpan "tests/examples/Unicode.hs" 106 1 106 10) " length"+ ]+ )
+ tests/examples/Unicode.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unicode.hs.prettyprinter.golden view
@@ -0,0 +1,98 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where+import System.Environment++main :: IO ()+main+ = do as <- getArgs+ print $ as+ print $ test 0+ print $ test2 0+ print $ testRewrite 0+ print $ testRewriteReverse 0+ print $ testRewrite2 0+ print $ testRewriteReverse2 0++test :: a -> Bool+test x = pi+ where f = replicate 2000 x+ i = repeat x+ pf = f |> 300+ pi = i |> 300++test2 :: a -> (Bool, Bool)+test2 x = (pf, pi)+ where f = replicate 2000 x+ i = repeat x+ pf = f |> 300+ pi = i |> 300++testRewrite :: a -> Bool+testRewrite x = pi+ where f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = lf > 300+ pi = li > 300++testRewriteReverse :: a -> Bool+testRewriteReverse x = pi+ where f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = 300 d lf+ pi = 300 d li++testRewrite2 :: a -> (Bool, Bool)+testRewrite2 x = (length i > 300, 300 > length i)+ where i = repeat x++testRewriteReverse2 :: a -> (Bool, Bool)+testRewriteReverse2 x = (2000 < length i, length i > 20)+ where f = replicate 2000 x+ i = repeat x+ lf = length f+ li = length i+ pf = 2000 == lf+ pi = lf e li++lengthOP ::+ (Num a, Ord a) => Bool -> (a -> a -> Bool) -> [b] -> a -> Bool+lengthOP v () [] n = 0 n+lengthOP v () xxs n = co xxs 0+ where co (_ : xs) c+ | n > c = co xs (c + 1)+ | otherwise = v+ co [] c = c n+(c) = (==)+(d) = (<=)+(e) = (>=)+(|c) = lengthOP False (c)+(|<) = lengthOP False (<)+(|d) = lengthOP False (d)+(|>) = lengthOP True (>)+(|e) = lengthOP True (e)+(|=) = lengthOP False (==)+(|==) = lengthOP False (==)+(|<=) = lengthOP False (<=)+(|>=) = lengthOP False (>=)+(c|) = flip (|c)+(<|) = flip (|e)+(d|) = flip (|>)+(>|) = flip (|d)+(e|) = flip (|<)++{-# RULES+"xs |\8803 n" forall xs n . (length xs) == n = xs |c n+"xs |< n" forall xs n . (length xs) < n = xs |< n+"xs |\8804 n" forall xs n . (length xs) <= n = xs |d n+"xs |> n" forall xs n . (length xs) > n = xs |> n+"xs |\8805 n" forall xs n . (length xs) >= n = xs |e n+"n \8803| xs" forall xs n . n == (length xs) = xs |c n+"n <| xs" forall xs n . n < (length xs) = xs |e n+"n \8804| xs" forall xs n . n <= (length xs) = xs |> n+"n >| xs" forall xs n . n > (length xs) = xs |d n+"n \8805| xs" forall xs n . n >= (length xs) = xs |< n+ #-}
+ tests/examples/Unicode2.hs view
@@ -0,0 +1,3 @@+{-# LANGUAGE UnicodeSyntax #-}++lengthOP n (⊜) = 0 ⊜ n
+ tests/examples/Unicode2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unicode2.hs.parser.golden view
@@ -0,0 +1,134 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode2.hs" 1 1 1 1+ , SrcSpan "tests/examples/Unicode2.hs" 3 1 3 1+ , SrcSpan "tests/examples/Unicode2.hs" 3 1 3 1+ , SrcSpan "tests/examples/Unicode2.hs" 3 1 3 1+ , SrcSpan "tests/examples/Unicode2.hs" 4 1 4 1+ , SrcSpan "tests/examples/Unicode2.hs" 4 1 4 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode2.hs" 1 1 1 13+ , SrcSpan "tests/examples/Unicode2.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnicodeSyntax"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 1 3 23+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 1 3 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 1 3 9+ , srcInfoPoints = []+ }+ "lengthOP")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ "n")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 12 3 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode2.hs" 3 12 3 13+ , SrcSpan "tests/examples/Unicode2.hs" 3 13 3 14+ , SrcSpan "tests/examples/Unicode2.hs" 3 14 3 15+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 13 3 14+ , srcInfoPoints = []+ }+ "\8860")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 16 3 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unicode2.hs" 3 16 3 17 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 18 3 23+ , srcInfoPoints = []+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 18 3 19+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 18 3 19+ , srcInfoPoints = []+ }+ 0+ "0"))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 20 3 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 20 3 21+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 20 3 21+ , srcInfoPoints = []+ }+ "\8860")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 22 3 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 22 3 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unicode2.hs" 3 22 3 23+ , srcInfoPoints = []+ }+ "n")))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/Unicode2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unicode2.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@+{-# LANGUAGE UnicodeSyntax #-}+lengthOP n () = 0 n
+ tests/examples/UnicodeArrow.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnicodeSyntax #-}++arrowTest ∷ String → String+arrowTest input =+ case input of+ "hello" → "world"+ "world" → "hello"+ otherwise → "unknow"
+ tests/examples/UnicodeArrow.hs.exactprinter.golden view
@@ -0,0 +1,9 @@+{-# LANGUAGE UnicodeSyntax #-}++arrowTest ::String -> String+arrowTest input =+ case input of+ "hello" ->"world"+ "world" ->"hello"+ otherwise ->"unknow"+
+ tests/examples/UnicodeArrow.hs.parser.golden view
@@ -0,0 +1,271 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 4 1+ , SrcSpan "tests/examples/UnicodeArrow.hs" 9 1 9 1+ , SrcSpan "tests/examples/UnicodeArrow.hs" 9 1 9 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnicodeArrow.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnicodeSyntax"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 3 11 3 12 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 1 3 10+ , srcInfoPoints = []+ }+ "arrowTest"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 3 20 3 21 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 13 3 19+ , srcInfoPoints = []+ }+ "String")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 24 3 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 24 3 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 3 24 3 30+ , srcInfoPoints = []+ }+ "String"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 8 27+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 8 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 1 4 10+ , srcInfoPoints = []+ }+ "arrowTest")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 11 4 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 11 4 16+ , srcInfoPoints = []+ }+ "input")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 4 17 8 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 4 17 4 18 ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 5 8 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 5 5 5 9+ , SrcSpan "tests/examples/UnicodeArrow.hs" 5 16 5 18+ , SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 7+ , SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 7+ , SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 7+ , SrcSpan "tests/examples/UnicodeArrow.hs" 9 1 9 0+ ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 10 5 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 10 5 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 5 10 5 15+ , srcInfoPoints = []+ }+ "input")))+ [ Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 24+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 14+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 14+ , srcInfoPoints = []+ })+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 7 6 14+ , srcInfoPoints = []+ }+ "hello"+ "hello"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 15 6 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 6 15 6 16 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 6 17 6 24+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeArrow.hs" 6 17 6 24+ , srcInfoPoints = []+ }+ "world"+ "world")))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 24+ , srcInfoPoints = []+ }+ (PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 14+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 14+ , srcInfoPoints = []+ })+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 7 7 14+ , srcInfoPoints = []+ }+ "world"+ "world"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 15 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 7 15 7 16 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 7 17 7 24+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeArrow.hs" 7 17 7 24+ , srcInfoPoints = []+ }+ "hello"+ "hello")))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 7 8 16+ , srcInfoPoints = []+ }+ "otherwise"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 17 8 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeArrow.hs" 8 17 8 18 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeArrow.hs" 8 19 8 27+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeArrow.hs" 8 19 8 27+ , srcInfoPoints = []+ }+ "unknow"+ "unknow")))+ Nothing+ ]))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/UnicodeArrow.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeArrow.hs.prettyprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnicodeSyntax #-}++arrowTest :: String -> String+arrowTest input+ = case input of+ "hello" -> "world"+ "world" -> "hello"+ otherwise -> "unknow"
+ tests/examples/UnicodeIdents.hs view
@@ -0,0 +1,2 @@+猫 = ()+自乗 x = x * x
+ tests/examples/UnicodeIdents.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeIdents.hs.parser.golden view
@@ -0,0 +1,155 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 3 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 1+ , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1+ ]+ }+ Nothing+ []+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 7+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2+ , srcInfoPoints = []+ }+ "\29483"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 4 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6+ , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6+ , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6+ , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7+ ]+ }))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 3+ , srcInfoPoints = []+ }+ "\33258\20055")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 7 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ "*")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13+ , srcInfoPoints = []+ }+ "x")))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/UnicodeIdents.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeIdents.hs.prettyprinter.golden view
@@ -0,0 +1,2 @@++ = ()+êW x = x * x
+ tests/examples/UnicodeRelation.hs view
@@ -0,0 +1,19 @@+{-# LANGUAGE UnicodeSyntax #-}++import Prelude.Unicode++testAnd ∷ Int → Int → Bool+testAnd a b =+ let b₁ = a ≤ 3+ b₂ = b ≥ 5+ in b₁ ∧ b₂++testOr ∷ Int → Int → Int → Int → Int → Bool+testOr a b c d e =+ let b₁ = a ≤ 3+ b₂ = b ≢ 5+ b₃ = c ≮ 5+ b₄ = d ≯ 6+ b₅ = e ∈ [1,2,3,4]+ b₆ = e ∉ [5,6,7,8]+ in b₁ ∨ b₂ ∨ b₃ ∨ b₄ ∨ b₅ ∨ b₆
+ tests/examples/UnicodeRelation.hs.exactprinter.golden view
@@ -0,0 +1,20 @@+{-# LANGUAGE UnicodeSyntax #-}++import Prelude.Unicode++testAnd ::Int ->Int ->Bool+testAnd a b =+ let b = a d 3+ b = b e 5+ in b ' b++testOr ::Int ->Int ->Int ->Int ->Int ->Bool+testOr a b c d e =+ let b = a d 3+ b = b b 5+ b = c n 5+ b = d o 6+ b = e [1,2,3,4]+ b = e [5,6,7,8]+ in b ( b ( b ( b ( b ( b+
+ tests/examples/UnicodeRelation.hs.parser.golden view
@@ -0,0 +1,1637 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 20 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 5 1 5 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 6 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 11 1 11 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 12 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 20 1 20 1+ , SrcSpan "tests/examples/UnicodeRelation.hs" 20 1 20 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnicodeRelation.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnicodeSyntax"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 3 1 3 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 3 8 3 23+ , srcInfoPoints = []+ }+ "Prelude.Unicode"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 1 5 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 5 9 5 10 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeRelation.hs" 5 1 5 8+ , srcInfoPoints = []+ }+ "testAnd"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 5 15 5 16 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 11 5 14+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 5 21 5 22 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 17 5 20+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 23 5 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 23 5 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 5 23 5 27+ , srcInfoPoints = []+ }+ "Bool")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 9 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeRelation.hs" 6 1 6 8+ , srcInfoPoints = []+ }+ "testAnd")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 6 9 6 10+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 6 11 6 12+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 6 13 9 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 6 13 6 14 ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 5 9 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 7 5 7 8+ , SrcSpan "tests/examples/UnicodeRelation.hs" 9 5 9 7+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 8 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 9 5 9 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 9 7 11+ , srcInfoPoints = []+ }+ "b\8321"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 12 7 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 7 12 7 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 14 7 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 7 16 7 17+ , srcInfoPoints = []+ }+ "\8804")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 18 7 19+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 7 18 7 19+ , srcInfoPoints = []+ }+ 3+ "3"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 9 8 11+ , srcInfoPoints = []+ }+ "b\8322"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 12 8 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 8 12 8 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 14 8 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ "\8805")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 18 8 19+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 8 18 8 19+ , srcInfoPoints = []+ }+ 5+ "5"))))+ Nothing+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 8 9 10+ , srcInfoPoints = []+ }+ "b\8321")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 11 9 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 11 9 12+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 11 9 12+ , srcInfoPoints = []+ }+ "\8743")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 9 13 9 15+ , srcInfoPoints = []+ }+ "b\8322"))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 1 11 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 8 11 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 1 11 7+ , srcInfoPoints = []+ }+ "testOr"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 14 11 15 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 10 11 13+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 20 11 21 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 16 11 19+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 26 11 27 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 22 11 25+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 32 11 33 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 28 11 31+ , srcInfoPoints = []+ }+ "Int")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 11 38 11 39 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 34 11 37+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 40 11 44+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 40 11 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 11 40 11 44+ , srcInfoPoints = []+ }+ "Bool"))))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 19 35+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 19 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 1 12 7+ , srcInfoPoints = []+ }+ "testOr")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 8 12 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 8 12 9+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ "b")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 12 12 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 12 12 13+ , srcInfoPoints = []+ }+ "c")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 14 12 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 14 12 15+ , srcInfoPoints = []+ }+ "d")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 16 12 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 16 12 17+ , srcInfoPoints = []+ }+ "e")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 12 18 19 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 12 18 12 19 ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 5 19 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 13 5 13 8+ , SrcSpan "tests/examples/UnicodeRelation.hs" 19 5 19 7+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 18 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 9+ , SrcSpan "tests/examples/UnicodeRelation.hs" 19 5 19 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 9 13 11+ , srcInfoPoints = []+ }+ "b\8321"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 12 13 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 13 12 13 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 14 13 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ "\8804")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 18 13 19+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 13 18 13 19+ , srcInfoPoints = []+ }+ 3+ "3"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 9 14 11+ , srcInfoPoints = []+ }+ "b\8322"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 12 14 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 14 12 14 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 14 14 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 14 14 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 14 14 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 14 14 14 15+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 16 14 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 16 14 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 14 16 14 17+ , srcInfoPoints = []+ }+ "\8802")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 18 14 19+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 14 18 14 19+ , srcInfoPoints = []+ }+ 5+ "5"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 9 15 11+ , srcInfoPoints = []+ }+ "b\8323"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 12 15 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 15 12 15 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 14 15 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 14 15 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 14 15 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 15 14 15 15+ , srcInfoPoints = []+ }+ "c")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 16 15 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 16 15 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 15 16 15 17+ , srcInfoPoints = []+ }+ "\8814")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 18 15 19+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 15 18 15 19+ , srcInfoPoints = []+ }+ 5+ "5"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 9 16 11+ , srcInfoPoints = []+ }+ "b\8324"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 12 16 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 16 12 16 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 14 16 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 14 16 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 14 16 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 16 14 16 15+ , srcInfoPoints = []+ }+ "d")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 16 16 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 16 16 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 16 16 16 17+ , srcInfoPoints = []+ }+ "\8815")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 18 16 19+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 16 18 16 19+ , srcInfoPoints = []+ }+ 6+ "6"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 9 17 11+ , srcInfoPoints = []+ }+ "b\8325"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 12 17 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 17 12 17 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 14 17 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 14 17 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 14 17 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 14 17 15+ , srcInfoPoints = []+ }+ "e")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 16 17 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 16 17 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 16 17 17+ , srcInfoPoints = []+ }+ "\8712")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 17 18 17 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 17 18 17 19+ , SrcSpan "tests/examples/UnicodeRelation.hs" 17 20 17 21+ , SrcSpan "tests/examples/UnicodeRelation.hs" 17 22 17 23+ , SrcSpan "tests/examples/UnicodeRelation.hs" 17 24 17 25+ , SrcSpan "tests/examples/UnicodeRelation.hs" 17 26 17 27+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 19 17 20+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 19 17 20+ , srcInfoPoints = []+ }+ 1+ "1")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 21 17 22+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 21 17 22+ , srcInfoPoints = []+ }+ 2+ "2")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 23 17 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 23 17 24+ , srcInfoPoints = []+ }+ 3+ "3")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 25 17 26+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 17 25 17 26+ , srcInfoPoints = []+ }+ 4+ "4")+ ])))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 9 18 11+ , srcInfoPoints = []+ }+ "b\8326"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 12 18 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 18 12 18 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 14 18 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 14 18 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 14 18 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 14 18 15+ , srcInfoPoints = []+ }+ "e")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 16 18 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 16 18 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 16 18 17+ , srcInfoPoints = []+ }+ "\8713")))+ (List+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 18 18 18 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeRelation.hs" 18 18 18 19+ , SrcSpan "tests/examples/UnicodeRelation.hs" 18 20 18 21+ , SrcSpan "tests/examples/UnicodeRelation.hs" 18 22 18 23+ , SrcSpan "tests/examples/UnicodeRelation.hs" 18 24 18 25+ , SrcSpan "tests/examples/UnicodeRelation.hs" 18 26 18 27+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 19 18 20+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 19 18 20+ , srcInfoPoints = []+ }+ 5+ "5")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 21 18 22+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 21 18 22+ , srcInfoPoints = []+ }+ 6+ "6")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 23 18 24+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 23 18 24+ , srcInfoPoints = []+ }+ 7+ "7")+ , Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 25 18 26+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 18 25 18 26+ , srcInfoPoints = []+ }+ 8+ "8")+ ])))+ Nothing+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 35+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 30+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 25+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 20+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 8 19 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 8 19 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 8 19 10+ , srcInfoPoints = []+ }+ "b\8321")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 11 19 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 11 19 12+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 11 19 12+ , srcInfoPoints = []+ }+ "\8744")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 13 19 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 13 19 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 13 19 15+ , srcInfoPoints = []+ }+ "b\8322"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 16 19 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 16 19 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 16 19 17+ , srcInfoPoints = []+ }+ "\8744")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 18 19 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 18 19 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeRelation.hs" 19 18 19 20+ , srcInfoPoints = []+ }+ "b\8323"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 21 19 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 21 19 22+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 21 19 22+ , srcInfoPoints = []+ }+ "\8744")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 23 19 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 23 19 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 23 19 25+ , srcInfoPoints = []+ }+ "b\8324"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 26 19 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 26 19 27+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 26 19 27+ , srcInfoPoints = []+ }+ "\8744")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 28 19 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 28 19 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 28 19 30+ , srcInfoPoints = []+ }+ "b\8325"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 31 19 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 31 19 32+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 31 19 32+ , srcInfoPoints = []+ }+ "\8744")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 33 19 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 33 19 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeRelation.hs" 19 33 19 35+ , srcInfoPoints = []+ }+ "b\8326"))))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/UnicodeRelation.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeRelation.hs.prettyprinter.golden view
@@ -0,0 +1,18 @@+{-# LANGUAGE UnicodeSyntax #-}+import Prelude.Unicode++testAnd :: Int -> Int -> Bool+testAnd a b+ = let b = a d 3+ b = b e 5+ in b ' b++testOr :: Int -> Int -> Int -> Int -> Int -> Bool+testOr a b c d e+ = let b = a d 3+ b = b b 5+ b = c n 5+ b = d o 6+ b = e [1, 2, 3, 4]+ b = e [5, 6, 7, 8]+ in b ( b ( b ( b ( b ( b
+ tests/examples/UnicodeSubscript.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++data Point = Point+ { pointX, pointY ∷ Double+ , name ∷ String+ } deriving (Show)++distance ∷ Point → Point → Double+distance x y =+ let t₁ = (pointX x - pointX y)^2+ t₂ = (pointY x - pointY y)^2+ in sqrt $ t₁ + t₂
+ tests/examples/UnicodeSubscript.hs.exactprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++data Point = Point+ { pointX, pointY ::Double+ , name ::String+ } deriving (Show)++distance ::Point ->Point ->Double+distance x y =+ let t = (pointX x - pointX y)^2+ t = (pointY x - pointY y)^2+ in sqrt $ t + t+
+ tests/examples/UnicodeSubscript.hs.parser.golden view
@@ -0,0 +1,1036 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 14 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 1+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 1+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 4 1 4 1+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 9 1 9 1+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 10 1+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 14 1 14 1+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 14 1 14 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 2 1 2 7+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 2 13 2 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ "Main")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnicodeSyntax"+ ]+ ]+ []+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 1 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 12 4 13 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 1 4 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 6 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 6 4 11+ , srcInfoPoints = []+ }+ "Point"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 14 7 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 5 5 6+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 6 5 6 6+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 7 5 7 6+ ]+ }+ Nothing+ Nothing+ (RecDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 14 7 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 5 5 6+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 6 5 6 6+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 7 5 7 6+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 4 14 4 19+ , srcInfoPoints = []+ }+ "Point")+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 7 5 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 13 5 14+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 5 22 5 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 7 5 13+ , srcInfoPoints = []+ }+ "pointX"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 15 5 21+ , srcInfoPoints = []+ }+ "pointY"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 24 5 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 24 5 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 5 24 5 30+ , srcInfoPoints = []+ }+ "Double")))+ , FieldDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 6 7 6 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 6 22 6 23 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 6 7 6 11+ , srcInfoPoints = []+ }+ "name"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 6 24 6 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 6 24 6 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 6 24 6 30+ , srcInfoPoints = []+ }+ "String")))+ ])+ ]+ [ Deriving+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 7 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 7 7 15 ]+ }+ Nothing+ [ IParen+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 16 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 16 7 17+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 7 21 7 22+ ]+ }+ (IRule+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (IHCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 7 17 7 21+ , srcInfoPoints = []+ }+ "Show"))))+ ]+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 1 9 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 10 9 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 1 9 9+ , srcInfoPoints = []+ }+ "distance"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 18 9 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 12 9 17+ , srcInfoPoints = []+ }+ "Point")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 26 9 27 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 20 9 25+ , srcInfoPoints = []+ }+ "Point")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 28 9 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 28 9 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 9 28 9 34+ , srcInfoPoints = []+ }+ "Double")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 13 22+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 13 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 1 10 9+ , srcInfoPoints = []+ }+ "distance")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 10 10 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 10 10 11+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 12 10 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 12 10 13+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 14 13 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 10 14 10 15 ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 5 13 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 5 11 8+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 13 5 13 7+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 12 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 9+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 9+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 13 5 13 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 37+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 9 11 11+ , srcInfoPoints = []+ }+ "t\8321"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 12 11 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 12 11 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 14 11 37+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 14 11 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 14 11 15+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 11 34 11 35+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 11 15 11 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 11 15 11 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 15+ 11+ 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 15+ 11+ 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 15+ 11+ 21+ , srcInfoPoints = []+ }+ "pointX")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 22+ 11+ 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 22+ 11+ 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 22+ 11+ 23+ , srcInfoPoints = []+ }+ "x"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 11 24 11 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 24+ 11+ 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 24+ 11+ 25+ , srcInfoPoints = []+ }+ "-")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 11 26 11 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 26+ 11+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 26+ 11+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 26+ 11+ 32+ , srcInfoPoints = []+ }+ "pointX")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 33+ 11+ 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 33+ 11+ 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 11+ 33+ 11+ 34+ , srcInfoPoints = []+ }+ "y"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 35 11 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 11 35 11 36+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 11 35 11 36+ , srcInfoPoints = []+ }+ "^")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 11 36 11 37+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 11 36 11 37+ , srcInfoPoints = []+ }+ 2+ "2"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 37+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 9 12 11+ , srcInfoPoints = []+ }+ "t\8322"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 12 12 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 12 12 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 14 12 37+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 14 12 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 14 12 15+ , SrcSpan "tests/examples/UnicodeSubscript.hs" 12 34 12 35+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 12 15 12 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 12 15 12 23+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 15+ 12+ 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 15+ 12+ 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 15+ 12+ 21+ , srcInfoPoints = []+ }+ "pointY")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 22+ 12+ 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 22+ 12+ 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 22+ 12+ 23+ , srcInfoPoints = []+ }+ "x"))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 12 24 12 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 24+ 12+ 25+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 24+ 12+ 25+ , srcInfoPoints = []+ }+ "-")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 12 26 12 34+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 26+ 12+ 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 26+ 12+ 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 26+ 12+ 32+ , srcInfoPoints = []+ }+ "pointY")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 33+ 12+ 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 33+ 12+ 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs"+ 12+ 33+ 12+ 34+ , srcInfoPoints = []+ }+ "y"))))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 35 12 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 12 35 12 36+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 12 35 12 36+ , srcInfoPoints = []+ }+ "^")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 12 36 12 37+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSubscript.hs" 12 36 12 37+ , srcInfoPoints = []+ }+ 2+ "2"))))+ Nothing+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 8 13 12+ , srcInfoPoints = []+ }+ "sqrt")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 13 13 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 13 13 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 13 13 14+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 15 13 17+ , srcInfoPoints = []+ }+ "t\8321")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 18 13 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 18 13 19+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 18 13 19+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 20 13 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 20 13 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSubscript.hs" 13 20 13 22+ , srcInfoPoints = []+ }+ "t\8322")))))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/UnicodeSubscript.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeSubscript.hs.prettyprinter.golden view
@@ -0,0 +1,11 @@+{-# LANGUAGE UnicodeSyntax #-}+module Main where++data Point = Point{pointX, pointY :: Double, name :: String}+ deriving (Show)++distance :: Point -> Point -> Double+distance x y+ = let t = (pointX x - pointX y) ^ 2+ t = (pointY x - pointY y) ^ 2+ in sqrt $ t + t
+ tests/examples/UnicodeSuperscript.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE UnicodeSyntax #-}++dumy ∷ Double → Double → Double+dumy a b =+ let a² = a ★ a+ b² = b ★ b+ in sqrt $ a² + b²
+ tests/examples/UnicodeSuperscript.hs.exactprinter.golden view
@@ -0,0 +1,8 @@+{-# LANGUAGE UnicodeSyntax #-}++dumy ::Double ->Double ->Double+dumy a b =+ let a² = a a+ b² = b b+ in sqrt $ a² + b²+
+ tests/examples/UnicodeSuperscript.hs.parser.golden view
@@ -0,0 +1,498 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 8 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 4 1+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 8 1 8 1+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 8 1 8 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 1 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 28 1 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnicodeSyntax"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 6 3 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 1 3 5+ , srcInfoPoints = []+ }+ "dumy"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 15 3 16 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 8 3 14+ , srcInfoPoints = []+ }+ "Double")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 24 3 25 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 17 3 23+ , srcInfoPoints = []+ }+ "Double")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 26 3 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 26 3 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 3 26 3 32+ , srcInfoPoints = []+ }+ "Double")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 7 22+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 1 4 5+ , srcInfoPoints = []+ }+ "dumy")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 10 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 4 10 4 11 ]+ }+ (Let+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 5 7 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 5 5 8+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 5 7 7+ ]+ }+ (BDecls+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 6 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 9+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 9+ , SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 5 7 0+ ]+ }+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 9 5 11+ , srcInfoPoints = []+ }+ "a\178"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 12 5 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 12 5 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 14 5 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 5 14 5 15+ , srcInfoPoints = []+ }+ "a")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 5 16 5 17+ , srcInfoPoints = []+ }+ "\9733")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 5 18 5 19+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 19+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 9 6 11+ , srcInfoPoints = []+ }+ "b\178"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 12 6 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 12 6 13 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 14 6 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 6 14 6 15+ , srcInfoPoints = []+ }+ "b")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ "\9733")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/UnicodeSuperscript.hs" 6 18 6 19+ , srcInfoPoints = []+ }+ "b")))))+ Nothing+ ])+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 8 7 12+ , srcInfoPoints = []+ }+ "sqrt")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 13 7 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 13 7 14+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 13 7 14+ , srcInfoPoints = []+ }+ "$")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 15 7 17+ , srcInfoPoints = []+ }+ "a\178")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 18 7 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 18 7 19+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 18 7 19+ , srcInfoPoints = []+ }+ "+")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 20 7 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 20 7 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSuperscript.hs" 7 20 7 22+ , srcInfoPoints = []+ }+ "b\178")))))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/UnicodeSuperscript.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeSuperscript.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE UnicodeSyntax #-}++dumy :: Double -> Double -> Double+dumy a b+ = let a² = a a+ b² = b b+ in sqrt $ a² + b²
+ tests/examples/UnicodeSyntax.hs view
@@ -0,0 +1,15 @@+{-# LANGUAGE UnicodeSyntax, ExplicitForAll #-}+module UnicodeSyntax where++import System.Environment (getArgs)++main ∷ IO ()+main = do+ as ← getArgs+ print $ test 0++test ∷ Int → Bool+test x = x*5 == x+8++id1 ∷ ∀ a . a → a+id1 x = x
+ tests/examples/UnicodeSyntax.hs.exactprinter.golden view
@@ -0,0 +1,16 @@+{-# LANGUAGE UnicodeSyntax, ExplicitForAll #-}+module UnicodeSyntax where++import System.Environment (getArgs)++main ::IO ()+main = do+ as <-getArgs+ print $ test 0++test ::Int ->Bool+test x = x*5 == x+8++id1 ::foralla.a->a+id1 x = x+
+ tests/examples/UnicodeSyntax.hs.parser.golden view
@@ -0,0 +1,678 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 16 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 4 1 4 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 1 6 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 7 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 14 1 14 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 16 1 16 1+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 16 1 16 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 2 1 2 7+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "UnicodeSyntax")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 1 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 1 27 1 28+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 1 44 1 47+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 14 1 27+ , srcInfoPoints = []+ }+ "UnicodeSyntax"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 1 29 1 43+ , srcInfoPoints = []+ }+ "ExplicitForAll"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 1 4 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 4 1 4 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 8 4 26+ , srcInfoPoints = []+ }+ "System.Environment"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs =+ Just+ (ImportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 27 4 36+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 4 27 4 28+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 4 35 4 36+ ]+ }+ False+ [ IVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 28 4 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 4 28 4 35+ , srcInfoPoints = []+ }+ "getArgs")+ ])+ }+ ]+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 1 6 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 6 6 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 1 6 5+ , srcInfoPoints = []+ }+ "main"+ ]+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 13+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 8 6 10+ , srcInfoPoints = []+ }+ "IO")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 12+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 12 6 13+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 12+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 12 6 13+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 6 11 6 12+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 6 12 6 13+ ]+ }))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 9 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 1 7 5+ , srcInfoPoints = []+ }+ "main"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 6 9 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 7 6 7 7 ]+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 7 8 9 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 7 8 7 10+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 3+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 3+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 8 6 8 7 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 3 8 5+ , srcInfoPoints = []+ }+ "as"))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 8 8 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 8 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 8 8 8 15+ , srcInfoPoints = []+ }+ "getArgs")))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 17+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 3 9 8+ , srcInfoPoints = []+ }+ "print")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 9 9 10+ , srcInfoPoints = []+ }+ "$")))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 9 11 9 15+ , srcInfoPoints = []+ }+ "test")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ 0+ "0"))))+ ]))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 6 11 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 11 1 11 5+ , srcInfoPoints = []+ }+ "test"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 12 11 13 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 8 11 11+ , srcInfoPoints = []+ }+ "Int")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 14 11 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 14 11 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 11 14 11 18+ , srcInfoPoints = []+ }+ "Bool"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 20+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 12 1 12 5+ , srcInfoPoints = []+ }+ "test")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 12 6 12 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 12 6 12 7+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 8 12 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 8 12 9 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 20+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 11 12 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 11 12 12+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 11 12 12+ , srcInfoPoints = []+ }+ "*")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 12 12 13+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 12 12 13+ , srcInfoPoints = []+ }+ 5+ "5")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 14 12 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 14 12 16+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 14 12 16+ , srcInfoPoints = []+ }+ "==")))+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 20+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 17 12 18+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ "+")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 19 12 20+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 12 19 12 20+ , srcInfoPoints = []+ }+ 8+ "8")))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 1 14 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 5 14 6 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 14 1 14 4+ , srcInfoPoints = []+ }+ "id1"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 7 14 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 7 14 8+ , SrcSpan "tests/examples/UnicodeSyntax.hs" 14 11 14 12+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 13 14 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 15 14 16 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 13 14 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 13 14 14+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 17 14 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 14 17 14 18+ , srcInfoPoints = []+ }+ "a"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 10+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 15 1 15 4+ , srcInfoPoints = []+ }+ "id1")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 15 5 15 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/UnicodeSyntax.hs" 15 5 15 6+ , srcInfoPoints = []+ }+ "x")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 7 15 10+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 7 15 8 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnicodeSyntax.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ "x"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/UnicodeSyntax.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnicodeSyntax.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE UnicodeSyntax, ExplicitForAll #-}+module UnicodeSyntax where+import System.Environment (getArgs)++main :: IO ()+main+ = do as <- getArgs+ print $ test 0++test :: Int -> Bool+test x = x * 5 == x + 8++id1 :: forall a . a -> a+id1 x = x
+ tests/examples/UnindentedPragmaClose.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE MultiParamTypeClasses+#-}+f :: Int+f = 4
+ tests/examples/UnindentedPragmaClose.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnindentedPragmaClose.hs.parser.golden view
@@ -0,0 +1,114 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 1 1+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 1+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 1+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 5 1 5 1+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 2 4+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 1 1 13+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 2 1 2 1+ , SrcSpan "tests/examples/UnindentedPragmaClose.hs" 2 1 2 4+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 1 14 1 35+ , srcInfoPoints = []+ }+ "MultiParamTypeClasses"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 9+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 3 3 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 1 3 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 3 6 3 9+ , srcInfoPoints = []+ }+ "Int")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 6+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 3 4 6+ , srcInfoPoints =+ [ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 3 4 4 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/UnindentedPragmaClose.hs" 4 5 4 6+ , srcInfoPoints = []+ }+ 4+ "4")))+ Nothing+ ]+ , []+ )
+ tests/examples/UnindentedPragmaClose.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/UnindentedPragmaClose.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE MultiParamTypeClasses #-}++f :: Int+f = 4
+ tests/examples/Unpack.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE GADTs #-}++data CmmNode e x where+ CmmEntry :: {-# UNPACK #-} !Int -> CmmNode e x++data UI = UI {-# UNPACK #-} !Int
+ tests/examples/Unpack.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unpack.hs.parser.golden view
@@ -0,0 +1,274 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 1 1 7 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unpack.hs" 1 1 1 1+ , SrcSpan "tests/examples/Unpack.hs" 3 1 3 1+ , SrcSpan "tests/examples/Unpack.hs" 3 1 3 1+ , SrcSpan "tests/examples/Unpack.hs" 3 1 3 1+ , SrcSpan "tests/examples/Unpack.hs" 6 1 6 1+ , SrcSpan "tests/examples/Unpack.hs" 7 1 7 1+ , SrcSpan "tests/examples/Unpack.hs" 7 1 7 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 1 1 1 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unpack.hs" 1 1 1 13+ , SrcSpan "tests/examples/Unpack.hs" 1 20 1 23+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 1 14 1 19+ , srcInfoPoints = []+ }+ "GADTs"+ ]+ ]+ []+ [ GDataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 1 6 0+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unpack.hs" 3 18 3 23+ , SrcSpan "tests/examples/Unpack.hs" 4 9 4 9+ , SrcSpan "tests/examples/Unpack.hs" 6 1 6 0+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 1 3 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 17+ , srcInfoPoints = []+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 15+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 6 3 13+ , srcInfoPoints = []+ }+ "CmmNode"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 14 3 15+ , srcInfoPoints = []+ }+ "e")))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 16 3 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 3 16 3 17+ , srcInfoPoints = []+ }+ "x")))+ Nothing+ [ GadtDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 9 4 55+ , srcInfoPoints = [ SrcSpan "tests/examples/Unpack.hs" 4 18 4 20 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 9 4 17+ , srcInfoPoints = []+ }+ "CmmEntry")+ Nothing+ Nothing+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 21 4 55+ , srcInfoPoints = [ SrcSpan "tests/examples/Unpack.hs" 4 41 4 43 ]+ }+ (TyBang+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 21 4 40+ , srcInfoPoints = []+ }+ (BangedTy+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 36 4 37+ , srcInfoPoints = []+ })+ (Unpack+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 21 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unpack.hs" 4 21 4 31+ , SrcSpan "tests/examples/Unpack.hs" 4 32 4 35+ ]+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 37 4 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 37 4 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 37 4 40+ , srcInfoPoints = []+ }+ "Int"))))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 55+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 53+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 44 4 51+ , srcInfoPoints = []+ }+ "CmmNode")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 52 4 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 52 4 53+ , srcInfoPoints = []+ }+ "e")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 54 4 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 54 4 55+ , srcInfoPoints = []+ }+ "x"))))+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 1 6 33+ , srcInfoPoints = [ SrcSpan "tests/examples/Unpack.hs" 6 9 6 10 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 1 6 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 6 6 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 6 6 8+ , srcInfoPoints = []+ }+ "UI"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 11 6 33+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 11 6 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 11 6 13+ , srcInfoPoints = []+ }+ "UI")+ [ TyBang+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 14 6 33+ , srcInfoPoints = []+ }+ (BangedTy+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 29 6 30+ , srcInfoPoints = []+ })+ (Unpack+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 14 6 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Unpack.hs" 6 14 6 24+ , SrcSpan "tests/examples/Unpack.hs" 6 25 6 28+ ]+ })+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 30 6 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 30 6 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 6 30 6 33+ , srcInfoPoints = []+ }+ "Int")))+ ])+ ]+ []+ ]+ , []+ )
+ tests/examples/Unpack.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Unpack.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE GADTs #-}++data CmmNode e x where+ CmmEntry :: {-# UNPACK #-} !Int -> CmmNode e x++data UI = UI {-# UNPACK #-} !Int
+ tests/examples/ViewPatterns.hs view
@@ -0,0 +1,5 @@+{-# LANGUAGE ViewPatterns #-}+f (id -> Just _) "" = ""++g (id -> True) = False+
+ tests/examples/ViewPatterns.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ViewPatterns.hs.parser.golden view
@@ -0,0 +1,229 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 1 1 6 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 1 1 1 1+ , SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 1+ , SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 1+ , SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 1+ , SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 1+ , SrcSpan "tests/examples/ViewPatterns.hs" 6 1 6 1+ , SrcSpan "tests/examples/ViewPatterns.hs" 6 1 6 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 1 1 1 13+ , SrcSpan "tests/examples/ViewPatterns.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "ViewPatterns"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 25+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 1 2 2+ , srcInfoPoints = []+ }+ "f")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 3 2 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 2 3 2 4+ , SrcSpan "tests/examples/ViewPatterns.hs" 2 16 2 17+ ]+ }+ (PViewPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 2 7 2 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 4 2 6+ , srcInfoPoints = []+ }+ "id")))+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 10 2 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 10 2 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 10 2 14+ , srcInfoPoints = []+ }+ "Just"))+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 15 2 16+ , srcInfoPoints = []+ }+ ]))+ , PLit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 18 2 20+ , srcInfoPoints = []+ }+ (Signless+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 18 2 20+ , srcInfoPoints = []+ })+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 18 2 20+ , srcInfoPoints = []+ }+ ""+ "")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 21 2 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 2 21 2 22 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 23 2 25+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 2 23 2 25+ , srcInfoPoints = []+ }+ ""+ "")))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 23+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 1 4 2+ , srcInfoPoints = []+ }+ "g")+ [ PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 3 4 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 4 3 4 4+ , SrcSpan "tests/examples/ViewPatterns.hs" 4 14 4 15+ ]+ }+ (PViewPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 4 7 4 9 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 4 4 6+ , srcInfoPoints = []+ }+ "id")))+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 10 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 10 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 10 4 14+ , srcInfoPoints = []+ }+ "True"))+ []))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 16 4 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ViewPatterns.hs" 4 16 4 17 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 18 4 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 18 4 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ViewPatterns.hs" 4 18 4 23+ , srcInfoPoints = []+ }+ "False"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/ViewPatterns.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ViewPatterns.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE ViewPatterns #-}+f (id -> Just _) "" = ""+g (id -> True) = False
+ tests/examples/Vta1.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE TypeApplications, ScopedTypeVariables, PolyKinds,+ TypeFamilies, RankNTypes,+ FlexibleContexts #-}+-- tests about visible type application++module Vta1 where++quad :: a -> b -> c -> d -> (a, b, c, d)+quad = (,,,)++silly = quad @_ @Bool @Char @_ 5 True 'a' "Hello"++pairup_nosig x y = (x, y)++pairup_sig :: a -> b -> (a,b)+pairup_sig u w = (u, w)++answer_sig = pairup_sig @Bool @Int False 7 --+-- (False, 7) :: (Bool, Int)++answer_read = show (read @Int "3") -- "3" :: String+answer_show = show @Integer (read "5") -- "5" :: String+answer_showread = show @Int (read @Int "7") -- "7" :: String++intcons a = (:) @Int a++intpair x y = pairup_sig @Int x y++answer_pairup = pairup_sig @Int 5 True -- (5, True) :: (Int, Bool)+answer_intpair = intpair 1 "hello" -- (1, "hello") :: (Int, String)+answer_intcons = intcons 7 [] -- [7] :: [Int]++type family F a+type instance F Char = Bool++g :: F a -> a+g _ = undefined++f :: Char+f = g True++answer = g @Char False++mapSame :: forall b. (forall a. a -> a) -> [b] -> [b]+mapSame _ [] = []+mapSame fun (x:xs) = fun @b x : (mapSame @b fun xs)++pair :: forall a. a-> (forall b. b -> (a, b))+pair x y = (x, y)++b = pair @Int 3 @Bool True+c = mapSame id [1,2,3]+d = pair 3 @Bool True++pairnum :: forall a. Num a => forall b. b -> (a, b)+pairnum = pair 3++e = (pair 3 :: forall a. Num a => forall b. b -> (a, b)) @Int @Bool True+h = pairnum @Int @Bool True++data First (a :: * -> *) = F+data Proxy (a :: k) = P -- This expands to P (kind variable) (type variable)+data Three (a :: * -> k -> *) = T++foo :: Proxy a -> Int+foo _ = 0++first :: First a -> Int+first _ = 0++fTest = first F+fMaybe = first @Maybe F++test = foo P+bar = foo @Bool P -- should work++too :: Three a -> Int+too _ = 3++threeBase = too T+threeOk = too @Either T++blah = Nothing @Int++newtype N = MkN { unMkN :: forall a. Show a => a -> String }++n = MkN show++boo = unMkN n @Bool++boo2 :: forall (a :: * -> *) . Proxy a -> Bool+boo2 _ = False++base = boo2 P+bar'= boo2 @Maybe P -- should work
+ tests/examples/Vta1.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta1.hs.parser.golden view
@@ -0,0 +1,5436 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 1 96 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 1 1 1 1+ , SrcSpan "tests/examples/Vta1.hs" 6 1 6 1+ , SrcSpan "tests/examples/Vta1.hs" 6 1 6 1+ , SrcSpan "tests/examples/Vta1.hs" 8 1 8 1+ , SrcSpan "tests/examples/Vta1.hs" 9 1 9 1+ , SrcSpan "tests/examples/Vta1.hs" 11 1 11 1+ , SrcSpan "tests/examples/Vta1.hs" 13 1 13 1+ , SrcSpan "tests/examples/Vta1.hs" 15 1 15 1+ , SrcSpan "tests/examples/Vta1.hs" 16 1 16 1+ , SrcSpan "tests/examples/Vta1.hs" 18 1 18 1+ , SrcSpan "tests/examples/Vta1.hs" 21 1 21 1+ , SrcSpan "tests/examples/Vta1.hs" 22 1 22 1+ , SrcSpan "tests/examples/Vta1.hs" 23 1 23 1+ , SrcSpan "tests/examples/Vta1.hs" 25 1 25 1+ , SrcSpan "tests/examples/Vta1.hs" 27 1 27 1+ , SrcSpan "tests/examples/Vta1.hs" 29 1 29 1+ , SrcSpan "tests/examples/Vta1.hs" 30 1 30 1+ , SrcSpan "tests/examples/Vta1.hs" 31 1 31 1+ , SrcSpan "tests/examples/Vta1.hs" 33 1 33 1+ , SrcSpan "tests/examples/Vta1.hs" 34 1 34 1+ , SrcSpan "tests/examples/Vta1.hs" 36 1 36 1+ , SrcSpan "tests/examples/Vta1.hs" 37 1 37 1+ , SrcSpan "tests/examples/Vta1.hs" 39 1 39 1+ , SrcSpan "tests/examples/Vta1.hs" 40 1 40 1+ , SrcSpan "tests/examples/Vta1.hs" 42 1 42 1+ , SrcSpan "tests/examples/Vta1.hs" 44 1 44 1+ , SrcSpan "tests/examples/Vta1.hs" 45 1 45 1+ , SrcSpan "tests/examples/Vta1.hs" 46 1 46 1+ , SrcSpan "tests/examples/Vta1.hs" 48 1 48 1+ , SrcSpan "tests/examples/Vta1.hs" 49 1 49 1+ , SrcSpan "tests/examples/Vta1.hs" 51 1 51 1+ , SrcSpan "tests/examples/Vta1.hs" 52 1 52 1+ , SrcSpan "tests/examples/Vta1.hs" 53 1 53 1+ , SrcSpan "tests/examples/Vta1.hs" 55 1 55 1+ , SrcSpan "tests/examples/Vta1.hs" 56 1 56 1+ , SrcSpan "tests/examples/Vta1.hs" 58 1 58 1+ , SrcSpan "tests/examples/Vta1.hs" 59 1 59 1+ , SrcSpan "tests/examples/Vta1.hs" 61 1 61 1+ , SrcSpan "tests/examples/Vta1.hs" 62 1 62 1+ , SrcSpan "tests/examples/Vta1.hs" 63 1 63 1+ , SrcSpan "tests/examples/Vta1.hs" 65 1 65 1+ , SrcSpan "tests/examples/Vta1.hs" 66 1 66 1+ , SrcSpan "tests/examples/Vta1.hs" 68 1 68 1+ , SrcSpan "tests/examples/Vta1.hs" 69 1 69 1+ , SrcSpan "tests/examples/Vta1.hs" 71 1 71 1+ , SrcSpan "tests/examples/Vta1.hs" 72 1 72 1+ , SrcSpan "tests/examples/Vta1.hs" 74 1 74 1+ , SrcSpan "tests/examples/Vta1.hs" 75 1 75 1+ , SrcSpan "tests/examples/Vta1.hs" 77 1 77 1+ , SrcSpan "tests/examples/Vta1.hs" 78 1 78 1+ , SrcSpan "tests/examples/Vta1.hs" 80 1 80 1+ , SrcSpan "tests/examples/Vta1.hs" 81 1 81 1+ , SrcSpan "tests/examples/Vta1.hs" 83 1 83 1+ , SrcSpan "tests/examples/Vta1.hs" 85 1 85 1+ , SrcSpan "tests/examples/Vta1.hs" 87 1 87 1+ , SrcSpan "tests/examples/Vta1.hs" 89 1 89 1+ , SrcSpan "tests/examples/Vta1.hs" 91 1 91 1+ , SrcSpan "tests/examples/Vta1.hs" 92 1 92 1+ , SrcSpan "tests/examples/Vta1.hs" 94 1 94 1+ , SrcSpan "tests/examples/Vta1.hs" 95 1 95 1+ , SrcSpan "tests/examples/Vta1.hs" 96 1 96 1+ , SrcSpan "tests/examples/Vta1.hs" 96 1 96 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 6 1 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 6 1 6 7+ , SrcSpan "tests/examples/Vta1.hs" 6 13 6 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 6 8 6 12+ , srcInfoPoints = []+ }+ "Vta1")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 1 3 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 1 1 1 13+ , SrcSpan "tests/examples/Vta1.hs" 1 30 1 31+ , SrcSpan "tests/examples/Vta1.hs" 1 51 1 52+ , SrcSpan "tests/examples/Vta1.hs" 1 62 1 63+ , SrcSpan "tests/examples/Vta1.hs" 2 26 2 27+ , SrcSpan "tests/examples/Vta1.hs" 2 38 2 39+ , SrcSpan "tests/examples/Vta1.hs" 3 31 3 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "TypeApplications"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 32 1 51+ , srcInfoPoints = []+ }+ "ScopedTypeVariables"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 1 53 1 62+ , srcInfoPoints = []+ }+ "PolyKinds"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 2 14 2 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 2 28 2 38+ , srcInfoPoints = []+ }+ "RankNTypes"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 3 14 3 30+ , srcInfoPoints = []+ }+ "FlexibleContexts"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 1 8 41+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 6 8 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 1 8 5+ , srcInfoPoints = []+ }+ "quad"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 9 8 41+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 11 8 13 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 14 8 41+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 16 8 18 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ "b"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 19 8 41+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 21 8 23 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 19 8 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 19 8 20+ , srcInfoPoints = []+ }+ "c"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 24 8 41+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 8 26 8 28 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 24 8 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 24 8 25+ , srcInfoPoints = []+ }+ "d"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 29 8 41+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 8 29 8 30+ , SrcSpan "tests/examples/Vta1.hs" 8 31 8 32+ , SrcSpan "tests/examples/Vta1.hs" 8 34 8 35+ , SrcSpan "tests/examples/Vta1.hs" 8 37 8 38+ , SrcSpan "tests/examples/Vta1.hs" 8 40 8 41+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 30 8 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 30 8 31+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 33 8 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 33 8 34+ , srcInfoPoints = []+ }+ "b")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 36 8 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 36 8 37+ , srcInfoPoints = []+ }+ "c")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 39 8 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 8 39 8 40+ , srcInfoPoints = []+ }+ "d")+ ])))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 1 9 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 1 9 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 1 9 5+ , srcInfoPoints = []+ }+ "quad"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 6 9 13+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 9 6 9 7 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 8 9 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 9 8 9 9+ , SrcSpan "tests/examples/Vta1.hs" 9 9 9 10+ , SrcSpan "tests/examples/Vta1.hs" 9 10 9 11+ , SrcSpan "tests/examples/Vta1.hs" 9 11 9 12+ , SrcSpan "tests/examples/Vta1.hs" 9 12 9 13+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 8 9 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 9 8 9 9+ , SrcSpan "tests/examples/Vta1.hs" 9 9 9 10+ , SrcSpan "tests/examples/Vta1.hs" 9 10 9 11+ , SrcSpan "tests/examples/Vta1.hs" 9 11 9 12+ , SrcSpan "tests/examples/Vta1.hs" 9 12 9 13+ ]+ }+ (TupleCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 9 8 9 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 9 8 9 9+ , SrcSpan "tests/examples/Vta1.hs" 9 9 9 10+ , SrcSpan "tests/examples/Vta1.hs" 9 10 9 11+ , SrcSpan "tests/examples/Vta1.hs" 9 11 9 12+ , SrcSpan "tests/examples/Vta1.hs" 9 12 9 13+ ]+ }+ Boxed+ 4))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 1 11 50+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 1 11 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 1 11 6+ , srcInfoPoints = []+ }+ "silly"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 7 11 50+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 11 7 11 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 42+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 38+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 33+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 31+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 22+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 9 11 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 9 11 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 9 11 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 9 11 13+ , srcInfoPoints = []+ }+ "quad")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 14 11 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 11 14 11 15 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 15 11 16+ , srcInfoPoints = []+ }+ Nothing)))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 17 11 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 11 17 11 18 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 18 11 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 18 11 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 18 11 22+ , srcInfoPoints = []+ }+ "Bool")))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 23 11 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 11 23 11 24 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 24 11 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 24 11 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 11 24 11 28+ , srcInfoPoints = []+ }+ "Char")))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 29 11 31+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 11 29 11 30 ]+ }+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 30 11 31+ , srcInfoPoints = []+ }+ Nothing)))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 32 11 33+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 32 11 33+ , srcInfoPoints = []+ }+ 5+ "5")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 34 11 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 34 11 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 34 11 38+ , srcInfoPoints = []+ }+ "True"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 39 11 42+ , srcInfoPoints = []+ }+ (Char+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 39 11 42+ , srcInfoPoints = []+ }+ 'a'+ "a")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 43 11 50+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 11 43 11 50+ , srcInfoPoints = []+ }+ "Hello"+ "Hello"))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 1 13 26+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 1 13 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 1 13 13+ , srcInfoPoints = []+ }+ "pairup_nosig")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 18 13 26+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 13 18 13 19 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 20 13 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 13 20 13 21+ , SrcSpan "tests/examples/Vta1.hs" 13 22 13 23+ , SrcSpan "tests/examples/Vta1.hs" 13 25 13 26+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 21 13 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 21 13 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 21 13 22+ , srcInfoPoints = []+ }+ "x"))+ , Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 24 13 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 24 13 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 13 24 13 25+ , srcInfoPoints = []+ }+ "y"))+ ]))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 1 15 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 15 12 15 14 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 1 15 11+ , srcInfoPoints = []+ }+ "pairup_sig"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 15 15 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 15 17 15 19 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 15 15 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 15 15 16+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 20 15 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 15 22 15 24 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 20 15 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 20 15 21+ , srcInfoPoints = []+ }+ "b"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 25 15 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 15 25 15 26+ , SrcSpan "tests/examples/Vta1.hs" 15 27 15 28+ , SrcSpan "tests/examples/Vta1.hs" 15 29 15 30+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 26 15 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 26 15 27+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 28 15 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 15 28 15 29+ , srcInfoPoints = []+ }+ "b")+ ])))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 1 16 24+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 1 16 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 1 16 11+ , srcInfoPoints = []+ }+ "pairup_sig")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 12 16 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 12 16 13+ , srcInfoPoints = []+ }+ "u")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 14 16 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 14 16 15+ , srcInfoPoints = []+ }+ "w")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 16 16 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 16 16 16 17 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 18 16 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 16 18 16 19+ , SrcSpan "tests/examples/Vta1.hs" 16 20 16 21+ , SrcSpan "tests/examples/Vta1.hs" 16 23 16 24+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 19 16 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 19 16 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 19 16 20+ , srcInfoPoints = []+ }+ "u"))+ , Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 22 16 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 22 16 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 16 22 16 23+ , srcInfoPoints = []+ }+ "w"))+ ]))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 1 18 43+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 1 18 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 1 18 11+ , srcInfoPoints = []+ }+ "answer_sig"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 12 18 43+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 18 12 18 13 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 43+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 41+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 14 18 24+ , srcInfoPoints = []+ }+ "pairup_sig")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 25 18 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 18 25 18 26 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 26 18 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 26 18 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 26 18 30+ , srcInfoPoints = []+ }+ "Bool")))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 31 18 35+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 18 31 18 32 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 32 18 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 32 18 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 32 18 35+ , srcInfoPoints = []+ }+ "Int")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 36 18 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 36 18 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 36 18 41+ , srcInfoPoints = []+ }+ "False"))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 42 18 43+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 18 42 18 43+ , srcInfoPoints = []+ }+ 7+ "7"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 1 21 35+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 1 21 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 1 21 12+ , srcInfoPoints = []+ }+ "answer_read"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 13 21 35+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 21 13 21 14 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 15 21 19+ , srcInfoPoints = []+ }+ "show")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 20 21 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 21 20 21 21+ , SrcSpan "tests/examples/Vta1.hs" 21 34 21 35+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 21 21 25+ , srcInfoPoints = []+ }+ "read")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 26 21 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 21 26 21 27 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 27 21 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 27 21 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 27 21 30+ , srcInfoPoints = []+ }+ "Int")))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 31 21 34+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 21 31 21 34+ , srcInfoPoints = []+ }+ "3"+ "3"))))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 1 22 39+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 1 22 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 1 22 12+ , srcInfoPoints = []+ }+ "answer_show"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 13 22 39+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 22 13 22 14 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 39+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 15 22 19+ , srcInfoPoints = []+ }+ "show")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 20 22 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 22 20 22 21 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 21 22 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 21 22 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 21 22 28+ , srcInfoPoints = []+ }+ "Integer")))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 29 22 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 22 29 22 30+ , SrcSpan "tests/examples/Vta1.hs" 22 38 22 39+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 30 22 34+ , srcInfoPoints = []+ }+ "read")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 35 22 38+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 22 35 22 38+ , srcInfoPoints = []+ }+ "5"+ "5"))))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 1 23 44+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 1 23 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 1 23 16+ , srcInfoPoints = []+ }+ "answer_showread"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 17 23 44+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 23 17 23 18 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 44+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 19 23 23+ , srcInfoPoints = []+ }+ "show")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 24 23 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 23 24 23 25 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 25 23 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 25 23 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 25 23 28+ , srcInfoPoints = []+ }+ "Int")))))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 29 23 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 23 29 23 30+ , SrcSpan "tests/examples/Vta1.hs" 23 43 23 44+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 43+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 39+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 30 23 34+ , srcInfoPoints = []+ }+ "read")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 35 23 39+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 23 35 23 36 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 36 23 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 36 23 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 36 23 39+ , srcInfoPoints = []+ }+ "Int")))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 40 23 43+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 23 40 23 43+ , srcInfoPoints = []+ }+ "7"+ "7"))))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 1 25 23+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 1 25 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 1 25 8+ , srcInfoPoints = []+ }+ "intcons")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 9 25 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 9 25 10+ , srcInfoPoints = []+ }+ "a")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 11 25 23+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 25 11 25 12 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 23+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 21+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 25 13 25 14+ , SrcSpan "tests/examples/Vta1.hs" 25 14 25 15+ , SrcSpan "tests/examples/Vta1.hs" 25 15 25 16+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 13 25 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 25 13 25 14+ , SrcSpan "tests/examples/Vta1.hs" 25 14 25 15+ , SrcSpan "tests/examples/Vta1.hs" 25 15 25 16+ ]+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 14 25 15+ , srcInfoPoints = []+ })))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 17 25 21+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 25 17 25 18 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 18 25 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 18 25 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 18 25 21+ , srcInfoPoints = []+ }+ "Int")))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 22 25 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 22 25 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 25 22 25 23+ , srcInfoPoints = []+ }+ "a")))))+ Nothing+ ]+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 1 27 34+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 1 27 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 1 27 8+ , srcInfoPoints = []+ }+ "intpair")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 9 27 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 9 27 10+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 11 27 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 11 27 12+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 13 27 34+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 27 13 27 14 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 30+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 15 27 25+ , srcInfoPoints = []+ }+ "pairup_sig")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 26 27 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 27 26 27 27 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 27 27 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 27 27 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 27 27 30+ , srcInfoPoints = []+ }+ "Int")))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 31 27 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 31 27 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 31 27 32+ , srcInfoPoints = []+ }+ "x"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 33 27 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 33 27 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 27 33 27 34+ , srcInfoPoints = []+ }+ "y")))))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 1 29 39+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 1 29 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 1 29 14+ , srcInfoPoints = []+ }+ "answer_pairup"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 15 29 39+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 29 15 29 16 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 39+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 34+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 17 29 27+ , srcInfoPoints = []+ }+ "pairup_sig")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 28 29 32+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 29 28 29 29 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 29 29 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 29 29 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 29 29 32+ , srcInfoPoints = []+ }+ "Int")))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 33 29 34+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 33 29 34+ , srcInfoPoints = []+ }+ 5+ "5")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 35 29 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 35 29 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 29 35 29 39+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 1 30 35+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 1 30 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 1 30 15+ , srcInfoPoints = []+ }+ "answer_intpair"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 16 30 35+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 30 16 30 17 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 35+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 18 30 25+ , srcInfoPoints = []+ }+ "intpair")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 26 30 27+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 26 30 27+ , srcInfoPoints = []+ }+ 1+ "1")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 28 30 35+ , srcInfoPoints = []+ }+ (String+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 30 28 30 35+ , srcInfoPoints = []+ }+ "hello"+ "hello"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 1 31 30+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 1 31 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 1 31 15+ , srcInfoPoints = []+ }+ "answer_intcons"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 16 31 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 31 16 31 17 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 30+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 18 31 25+ , srcInfoPoints = []+ }+ "intcons")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 26 31 27+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 26 31 27+ , srcInfoPoints = []+ }+ 7+ "7")))+ (List+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 31 28 31 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 31 28 31 29+ , SrcSpan "tests/examples/Vta1.hs" 31 29 31 30+ ]+ }+ [])))+ Nothing+ , TypeFamDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 1 33 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 33 1 33 5+ , SrcSpan "tests/examples/Vta1.hs" 33 6 33 12+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 13 33 16+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 13 33 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 13 33 14+ , srcInfoPoints = []+ }+ "F"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 15 33 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 33 15 33 16+ , srcInfoPoints = []+ }+ "a")))+ Nothing+ Nothing+ , TypeInsDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 1 34 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 34 1 34 5+ , SrcSpan "tests/examples/Vta1.hs" 34 6 34 14+ , SrcSpan "tests/examples/Vta1.hs" 34 22 34 23+ ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 21+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 15 34 16+ , srcInfoPoints = []+ }+ "F")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 17 34 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 17 34 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 17 34 21+ , srcInfoPoints = []+ }+ "Char"))))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 24 34 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 24 34 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 34 24 34 28+ , srcInfoPoints = []+ }+ "Bool")))+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 1 36 14+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 36 3 36 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 1 36 2+ , srcInfoPoints = []+ }+ "g"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 14+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 36 10 36 12 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 9+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 6 36 7+ , srcInfoPoints = []+ }+ "F")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 8 36 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 8 36 9+ , srcInfoPoints = []+ }+ "a")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 13 36 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 36 13 36 14+ , srcInfoPoints = []+ }+ "a")))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 1 37 16+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 1 37 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 1 37 2+ , srcInfoPoints = []+ }+ "g")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 3 37 4+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 5 37 16+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 37 5 37 6 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 7 37 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 7 37 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 37 7 37 16+ , srcInfoPoints = []+ }+ "undefined"))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 1 39 10+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 39 3 39 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 1 39 2+ , srcInfoPoints = []+ }+ "f"+ ]+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 6 39 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 6 39 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 39 6 39 10+ , srcInfoPoints = []+ }+ "Char")))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 1 40 11+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 1 40 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 1 40 2+ , srcInfoPoints = []+ }+ "f"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 3 40 11+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 40 3 40 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 11+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 5 40 6+ , srcInfoPoints = []+ }+ "g")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 7 40 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 7 40 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 40 7 40 11+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 1 42 23+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 1 42 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 1 42 7+ , srcInfoPoints = []+ }+ "answer"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 8 42 23+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 42 8 42 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 23+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 10 42 11+ , srcInfoPoints = []+ }+ "g")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 12 42 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 42 12 42 13 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 13 42 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 13 42 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 13 42 17+ , srcInfoPoints = []+ }+ "Char")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 18 42 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 18 42 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 42 18 42 23+ , srcInfoPoints = []+ }+ "False")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 1 44 54+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 9 44 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 1 44 8+ , srcInfoPoints = []+ }+ "mapSame"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 12 44 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 44 12 44 18+ , SrcSpan "tests/examples/Vta1.hs" 44 20 44 21+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 19 44 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 19 44 20+ , srcInfoPoints = []+ }+ "b")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 22 44 54+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 41 44 43 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 22 44 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 44 22 44 23+ , SrcSpan "tests/examples/Vta1.hs" 44 39 44 40+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 23 44 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 44 23 44 29+ , SrcSpan "tests/examples/Vta1.hs" 44 31 44 32+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 30 44 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 30 44 31+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 33 44 39+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 35 44 37 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 33 44 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 33 44 34+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 38 44 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 38 44 39+ , srcInfoPoints = []+ }+ "a")))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 44 44 54+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 44 48 44 50 ]+ }+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 44 44 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 44 44 44 45+ , SrcSpan "tests/examples/Vta1.hs" 44 46 44 47+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 45 44 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 45 44 46+ , srcInfoPoints = []+ }+ "b")))+ (TyList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 51 44 54+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 44 51 44 52+ , SrcSpan "tests/examples/Vta1.hs" 44 53 44 54+ ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 52 44 53+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 44 52 44 53+ , srcInfoPoints = []+ }+ "b"))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 1 46 52+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 1 45 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 1 45 8+ , srcInfoPoints = []+ }+ "mapSame")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 9 45 10+ , srcInfoPoints = []+ }+ , PList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 11 45 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 45 11 45 12+ , SrcSpan "tests/examples/Vta1.hs" 45 12 45 13+ ]+ }+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 14 45 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 45 14 45 15 ]+ }+ (List+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 45 16 45 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 45 16 45 17+ , SrcSpan "tests/examples/Vta1.hs" 45 17 45 18+ ]+ }+ []))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 1 46 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 1 46 8+ , srcInfoPoints = []+ }+ "mapSame")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 9 46 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 9 46 12+ , srcInfoPoints = []+ }+ "fun")+ , PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 13 46 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 46 13 46 14+ , SrcSpan "tests/examples/Vta1.hs" 46 18 46 19+ ]+ }+ (PInfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 14 46 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 14 46 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 14 46 15+ , srcInfoPoints = []+ }+ "x"))+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 15 46 16+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 15 46 16+ , srcInfoPoints = []+ }))+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 16 46 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 16 46 18+ , srcInfoPoints = []+ }+ "xs")))+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 20 46 52+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 46 20 46 21 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 52+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 30+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 28+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 25+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 22 46 25+ , srcInfoPoints = []+ }+ "fun")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 26 46 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 46 26 46 27 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 27 46 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 27 46 28+ , srcInfoPoints = []+ }+ "b"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 29 46 30+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 29 46 30+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 29 46 30+ , srcInfoPoints = []+ }+ "x"))))+ (QConOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 31 46 32+ , srcInfoPoints = []+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 31 46 32+ , srcInfoPoints = []+ }+ (Cons+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 31 46 32+ , srcInfoPoints = []+ })))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 33 46 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 46 33 46 34+ , SrcSpan "tests/examples/Vta1.hs" 46 51 46 52+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 51+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 48+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 44+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 34 46 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 46 34 46 41+ , srcInfoPoints = []+ }+ "mapSame")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 42 46 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 46 42 46 43 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 43 46 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 46 43 46 44+ , srcInfoPoints = []+ }+ "b"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 45 46 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 45 46 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 45 46 48+ , srcInfoPoints = []+ }+ "fun"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 49 46 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 49 46 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 46 49 46 51+ , srcInfoPoints = []+ }+ "xs")))))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 1 48 46+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 48 6 48 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 1 48 5+ , srcInfoPoints = []+ }+ "pair"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 9 48 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 48 9 48 15+ , SrcSpan "tests/examples/Vta1.hs" 48 17 48 18+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 16 48 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 16 48 17+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 19 48 46+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 48 20 48 22 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 19 48 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 19 48 20+ , srcInfoPoints = []+ }+ "a"))+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 23 48 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 48 23 48 24+ , SrcSpan "tests/examples/Vta1.hs" 48 45 48 46+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 24 48 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 48 24 48 30+ , SrcSpan "tests/examples/Vta1.hs" 48 32 48 33+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 31 48 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 31 48 32+ , srcInfoPoints = []+ }+ "b")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 34 48 45+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 48 36 48 38 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 34 48 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 34 48 35+ , srcInfoPoints = []+ }+ "b"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 39 48 45+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 48 39 48 40+ , SrcSpan "tests/examples/Vta1.hs" 48 41 48 42+ , SrcSpan "tests/examples/Vta1.hs" 48 44 48 45+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 40 48 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 40 48 41+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 43 48 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 48 43 48 44+ , srcInfoPoints = []+ }+ "b")+ ]))))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 1 49 18+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 1 49 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 1 49 5+ , srcInfoPoints = []+ }+ "pair")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 6 49 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 6 49 7+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 8 49 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 8 49 9+ , srcInfoPoints = []+ }+ "y")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 10 49 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 49 10 49 11 ]+ }+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 12 49 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 49 12 49 13+ , SrcSpan "tests/examples/Vta1.hs" 49 14 49 15+ , SrcSpan "tests/examples/Vta1.hs" 49 17 49 18+ ]+ }+ Boxed+ [ Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 13 49 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 13 49 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 13 49 14+ , srcInfoPoints = []+ }+ "x"))+ , Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 16 49 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 16 49 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 49 16 49 17+ , srcInfoPoints = []+ }+ "y"))+ ]))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 1 51 27+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 1 51 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 1 51 2+ , srcInfoPoints = []+ }+ "b"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 3 51 27+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 51 3 51 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 27+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 22+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 16+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 5 51 9+ , srcInfoPoints = []+ }+ "pair")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 10 51 14+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 51 10 51 11 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 11 51 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 11 51 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 11 51 14+ , srcInfoPoints = []+ }+ "Int")))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 15 51 16+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 15 51 16+ , srcInfoPoints = []+ }+ 3+ "3")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 17 51 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 51 17 51 18 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 18 51 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 18 51 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 18 51 22+ , srcInfoPoints = []+ }+ "Bool")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 23 51 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 23 51 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 51 23 51 27+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 1 52 23+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 1 52 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 1 52 2+ , srcInfoPoints = []+ }+ "c"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 3 52 23+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 52 3 52 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 23+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 15+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 5 52 12+ , srcInfoPoints = []+ }+ "mapSame")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 13 52 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 13 52 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 13 52 15+ , srcInfoPoints = []+ }+ "id"))))+ (List+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 16 52 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 52 16 52 17+ , SrcSpan "tests/examples/Vta1.hs" 52 18 52 19+ , SrcSpan "tests/examples/Vta1.hs" 52 20 52 21+ , SrcSpan "tests/examples/Vta1.hs" 52 22 52 23+ ]+ }+ [ Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 17 52 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 17 52 18+ , srcInfoPoints = []+ }+ 1+ "1")+ , Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 19 52 20+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 19 52 20+ , srcInfoPoints = []+ }+ 2+ "2")+ , Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 21 52 22+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 52 21 52 22+ , srcInfoPoints = []+ }+ 3+ "3")+ ])))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 1 53 22+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 1 53 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 1 53 2+ , srcInfoPoints = []+ }+ "d"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 3 53 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 53 3 53 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 22+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 17+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 11+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 9+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 5 53 9+ , srcInfoPoints = []+ }+ "pair")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 10 53 11+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 10 53 11+ , srcInfoPoints = []+ }+ 3+ "3")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 12 53 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 53 12 53 13 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 13 53 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 13 53 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 13 53 17+ , srcInfoPoints = []+ }+ "Bool")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 18 53 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 18 53 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 53 18 53 22+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 1 55 52+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 9 55 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 1 55 8+ , srcInfoPoints = []+ }+ "pairnum"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 12 55 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 55 12 55 18+ , SrcSpan "tests/examples/Vta1.hs" 55 20 55 21+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 19 55 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 19 55 20+ , srcInfoPoints = []+ }+ "a")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27+ , srcInfoPoints = []+ }+ "a"))))))+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 31 55 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 55 31 55 37+ , SrcSpan "tests/examples/Vta1.hs" 55 39 55 40+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 38 55 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 38 55 39+ , srcInfoPoints = []+ }+ "b")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 41 55 52+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 43 55 45 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 41 55 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 41 55 42+ , srcInfoPoints = []+ }+ "b"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 46 55 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 55 46 55 47+ , SrcSpan "tests/examples/Vta1.hs" 55 48 55 49+ , SrcSpan "tests/examples/Vta1.hs" 55 51 55 52+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 47 55 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 47 55 48+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 50 55 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 50 55 51+ , srcInfoPoints = []+ }+ "b")+ ]))))+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 1 56 17+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 1 56 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 1 56 8+ , srcInfoPoints = []+ }+ "pairnum"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 9 56 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 56 9 56 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 11 56 15+ , srcInfoPoints = []+ }+ "pair")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 16 56 17+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 56 16 56 17+ , srcInfoPoints = []+ }+ 3+ "3"))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 1 58 73+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 1 58 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 1 58 2+ , srcInfoPoints = []+ }+ "e"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 3 58 73+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 3 58 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 73+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 68+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 62+ , srcInfoPoints = []+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 5 58 57+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 5 58 6+ , SrcSpan "tests/examples/Vta1.hs" 58 56 58 57+ ]+ }+ (ExpTypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 56+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 13 58 15 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 12+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 6 58 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 6 58 10+ , srcInfoPoints = []+ }+ "pair")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 11 58 12+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 11 58 12+ , srcInfoPoints = []+ }+ 3+ "3")))+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 16 58 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 16 58 22+ , SrcSpan "tests/examples/Vta1.hs" 58 24 58 25+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 23 58 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 23 58 24+ , srcInfoPoints = []+ }+ "a")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 26 58 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 26 58 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Vta1.hs" 58 26 58 29+ , srcInfoPoints = []+ }+ "Num")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 30 58 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 30 58 31+ , srcInfoPoints = []+ }+ "a"))))))+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 35 58 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 35 58 41+ , SrcSpan "tests/examples/Vta1.hs" 58 43 58 44+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 42 58 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 42 58 43+ , srcInfoPoints = []+ }+ "b")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 45 58 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 47 58 49 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 45 58 46+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 45 58 46+ , srcInfoPoints = []+ }+ "b"))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 50 58 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 58 50 58 51+ , SrcSpan "tests/examples/Vta1.hs" 58 52 58 53+ , SrcSpan "tests/examples/Vta1.hs" 58 55 58 56+ ]+ }+ Boxed+ [ TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 51 58 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 51 58 52+ , srcInfoPoints = []+ }+ "a")+ , TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 54 58 55+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 58 54 58 55+ , srcInfoPoints = []+ }+ "b")+ ]))))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 58 58 62+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 58 58 59 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 59 58 62+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 59 58 62+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 59 58 62+ , srcInfoPoints = []+ }+ "Int")))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 63 58 68+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 58 63 58 64 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 64 58 68+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 64 58 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 64 58 68+ , srcInfoPoints = []+ }+ "Bool")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 69 58 73+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 69 58 73+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 69 58 73+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 1 59 28+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 1 59 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 1 59 2+ , srcInfoPoints = []+ }+ "h"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 3 59 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 59 3 59 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 28+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 23+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 5 59 12+ , srcInfoPoints = []+ }+ "pairnum")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 13 59 17+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 59 13 59 14 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 14 59 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 14 59 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 14 59 17+ , srcInfoPoints = []+ }+ "Int")))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 18 59 23+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 59 18 59 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 19 59 23+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 19 59 23+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 19 59 23+ , srcInfoPoints = []+ }+ "Bool")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 24 59 28+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 24 59 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 59 24 59 28+ , srcInfoPoints = []+ }+ "True")))))+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 1 61 29+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 61 26 61 27 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 1 61 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 6 61 25+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 6 61 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 6 61 11+ , srcInfoPoints = []+ }+ "First"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 12 61 25+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 61 12 61 13+ , SrcSpan "tests/examples/Vta1.hs" 61 15 61 17+ , SrcSpan "tests/examples/Vta1.hs" 61 24 61 25+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 13 61 14+ , srcInfoPoints = []+ }+ "a")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 18 61 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 61 20 61 22 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 18 61 19+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 23 61 24+ , srcInfoPoints = []+ }))))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 28 61 29+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 28 61 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 28 61 29+ , srcInfoPoints = []+ }+ "F")+ [])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 1 62 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 62 21 62 22 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 1 62 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 6 62 20+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 6 62 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 6 62 11+ , srcInfoPoints = []+ }+ "Proxy"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 12 62 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 62 12 62 13+ , SrcSpan "tests/examples/Vta1.hs" 62 15 62 17+ , SrcSpan "tests/examples/Vta1.hs" 62 19 62 20+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 13 62 14+ , srcInfoPoints = []+ }+ "a")+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 18 62 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 18 62 19+ , srcInfoPoints = []+ }+ "k"))))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 23 62 24+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 23 62 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 23 62 24+ , srcInfoPoints = []+ }+ "P")+ [])+ ]+ []+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 1 63 34+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 31 63 32 ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 1 63 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 6 63 30+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 6 63 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 6 63 11+ , srcInfoPoints = []+ }+ "Three"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 12 63 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 63 12 63 13+ , SrcSpan "tests/examples/Vta1.hs" 63 15 63 17+ , SrcSpan "tests/examples/Vta1.hs" 63 29 63 30+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 13 63 14+ , srcInfoPoints = []+ }+ "a")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 18 63 29+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 20 63 22 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 18 63 19+ , srcInfoPoints = []+ })+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 29+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 25 63 27 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 24+ , srcInfoPoints = []+ }+ "k"))+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 28 63 29+ , srcInfoPoints = []+ })))))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 33 63 34+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 33 63 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 33 63 34+ , srcInfoPoints = []+ }+ "T")+ [])+ ]+ []+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 1 65 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 65 5 65 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 1 65 4+ , srcInfoPoints = []+ }+ "foo"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 65 16 65 18 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 15+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 8 65 13+ , srcInfoPoints = []+ }+ "Proxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 14 65 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 14 65 15+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 19 65 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 19 65 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 65 19 65 22+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 1 66 10+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 1 66 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 1 66 4+ , srcInfoPoints = []+ }+ "foo")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 5 66 6+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 7 66 10+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 66 7 66 8 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 9 66 10+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 66 9 66 10+ , srcInfoPoints = []+ }+ 0+ "0")))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 1 68 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 68 7 68 9 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 1 68 6+ , srcInfoPoints = []+ }+ "first"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 68 18 68 20 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 17+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 10 68 15+ , srcInfoPoints = []+ }+ "First")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 16 68 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 16 68 17+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 21 68 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 21 68 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 68 21 68 24+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 1 69 12+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 1 69 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 1 69 6+ , srcInfoPoints = []+ }+ "first")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 7 69 8+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 9 69 12+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 69 9 69 10 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 11 69 12+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 69 11 69 12+ , srcInfoPoints = []+ }+ 0+ "0")))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 1 71 16+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 1 71 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 1 71 6+ , srcInfoPoints = []+ }+ "fTest"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 7 71 16+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 71 7 71 8 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 9 71 14+ , srcInfoPoints = []+ }+ "first")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 15 71 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 15 71 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 71 15 71 16+ , srcInfoPoints = []+ }+ "F")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 1 72 24+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 1 72 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 1 72 7+ , srcInfoPoints = []+ }+ "fMaybe"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 8 72 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 72 8 72 9 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 24+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 10 72 15+ , srcInfoPoints = []+ }+ "first")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 16 72 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 72 16 72 17 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 17 72 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 17 72 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 17 72 22+ , srcInfoPoints = []+ }+ "Maybe")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 23 72 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 23 72 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 72 23 72 24+ , srcInfoPoints = []+ }+ "F")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 1 74 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 1 74 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 1 74 5+ , srcInfoPoints = []+ }+ "test"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 6 74 13+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 74 6 74 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 13+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 8 74 11+ , srcInfoPoints = []+ }+ "foo")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 12 74 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 12 74 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 74 12 74 13+ , srcInfoPoints = []+ }+ "P")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 1 75 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 1 75 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 1 75 4+ , srcInfoPoints = []+ }+ "bar"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 5 75 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 75 5 75 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 18+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 7 75 10+ , srcInfoPoints = []+ }+ "foo")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 11 75 16+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 75 11 75 12 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 12 75 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 12 75 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 12 75 16+ , srcInfoPoints = []+ }+ "Bool")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 17 75 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 17 75 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 75 17 75 18+ , srcInfoPoints = []+ }+ "P")))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 1 77 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 77 5 77 7 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 1 77 4+ , srcInfoPoints = []+ }+ "too"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 77 16 77 18 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 15+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 8 77 13+ , srcInfoPoints = []+ }+ "Three")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 14 77 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 14 77 15+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 19 77 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 19 77 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 77 19 77 22+ , srcInfoPoints = []+ }+ "Int"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 1 78 10+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 1 78 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 1 78 4+ , srcInfoPoints = []+ }+ "too")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 5 78 6+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 7 78 10+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 78 7 78 8 ]+ }+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 9 78 10+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 78 9 78 10+ , srcInfoPoints = []+ }+ 3+ "3")))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 1 80 18+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 1 80 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 1 80 10+ , srcInfoPoints = []+ }+ "threeBase"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 11 80 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 80 11 80 12 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 13 80 16+ , srcInfoPoints = []+ }+ "too")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 17 80 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 17 80 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 80 17 80 18+ , srcInfoPoints = []+ }+ "T")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 1 81 24+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 1 81 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 1 81 8+ , srcInfoPoints = []+ }+ "threeOk"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 9 81 24+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 81 9 81 10 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 24+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 11 81 14+ , srcInfoPoints = []+ }+ "too")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 15 81 22+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 81 15 81 16 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 16 81 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 16 81 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 16 81 22+ , srcInfoPoints = []+ }+ "Either")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 23 81 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 23 81 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 81 23 81 24+ , srcInfoPoints = []+ }+ "T")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 1 83 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 1 83 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 1 83 5+ , srcInfoPoints = []+ }+ "blah"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 6 83 20+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 83 6 83 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 20+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 8 83 15+ , srcInfoPoints = []+ }+ "Nothing")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 16 83 20+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 83 16 83 17 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 17 83 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 17 83 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 83 17 83 20+ , srcInfoPoints = []+ }+ "Int"))))))+ Nothing+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 1 85 61+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 11 85 12 ]+ }+ (NewType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 1 85 8+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 9 85 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 9 85 10+ , srcInfoPoints = []+ }+ "N"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 13 85 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 85 17 85 18+ , SrcSpan "tests/examples/Vta1.hs" 85 60 85 61+ ]+ }+ Nothing+ Nothing+ (RecDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 13 85 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 85 17 85 18+ , SrcSpan "tests/examples/Vta1.hs" 85 60 85 61+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 13 85 16+ , srcInfoPoints = []+ }+ "MkN")+ [ FieldDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 19 85 59+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 25 85 27 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 19 85 24+ , srcInfoPoints = []+ }+ "unMkN"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 28 85 59+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 85 28 85 34+ , SrcSpan "tests/examples/Vta1.hs" 85 36 85 37+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 35 85 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 35 85 36+ , srcInfoPoints = []+ }+ "a")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 85 38 85 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 85 38 85 42+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 85 38 85 42+ , srcInfoPoints = []+ }+ "Show")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 85 43 85 44+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta1.hs" 85 43 85 44+ , srcInfoPoints = []+ }+ "a"))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 59+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 50 85 52 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 49+ , srcInfoPoints = []+ }+ "a"))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 53 85 59+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 53 85 59+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 53 85 59+ , srcInfoPoints = []+ }+ "String")))))+ ])+ ]+ []+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 1 87 13+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 1 87 2+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 1 87 2+ , srcInfoPoints = []+ }+ "n"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 3 87 13+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 87 3 87 4 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 13+ , srcInfoPoints = []+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 5 87 8+ , srcInfoPoints = []+ }+ "MkN")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 9 87 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 9 87 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 87 9 87 13+ , srcInfoPoints = []+ }+ "show")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 1 89 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 1 89 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 1 89 4+ , srcInfoPoints = []+ }+ "boo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 5 89 20+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 89 5 89 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 20+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 7 89 12+ , srcInfoPoints = []+ }+ "unMkN")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 13 89 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 13 89 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 13 89 14+ , srcInfoPoints = []+ }+ "n"))))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 15 89 20+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 89 15 89 16 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 16 89 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 16 89 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 89 16 89 20+ , srcInfoPoints = []+ }+ "Bool"))))))+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 1 91 47+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 91 6 91 8 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 1 91 5+ , srcInfoPoints = []+ }+ "boo2"+ ]+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 9 91 47+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 91 9 91 15+ , SrcSpan "tests/examples/Vta1.hs" 91 30 91 31+ ]+ }+ (Just+ [ KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 16 91 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta1.hs" 91 16 91 17+ , SrcSpan "tests/examples/Vta1.hs" 91 19 91 21+ , SrcSpan "tests/examples/Vta1.hs" 91 28 91 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 17 91 18+ , srcInfoPoints = []+ }+ "a")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 22 91 28+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 91 24 91 26 ]+ }+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 22 91 23+ , srcInfoPoints = []+ })+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 27 91 28+ , srcInfoPoints = []+ }))+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 47+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 91 40 91 42 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 39+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 37+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 32 91 37+ , srcInfoPoints = []+ }+ "Proxy")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 38 91 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 38 91 39+ , srcInfoPoints = []+ }+ "a")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 43 91 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 43 91 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 43 91 47+ , srcInfoPoints = []+ }+ "Bool")))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 1 92 15+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 1 92 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 1 92 5+ , srcInfoPoints = []+ }+ "boo2")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 6 92 7+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 8 92 15+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 92 8 92 9 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 10 92 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 10 92 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 92 10 92 15+ , srcInfoPoints = []+ }+ "False"))))+ Nothing+ ]+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 1 94 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 1 94 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 1 94 5+ , srcInfoPoints = []+ }+ "base"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 6 94 14+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 94 6 94 7 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 8 94 12+ , srcInfoPoints = []+ }+ "boo2")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 13 94 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 13 94 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 94 13 94 14+ , srcInfoPoints = []+ }+ "P")))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 1 95 20+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 1 95 5+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 1 95 5+ , srcInfoPoints = []+ }+ "bar'"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 5 95 20+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 95 5 95 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 20+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 7 95 11+ , srcInfoPoints = []+ }+ "boo2")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 12 95 18+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 95 12 95 13 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 13 95 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 13 95 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 13 95 18+ , srcInfoPoints = []+ }+ "Maybe")))))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 19 95 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 19 95 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 95 19 95 20+ , srcInfoPoints = []+ }+ "P")))))+ Nothing+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 4 1 4 40)+ " tests about visible type application"+ , Comment False (SrcSpan "tests/examples/Vta1.hs" 18 44 18 46) ""+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 19 1 19 29)+ " (False, 7) :: (Bool, Int)"+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 21 36 21 52)+ " \"3\" :: String"+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 22 40 22 56)+ " \"5\" :: String"+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 23 45 23 61)+ " \"7\" :: String"+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 29 40 29 67)+ " (5, True) :: (Int, Bool)"+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 30 36 30 68)+ " (1, \"hello\") :: (Int, String)"+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 31 36 31 51)+ " [7] :: [Int]"+ , Comment+ False+ (SrcSpan "tests/examples/Vta1.hs" 62 25 62 77)+ " This expands to P (kind variable) (type variable)"+ , Comment+ False (SrcSpan "tests/examples/Vta1.hs" 75 19 75 33) " should work"+ , Comment+ False (SrcSpan "tests/examples/Vta1.hs" 95 21 95 35) " should work"+ ]+ )
+ tests/examples/Vta1.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta1.hs.prettyprinter.golden view
@@ -0,0 +1,79 @@+{-# LANGUAGE TypeApplications, ScopedTypeVariables, PolyKinds,+ TypeFamilies, RankNTypes, FlexibleContexts #-}+module Vta1 where++quad :: a -> b -> c -> d -> (a, b, c, d)+quad = (,,,)+silly = quad @_ @Bool @Char @_ 5 True 'a' "Hello"+pairup_nosig x y = (x, y)++pairup_sig :: a -> b -> (a, b)+pairup_sig u w = (u, w)+answer_sig = pairup_sig @Bool @Int False 7+answer_read = show (read @Int "3")+answer_show = show @Integer (read "5")+answer_showread = show @Int (read @Int "7")+intcons a = (:) @Int a+intpair x y = pairup_sig @Int x y+answer_pairup = pairup_sig @Int 5 True+answer_intpair = intpair 1 "hello"+answer_intcons = intcons 7 []++type family F a++type instance F Char = Bool++g :: F a -> a+g _ = undefined++f :: Char+f = g True+answer = g @Char False++mapSame :: forall b . (forall a . a -> a) -> [b] -> [b]+mapSame _ [] = []+mapSame fun (x : xs) = fun @b x : (mapSame @b fun xs)++pair :: forall a . a -> (forall b . b -> (a, b))+pair x y = (x, y)+b = pair @Int 3 @Bool True+c = mapSame id [1, 2, 3]+d = pair 3 @Bool True++pairnum :: forall a . Num a => forall b . b -> (a, b)+pairnum = pair 3+e = (pair 3 :: forall a . Num a => forall b . b -> (a, b)) @Int+ @Bool+ True+h = pairnum @Int @Bool True++data First (a :: * -> *) = F++data Proxy (a :: k) = P++data Three (a :: * -> k -> *) = T++foo :: Proxy a -> Int+foo _ = 0++first :: First a -> Int+first _ = 0+fTest = first F+fMaybe = first @Maybe F+test = foo P+bar = foo @Bool P++too :: Three a -> Int+too _ = 3+threeBase = too T+threeOk = too @Either T+blah = Nothing @Int++newtype N = MkN{unMkN :: forall a . Show a => a -> String}+n = MkN show+boo = unMkN n @Bool++boo2 :: forall (a :: * -> *) . Proxy a -> Bool+boo2 _ = False+base = boo2 P+bar' = boo2 @Maybe P
+ tests/examples/Vta2.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE RankNTypes, TypeApplications #-}+++module Vta2 where++checkIf :: Bool -> (forall a. a -> a) -> (Bool, Int)+checkIf _ = if True+ then \f -> (f True, f 5)+ else \f -> (f False, f @Int 3)++checkCase :: Bool -> (forall a. a -> a) -> (Bool, Int)+checkCase _ = case True of+ True -> \f -> (f True, f 5)+ False -> \f -> (f False, f @Int 3)
+ tests/examples/Vta2.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta2.hs.parser.golden view
@@ -0,0 +1,992 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 1 15 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 1 1 1 1+ , SrcSpan "tests/examples/Vta2.hs" 4 1 4 1+ , SrcSpan "tests/examples/Vta2.hs" 4 1 4 1+ , SrcSpan "tests/examples/Vta2.hs" 6 1 6 1+ , SrcSpan "tests/examples/Vta2.hs" 7 1 7 1+ , SrcSpan "tests/examples/Vta2.hs" 11 1 11 1+ , SrcSpan "tests/examples/Vta2.hs" 12 1 12 1+ , SrcSpan "tests/examples/Vta2.hs" 15 1 15 1+ , SrcSpan "tests/examples/Vta2.hs" 15 1 15 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 4 1 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 4 1 4 7+ , SrcSpan "tests/examples/Vta2.hs" 4 13 4 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 4 8 4 12+ , srcInfoPoints = []+ }+ "Vta2")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 1 1 46+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 1 1 1 13+ , SrcSpan "tests/examples/Vta2.hs" 1 24 1 25+ , SrcSpan "tests/examples/Vta2.hs" 1 43 1 46+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ , Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 1 26 1 42+ , srcInfoPoints = []+ }+ "TypeApplications"+ ]+ ]+ []+ [ TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 1 6 53+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 9 6 11 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 1 6 8+ , srcInfoPoints = []+ }+ "checkIf"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 53+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 17 6 19 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 12 6 16+ , srcInfoPoints = []+ }+ "Bool")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 20 6 53+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 39 6 41 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 20 6 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 6 20 6 21+ , SrcSpan "tests/examples/Vta2.hs" 6 37 6 38+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 21 6 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 6 21 6 27+ , SrcSpan "tests/examples/Vta2.hs" 6 29 6 30+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 28 6 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 28 6 29+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 31 6 37+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 6 33 6 35 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 31 6 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 31 6 32+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 36 6 37+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 36 6 37+ , srcInfoPoints = []+ }+ "a")))))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 42 6 53+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 6 42 6 43+ , SrcSpan "tests/examples/Vta2.hs" 6 47 6 48+ , SrcSpan "tests/examples/Vta2.hs" 6 52 6 53+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 43 6 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 43 6 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 43 6 47+ , srcInfoPoints = []+ }+ "Bool"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 49 6 52+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 49 6 52+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 6 49 6 52+ , srcInfoPoints = []+ }+ "Int"))+ ])))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 1 9 43+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 1 9 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 1 7 8+ , srcInfoPoints = []+ }+ "checkIf")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 9 7 10+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 11 9 43+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 7 11 7 12 ]+ }+ (If+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 13 9 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 7 13 7 15+ , SrcSpan "tests/examples/Vta2.hs" 8 13 8 17+ , SrcSpan "tests/examples/Vta2.hs" 9 13 9 17+ ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 16 7 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 16 7 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 7 16 7 20+ , srcInfoPoints = []+ }+ "True")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 18 8 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 8 18 8 19+ , SrcSpan "tests/examples/Vta2.hs" 8 21 8 23+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 19 8 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 19 8 20+ , srcInfoPoints = []+ }+ "f")+ ]+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 24 8 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 8 24 8 25+ , SrcSpan "tests/examples/Vta2.hs" 8 31 8 32+ , SrcSpan "tests/examples/Vta2.hs" 8 36 8 37+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 25 8 26+ , srcInfoPoints = []+ }+ "f")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 27 8 31+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 27 8 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 27 8 31+ , srcInfoPoints = []+ }+ "True")))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 36+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 33 8 34+ , srcInfoPoints = []+ }+ "f")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 35 8 36+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 8 35 8 36+ , srcInfoPoints = []+ }+ 5+ "5"))+ ]))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 18 9 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 9 18 9 19+ , SrcSpan "tests/examples/Vta2.hs" 9 21 9 23+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 19 9 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 19 9 20+ , srcInfoPoints = []+ }+ "f")+ ]+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 24 9 43+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 9 24 9 25+ , SrcSpan "tests/examples/Vta2.hs" 9 32 9 33+ , SrcSpan "tests/examples/Vta2.hs" 9 42 9 43+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 25 9 26+ , srcInfoPoints = []+ }+ "f")))+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 27 9 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 27 9 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 27 9 32+ , srcInfoPoints = []+ }+ "False")))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 42+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 35+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 34 9 35+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 9 34 9 35+ , srcInfoPoints = []+ }+ "f")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 36 9 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 9 36 9 37 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 37 9 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 9 37 9 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 9 37 9 40+ , srcInfoPoints = []+ }+ "Int")))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 41 9 42+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 9 41 9 42+ , srcInfoPoints = []+ }+ 3+ "3"))+ ]))))+ Nothing+ ]+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 1 11 55+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 11 11 13 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 1 11 10+ , srcInfoPoints = []+ }+ "checkCase"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 55+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 19 11 21 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 18+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 14 11 18+ , srcInfoPoints = []+ }+ "Bool")))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 22 11 55+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 41 11 43 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 22 11 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 11 22 11 23+ , SrcSpan "tests/examples/Vta2.hs" 11 39 11 40+ ]+ }+ (TyForall+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 23 11 39+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 11 23 11 29+ , SrcSpan "tests/examples/Vta2.hs" 11 31 11 32+ ]+ }+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 30 11 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 30 11 31+ , srcInfoPoints = []+ }+ "a")+ ])+ Nothing+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 33 11 39+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 11 35 11 37 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 33 11 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 33 11 34+ , srcInfoPoints = []+ }+ "a"))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 38 11 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 38 11 39+ , srcInfoPoints = []+ }+ "a")))))+ (TyTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 44 11 55+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 11 44 11 45+ , SrcSpan "tests/examples/Vta2.hs" 11 49 11 50+ , SrcSpan "tests/examples/Vta2.hs" 11 54 11 55+ ]+ }+ Boxed+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 45 11 49+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 45 11 49+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 45 11 49+ , srcInfoPoints = []+ }+ "Bool"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 51 11 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 51 11 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 11 51 11 54+ , srcInfoPoints = []+ }+ "Int"))+ ])))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 1 14 51+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 1 14 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 1 12 10+ , srcInfoPoints = []+ }+ "checkCase")+ [ PWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 11 12 12+ , srcInfoPoints = []+ }+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 13 14 51+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 12 13 12 14 ]+ }+ (Case+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 15 14 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 12 15 12 19+ , SrcSpan "tests/examples/Vta2.hs" 12 25 12 27+ , SrcSpan "tests/examples/Vta2.hs" 13 17 13 17+ , SrcSpan "tests/examples/Vta2.hs" 14 17 14 17+ , SrcSpan "tests/examples/Vta2.hs" 15 1 15 0+ ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 20 12 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 20 12 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 12 20 12 24+ , srcInfoPoints = []+ }+ "True")))+ [ Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 44+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 17 13 21+ , srcInfoPoints = []+ }+ "True"))+ [])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 22 13 44+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 13 22 13 24 ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 25 13 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 13 25 13 26+ , SrcSpan "tests/examples/Vta2.hs" 13 28 13 30+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 26 13 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 26 13 27+ , srcInfoPoints = []+ }+ "f")+ ]+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 31 13 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 13 31 13 32+ , SrcSpan "tests/examples/Vta2.hs" 13 38 13 39+ , SrcSpan "tests/examples/Vta2.hs" 13 43 13 44+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 32 13 38+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 32 13 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 32 13 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 32 13 33+ , srcInfoPoints = []+ }+ "f")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 34 13 38+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 34 13 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 34 13 38+ , srcInfoPoints = []+ }+ "True")))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 13 40 13 43+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 40 13 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 40 13 41+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 40 13 41+ , srcInfoPoints = []+ }+ "f")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 42 13 43+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 13 42 13 43+ , srcInfoPoints = []+ }+ 5+ "5"))+ ])))+ Nothing+ , Alt+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 51+ , srcInfoPoints = []+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 17 14 22+ , srcInfoPoints = []+ }+ "False"))+ [])+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 23 14 51+ , srcInfoPoints = [ SrcSpan "tests/examples/Vta2.hs" 14 23 14 25 ]+ }+ (Lambda+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 26 14 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 14 26 14 27+ , SrcSpan "tests/examples/Vta2.hs" 14 29 14 31+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 27 14 28+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 27 14 28+ , srcInfoPoints = []+ }+ "f")+ ]+ (Tuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 32 14 51+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 14 32 14 33+ , SrcSpan "tests/examples/Vta2.hs" 14 40 14 41+ , SrcSpan "tests/examples/Vta2.hs" 14 50 14 51+ ]+ }+ Boxed+ [ App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 33 14 40+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 33 14 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 33 14 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 33 14 34+ , srcInfoPoints = []+ }+ "f")))+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 35 14 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 35 14 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 35 14 40+ , srcInfoPoints = []+ }+ "False")))+ , App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/Vta2.hs" 14 42 14 50+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 42 14 48+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 42 14 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 42 14 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 42 14 43+ , srcInfoPoints = []+ }+ "f")))+ (TypeApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 44 14 48+ , srcInfoPoints =+ [ SrcSpan "tests/examples/Vta2.hs" 14 44 14 45 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 45 14 48+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 45 14 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/Vta2.hs" 14 45 14 48+ , srcInfoPoints = []+ }+ "Int")))))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 49 14 50+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/Vta2.hs" 14 49 14 50+ , srcInfoPoints = []+ }+ 3+ "3"))+ ])))+ Nothing+ ]))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/Vta2.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/Vta2.hs.prettyprinter.golden view
@@ -0,0 +1,12 @@+{-# LANGUAGE RankNTypes, TypeApplications #-}+module Vta2 where++checkIf :: Bool -> (forall a . a -> a) -> (Bool, Int)+checkIf _+ = if True then \ f -> (f True, f 5) else \ f -> (f False, f @Int 3)++checkCase :: Bool -> (forall a . a -> a) -> (Bool, Int)+checkCase _+ = case True of+ True -> \ f -> (f True, f 5)+ False -> \ f -> (f False, f @Int 3)
+ tests/examples/WhereBlock.hs view
@@ -0,0 +1,3 @@+hash ptr len = f len+ where f h = return h+ f p = (p `advancePtr` 1)
+ tests/examples/WhereBlock.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WhereBlock.hs.parser.golden view
@@ -0,0 +1,299 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 4 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 1+ , SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 1+ , SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 1+ , SrcSpan "tests/examples/WhereBlock.hs" 4 1 4 1+ , SrcSpan "tests/examples/WhereBlock.hs" 4 1 4 1+ ]+ }+ Nothing+ []+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 2 2 2 7 ]+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 2 2 2 7 ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 1 1 5+ , srcInfoPoints = []+ }+ "hash")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 6 1 9+ , srcInfoPoints = []+ }+ "ptr")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 10 1 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 10 1 13+ , srcInfoPoints = []+ }+ "len")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 14 1 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 1 14 1 15 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 16 1 17+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 18 1 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 18 1 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 1 18 1 21+ , srcInfoPoints = []+ }+ "len")))))+ (Just+ (BDecls+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 2 8 2 8+ , SrcSpan "tests/examples/WhereBlock.hs" 3 8 3 8+ , SrcSpan "tests/examples/WhereBlock.hs" 4 1 4 0+ ]+ }+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 3 32+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 2 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 8 2 9+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 2 10 2 11+ , srcInfoPoints = []+ }+ "h")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 12 2 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 2 12 2 13 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 22+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 2 14 2 20+ , srcInfoPoints = []+ }+ "return")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 2 21 2 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 2 21 2 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 2 21 2 22+ , srcInfoPoints = []+ }+ "h")))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 8 3 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 8 3 9+ , srcInfoPoints = []+ }+ "f")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 10 3 11+ , srcInfoPoints = []+ }+ "p")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 12 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 3 12 3 13 ]+ }+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WhereBlock.hs" 3 14 3 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 3 14 3 15+ , SrcSpan "tests/examples/WhereBlock.hs" 3 31 3 32+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 31+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 15 3 16+ , srcInfoPoints = []+ }+ "p")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 18+ , SrcSpan "tests/examples/WhereBlock.hs" 3 18 3 28+ , SrcSpan "tests/examples/WhereBlock.hs" 3 28 3 29+ ]+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WhereBlock.hs" 3 17 3 18+ , SrcSpan "tests/examples/WhereBlock.hs" 3 18 3 28+ , SrcSpan "tests/examples/WhereBlock.hs" 3 28 3 29+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 18 3 28+ , srcInfoPoints = []+ }+ "advancePtr")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 30 3 31+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/WhereBlock.hs" 3 30 3 31+ , srcInfoPoints = []+ }+ 1+ "1")))))+ Nothing+ ]+ ]))+ ]+ ]+ , []+ )
+ tests/examples/WhereBlock.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WhereBlock.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+hash ptr len = f len+ where f h = return h+ f p = (p `advancePtr` 1)
+ tests/examples/WildcardTyFam.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}++type family Foo a where+ Foo _ = Int
+ tests/examples/WildcardTyFam.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WildcardTyFam.hs.parser.golden view
@@ -0,0 +1,122 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 1 1+ , SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 1+ , SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 1+ , SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 1+ , SrcSpan "tests/examples/WildcardTyFam.hs" 5 1 5 1+ , SrcSpan "tests/examples/WildcardTyFam.hs" 5 1 5 1+ ]+ }+ Nothing+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 1 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WildcardTyFam.hs" 1 1 1 13+ , SrcSpan "tests/examples/WildcardTyFam.hs" 1 27 1 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 1 14 1 26+ , srcInfoPoints = []+ }+ "TypeFamilies"+ ]+ ]+ []+ [ ClosedTypeFamDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WildcardTyFam.hs" 3 1 3 5+ , SrcSpan "tests/examples/WildcardTyFam.hs" 3 6 3 12+ , SrcSpan "tests/examples/WildcardTyFam.hs" 3 19 3 24+ ]+ }+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 13 3 18+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 13 3 16+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 13 3 16+ , srcInfoPoints = []+ }+ "Foo"))+ (UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 3 17 3 18+ , srcInfoPoints = []+ }+ "a")))+ Nothing+ Nothing+ [ TypeEqn+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/WildcardTyFam.hs" 4 9 4 10 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 8+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 3 4 6+ , srcInfoPoints = []+ }+ "Foo")))+ (TyWildCard+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 7 4 8+ , srcInfoPoints = []+ }+ Nothing))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/WildcardTyFam.hs" 4 11 4 14+ , srcInfoPoints = []+ }+ "Int")))+ ]+ ]+ , []+ )
+ tests/examples/WildcardTyFam.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/WildcardTyFam.hs.prettyprinter.golden view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeFamilies #-}++type family Foo a where+ Foo _ = Int
+ tests/examples/brackets.hs view
@@ -0,0 +1,44 @@+{-# LANGUAGE Arrows #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE UnicodeSyntax #-}++-- See Trac #10162 and #11743 for details++module ShouldCompile where++import Control.Arrow+import Language.Haskell.TH++handle :: ArrowPlus a => a (b,s) c -> a (b,(String,s)) c -> a (b,s) c+handle f h = proc (b,s) -> (f -< (b,s)) <+> (h -< (b,("FAIL",s)))++f :: ArrowPlus a => a (Int,Int) String+f = proc (x,y) ->+ ⦇handle+ (returnA -< show y)+ (\s -> returnA -< s ++ show x)+ ⦈++g :: ArrowPlus a => a (Int,Int) String+g = proc (x,y) ->+ ⦇handle+ (\msg -> returnA -< msg ++ show y)+ (\s msg -> returnA -< s ++ show x)+ ⦈ ("hello " ++ show x)++h :: ArrowPlus a => a (Int,Int) Int+h = proc (x,y) ->+ (+ (\z -> returnA -< x + z)+ <+>+ (\z -> returnA -< y + z)+ ) (x*y)+++matches :: PatQ -> ExpQ+matches pat = ⟦\x ->+ case x of+ $pat -> True+ _ -> False+ ⟧+
+ tests/examples/brackets.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/brackets.hs.parser.golden view
@@ -0,0 +1,2 @@+ParseFailed+ (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/brackets.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/brackets.hs.prettyprinter.golden view
@@ -0,0 +1,1 @@+ParseFailed (SrcLoc "tests/examples/brackets.hs" 17 3) "Parse error: \10631"
+ tests/examples/completesig01.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -Wall #-}+module Simple where++pattern Foo :: ()+pattern Foo = ()++a :: () -> ()+a Foo = ()++data A = B | C | D++{-# COMPLETE Foo #-}+{-# COMPLETE B,C #-}+{-# COMPLETE B #-}++b :: A -> A+b B = B+b C = C++{-# COMPLETE Foo :: () #-}+
+ tests/examples/completesig01.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/completesig01.hs.parser.golden view
@@ -0,0 +1,681 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 1 1 24 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 1 1 1 1+ , SrcSpan "tests/examples/completesig01.hs" 2 1 2 1+ , SrcSpan "tests/examples/completesig01.hs" 3 1 3 1+ , SrcSpan "tests/examples/completesig01.hs" 4 1 4 1+ , SrcSpan "tests/examples/completesig01.hs" 4 1 4 1+ , SrcSpan "tests/examples/completesig01.hs" 6 1 6 1+ , SrcSpan "tests/examples/completesig01.hs" 7 1 7 1+ , SrcSpan "tests/examples/completesig01.hs" 9 1 9 1+ , SrcSpan "tests/examples/completesig01.hs" 10 1 10 1+ , SrcSpan "tests/examples/completesig01.hs" 12 1 12 1+ , SrcSpan "tests/examples/completesig01.hs" 14 1 14 1+ , SrcSpan "tests/examples/completesig01.hs" 15 1 15 1+ , SrcSpan "tests/examples/completesig01.hs" 16 1 16 1+ , SrcSpan "tests/examples/completesig01.hs" 18 1 18 1+ , SrcSpan "tests/examples/completesig01.hs" 19 1 19 1+ , SrcSpan "tests/examples/completesig01.hs" 20 1 20 1+ , SrcSpan "tests/examples/completesig01.hs" 22 1 22 1+ , SrcSpan "tests/examples/completesig01.hs" 24 1 24 1+ , SrcSpan "tests/examples/completesig01.hs" 24 1 24 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 4 1 4 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 4 1 4 7+ , SrcSpan "tests/examples/completesig01.hs" 4 15 4 20+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 4 8 4 14+ , srcInfoPoints = []+ }+ "Simple")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 1 1 1 13+ , SrcSpan "tests/examples/completesig01.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 2 1 2 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 2 1 2 13+ , SrcSpan "tests/examples/completesig01.hs" 2 32 2 35+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 2 14 2 31+ , srcInfoPoints = []+ }+ "NoImplicitPrelude"+ ]+ , OptionsPragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 3 1 3 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 3 1 3 23+ , SrcSpan "tests/examples/completesig01.hs" 3 23 3 26+ ]+ }+ (Just GHC)+ "-Wall "+ ]+ []+ [ PatSynSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 1 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 6 1 6 8+ , SrcSpan "tests/examples/completesig01.hs" 6 13 6 15+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 9 6 12+ , srcInfoPoints = []+ }+ "Foo"+ ]+ Nothing+ Nothing+ Nothing+ Nothing+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 16 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 6 16 6 17+ , SrcSpan "tests/examples/completesig01.hs" 6 17 6 18+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 16 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 6 16 6 17+ , SrcSpan "tests/examples/completesig01.hs" 6 17 6 18+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 16 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 6 16 6 17+ , SrcSpan "tests/examples/completesig01.hs" 6 17 6 18+ ]+ })))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 1 7 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 7 1 7 8+ , SrcSpan "tests/examples/completesig01.hs" 7 13 7 14+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 9 7 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 9 7 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 9 7 12+ , srcInfoPoints = []+ }+ "Foo"))+ [])+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 15 7 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 7 15 7 16+ , SrcSpan "tests/examples/completesig01.hs" 7 16 7 17+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 15 7 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 7 15 7 16+ , SrcSpan "tests/examples/completesig01.hs" 7 16 7 17+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 7 15 7 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 7 15 7 16+ , SrcSpan "tests/examples/completesig01.hs" 7 16 7 17+ ]+ }))+ [])+ ImplicitBidirectional+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 1 9 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 3 9 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 1 9 2+ , srcInfoPoints = []+ }+ "a"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 9 9 11 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 6 9 7+ , SrcSpan "tests/examples/completesig01.hs" 9 7 9 8+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 6 9 7+ , SrcSpan "tests/examples/completesig01.hs" 9 7 9 8+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 6 9 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 6 9 7+ , SrcSpan "tests/examples/completesig01.hs" 9 7 9 8+ ]+ })))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 12 9 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 12 9 13+ , SrcSpan "tests/examples/completesig01.hs" 9 13 9 14+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 12 9 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 12 9 13+ , SrcSpan "tests/examples/completesig01.hs" 9 13 9 14+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 9 12 9 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 9 12 9 13+ , SrcSpan "tests/examples/completesig01.hs" 9 13 9 14+ ]+ }))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 10 1 10 11+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 10 1 10 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 1 10 2+ , srcInfoPoints = []+ }+ "a")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 3 10 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 3 10 6+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 10 3 10 6+ , srcInfoPoints = []+ }+ "Foo"))+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 10 7 10 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 10 7 10 8 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 10 9 10 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 10 9 10 10+ , SrcSpan "tests/examples/completesig01.hs" 10 10 10 11+ ]+ }+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 10 9 10 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 10 9 10 10+ , SrcSpan "tests/examples/completesig01.hs" 10 10 10 11+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 10 9 10 11+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 10 9 10 10+ , SrcSpan "tests/examples/completesig01.hs" 10 10 10 11+ ]+ }))))+ Nothing+ ]+ , DataDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 1 12 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 12 8 12 9+ , SrcSpan "tests/examples/completesig01.hs" 12 12 12 13+ , SrcSpan "tests/examples/completesig01.hs" 12 16 12 17+ ]+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 12 1 12 5+ , srcInfoPoints = []+ })+ Nothing+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 12 6 12 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 12 6 12 7+ , srcInfoPoints = []+ }+ "A"))+ [ QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 10 12 11+ , srcInfoPoints = []+ }+ "B")+ [])+ , QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 14 12 15+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 14 12 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 14 12 15+ , srcInfoPoints = []+ }+ "C")+ [])+ , QualConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ Nothing+ Nothing+ (ConDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ "D")+ [])+ ]+ []+ , CompletePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 14 1 14 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 14 1 14 13+ , SrcSpan "tests/examples/completesig01.hs" 14 18 14 21+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 14 14 14 17+ , srcInfoPoints = []+ }+ "Foo"+ ]+ Nothing+ , CompletePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 15 1 15 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 15 1 15 13+ , SrcSpan "tests/examples/completesig01.hs" 15 15 15 16+ , SrcSpan "tests/examples/completesig01.hs" 15 18 15 21+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 15 14 15 15+ , srcInfoPoints = []+ }+ "B"+ , Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 15 16 15 17+ , srcInfoPoints = []+ }+ "C"+ ]+ Nothing+ , CompletePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 16 1 16 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 16 1 16 13+ , SrcSpan "tests/examples/completesig01.hs" 16 16 16 19+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 16 14 16 15+ , srcInfoPoints = []+ }+ "B"+ ]+ Nothing+ , TypeSig+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 18 1 18 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 18 3 18 5 ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 1 18 2+ , srcInfoPoints = []+ }+ "b"+ ]+ (TyFun+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 18 6 18 12+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 18 8 18 10 ]+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 6 18 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 6 18 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 18 6 18 7+ , srcInfoPoints = []+ }+ "A")))+ (TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 18 11 18 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 18 11 18 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 18 11 18 12+ , srcInfoPoints = []+ }+ "A"))))+ , FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 1 20 8+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 1 19 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 1 19 2+ , srcInfoPoints = []+ }+ "b")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 3 19 4+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 3 19 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 3 19 4+ , srcInfoPoints = []+ }+ "B"))+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 5 19 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 19 5 19 6 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 7 19 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 7 19 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 19 7 19 8+ , srcInfoPoints = []+ }+ "B"))))+ Nothing+ , Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 1 20 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 1 20 2+ , srcInfoPoints = []+ }+ "b")+ [ PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 3 20 4+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 3 20 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 3 20 4+ , srcInfoPoints = []+ }+ "C"))+ []+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 5 20 8+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 20 5 20 6 ]+ }+ (Con+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 7 20 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 7 20 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 20 7 20 8+ , srcInfoPoints = []+ }+ "C"))))+ Nothing+ ]+ , CompletePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 22 1 22 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 22 1 22 13+ , SrcSpan "tests/examples/completesig01.hs" 22 18 22 20+ , SrcSpan "tests/examples/completesig01.hs" 22 24 22 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 22 14 22 17+ , srcInfoPoints = []+ }+ "Foo"+ ]+ (Just+ (Special+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 22 21 22 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 22 21 22 22+ , SrcSpan "tests/examples/completesig01.hs" 22 22 22 23+ ]+ }+ (UnitCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/completesig01.hs" 22 21 22 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/completesig01.hs" 22 21 22 22+ , SrcSpan "tests/examples/completesig01.hs" 22 22 22 23+ ]+ })))+ ]+ , []+ )
+ tests/examples/completesig01.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/completesig01.hs.prettyprinter.golden view
@@ -0,0 +1,27 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -Wall #-}+module Simple where++pattern Foo :: ()++pattern Foo = ()++a :: () -> ()+a Foo = ()++data A = B+ | C+ | D++{-# COMPLETE Foo #-}++{-# COMPLETE B, C #-}++{-# COMPLETE B #-}++b :: A -> A+b B = B+b C = C++{-# COMPLETE Foo :: () #-}
+ tests/examples/t403.hs view
@@ -0,0 +1,9 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+module T403 where++pattern (:&&:) :: () => forall k. ((k :+ 1) ~ n) => a -> HoHeList k a -> HoHeList n a+pattern (:&&:) x rest <- (matchNext -> Right (x, Refl, rest))
+ tests/examples/t403.hs.exactprinter.golden view
@@ -0,0 +1,10 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+module T403 where++pattern (:&&:) :: () => ((k :+ 1) ~ n) => a -> HoHeList k a -> HoHeList n a+pattern ((:&&:))xrest <- (matchNext -> Right (x, Refl, rest))+
+ tests/examples/t403.hs.parser.golden view
@@ -0,0 +1,520 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 1 10 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 1 1 1 1+ , SrcSpan "tests/examples/t403.hs" 2 1 2 1+ , SrcSpan "tests/examples/t403.hs" 3 1 3 1+ , SrcSpan "tests/examples/t403.hs" 4 1 4 1+ , SrcSpan "tests/examples/t403.hs" 5 1 5 1+ , SrcSpan "tests/examples/t403.hs" 6 1 6 1+ , SrcSpan "tests/examples/t403.hs" 6 1 6 1+ , SrcSpan "tests/examples/t403.hs" 8 1 8 1+ , SrcSpan "tests/examples/t403.hs" 9 1 9 1+ , SrcSpan "tests/examples/t403.hs" 10 1 10 1+ , SrcSpan "tests/examples/t403.hs" 10 1 10 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 6 1 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 6 1 6 7+ , SrcSpan "tests/examples/t403.hs" 6 13 6 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 6 8 6 12+ , srcInfoPoints = []+ }+ "T403")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 1 1 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 1 1 1 13+ , SrcSpan "tests/examples/t403.hs" 1 30 1 33+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 14 1 29+ , srcInfoPoints = []+ }+ "PatternSynonyms"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 2 1 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 2 1 2 13+ , SrcSpan "tests/examples/t403.hs" 2 25 2 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 2 14 2 24+ , srcInfoPoints = []+ }+ "RankNTypes"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 3 1 3 30+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 3 1 3 13+ , SrcSpan "tests/examples/t403.hs" 3 27 3 30+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 3 14 3 26+ , srcInfoPoints = []+ }+ "ViewPatterns"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 4 1 4 31+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 4 1 4 13+ , SrcSpan "tests/examples/t403.hs" 4 28 4 31+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 4 14 4 27+ , srcInfoPoints = []+ }+ "TypeOperators"+ ]+ , LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 5 1 5 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 5 1 5 13+ , SrcSpan "tests/examples/t403.hs" 5 24 5 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 5 14 5 23+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ ]+ []+ [ PatSynSig+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 1 8 86+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 8 1 8 8+ , SrcSpan "tests/examples/t403.hs" 8 16 8 18+ ]+ }+ [ Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 9 8 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 8 9 8 10+ , SrcSpan "tests/examples/t403.hs" 8 10 8 14+ , SrcSpan "tests/examples/t403.hs" 8 14 8 15+ ]+ }+ ":&&:"+ ]+ Nothing+ (Just+ (CxEmpty+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 19 8 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 8 19 8 20+ , SrcSpan "tests/examples/t403.hs" 8 20 8 21+ , SrcSpan "tests/examples/t403.hs" 8 22 8 24+ ]+ }))+ (Just+ [ UnkindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 32 8 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 32 8 33+ , srcInfoPoints = []+ }+ "k")+ ])+ (Just+ (CxSingle+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 35 8 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 8 35 8 36+ , SrcSpan "tests/examples/t403.hs" 8 48 8 49+ , SrcSpan "tests/examples/t403.hs" 8 50 8 52+ ]+ }+ (ParenA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 35 8 52+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 8 35 8 36+ , SrcSpan "tests/examples/t403.hs" 8 48 8 49+ , SrcSpan "tests/examples/t403.hs" 8 50 8 52+ ]+ }+ (TypeA+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48+ , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]+ }+ (TyEquals+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48+ , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]+ }+ (TyParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 44+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 8 36 8 37+ , SrcSpan "tests/examples/t403.hs" 8 43 8 44+ ]+ }+ (TyInfix+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 43+ , srcInfoPoints = []+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38+ , srcInfoPoints = []+ }+ "k"))+ (UnpromotedName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41+ , srcInfoPoints = []+ }+ ":+")))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43+ , srcInfoPoints = []+ }+ (PromotedInteger+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43+ , srcInfoPoints = []+ }+ 1+ "1"))))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48+ , srcInfoPoints = []+ }+ "n")))))))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 86+ , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 55 8 57 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 54+ , srcInfoPoints = []+ }+ "a"))+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 86+ , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 71 8 73 ]+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 70+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 68+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66+ , srcInfoPoints = []+ }+ "HoHeList")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 67 8 68+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 67 8 68+ , srcInfoPoints = []+ }+ "k")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 69 8 70+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 69 8 70+ , srcInfoPoints = []+ }+ "a")))+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 86+ , srcInfoPoints = []+ }+ (TyApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 84+ , srcInfoPoints = []+ }+ (TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82+ , srcInfoPoints = []+ }+ "HoHeList")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 83 8 84+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 83 8 84+ , srcInfoPoints = []+ }+ "n")))+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 85 8 86+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 85 8 86+ , srcInfoPoints = []+ }+ "a")))))+ , PatSyn+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 1 9 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 9 1 9 8+ , SrcSpan "tests/examples/t403.hs" 9 23 9 25+ ]+ }+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 9 9 9 10+ , SrcSpan "tests/examples/t403.hs" 9 10 9 14+ , SrcSpan "tests/examples/t403.hs" 9 14 9 15+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 9 9 9 10+ , SrcSpan "tests/examples/t403.hs" 9 10 9 14+ , SrcSpan "tests/examples/t403.hs" 9 14 9 15+ ]+ }+ ":&&:"))+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 16 9 17+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 18 9 22+ , srcInfoPoints = []+ }+ "rest")+ ])+ (PParen+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 26 9 62+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 9 26 9 27+ , SrcSpan "tests/examples/t403.hs" 9 61 9 62+ ]+ }+ (PViewPat+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 61+ , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 9 37 9 39 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36+ , srcInfoPoints = []+ }+ "matchNext")))+ (PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 61+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 45+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 45+ , srcInfoPoints = []+ }+ "Right"))+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 46 9 61+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t403.hs" 9 46 9 47+ , SrcSpan "tests/examples/t403.hs" 9 48 9 49+ , SrcSpan "tests/examples/t403.hs" 9 54 9 55+ , SrcSpan "tests/examples/t403.hs" 9 60 9 61+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 47 9 48+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 47 9 48+ , srcInfoPoints = []+ }+ "x")+ , PApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54+ , srcInfoPoints = []+ }+ "Refl"))+ []+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 56 9 60+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 56 9 60+ , srcInfoPoints = []+ }+ "rest")+ ]+ ])))+ Unidirectional+ ]+ , []+ )
+ tests/examples/t403.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/t403.hs.prettyprinter.golden view
@@ -0,0 +1,11 @@+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+module T403 where++pattern (:&&:) :: () => forall k . ((k :+ 1) ~ n) =>+ a -> HoHeList k a -> HoHeList n a++pattern (:&&:) x rest <- (matchNext -> Right (x, Refl, rest))
+ tests/examples/t412.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeInType #-}++module Typeintype+ ( App ) where++import Data.Kind++data App (f :: k -> *)
+ tests/examples/t412.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/t412.hs.parser.golden view
@@ -0,0 +1,166 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t412.hs" 1 1 1 1+ , SrcSpan "tests/examples/t412.hs" 3 1 3 1+ , SrcSpan "tests/examples/t412.hs" 3 1 3 1+ , SrcSpan "tests/examples/t412.hs" 6 1 6 1+ , SrcSpan "tests/examples/t412.hs" 8 1 8 1+ , SrcSpan "tests/examples/t412.hs" 9 1 9 1+ , SrcSpan "tests/examples/t412.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 3 1 4 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t412.hs" 3 1 3 7+ , SrcSpan "tests/examples/t412.hs" 4 16 4 21+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 3 8 3 18+ , srcInfoPoints = []+ }+ "Typeintype")+ Nothing+ (Just+ (ExportSpecList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 8 4 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t412.hs" 4 8 4 9+ , SrcSpan "tests/examples/t412.hs" 4 14 4 15+ ]+ }+ [ EAbs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+ , srcInfoPoints = []+ }+ (NoNamespace+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+ , srcInfoPoints = []+ })+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13+ , srcInfoPoints = []+ }+ "App"))+ ]))))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 1 1 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t412.hs" 1 1 1 13+ , SrcSpan "tests/examples/t412.hs" 1 25 1 28+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 14 1 24+ , srcInfoPoints = []+ }+ "TypeInType"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 6 1 6 17+ , srcInfoPoints = [ SrcSpan "tests/examples/t412.hs" 6 1 6 7 ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 6 8 6 17+ , srcInfoPoints = []+ }+ "Data.Kind"+ , importQualified = False+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs = Nothing+ , importSpecs = Nothing+ }+ ]+ [ DataDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 1 8 5+ , srcInfoPoints = []+ }+ (DataType+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 1 8 5+ , srcInfoPoints = []+ })+ Nothing+ (DHApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 23+ , srcInfoPoints = []+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ "App"))+ (KindedVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 10 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/t412.hs" 8 10 8 11+ , SrcSpan "tests/examples/t412.hs" 8 13 8 15+ , SrcSpan "tests/examples/t412.hs" 8 22 8 23+ ]+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 11 8 12+ , srcInfoPoints = []+ }+ "f")+ (TyFun+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 22+ , srcInfoPoints = [ SrcSpan "tests/examples/t412.hs" 8 18 8 20 ]+ }+ (TyVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 17+ , srcInfoPoints = []+ }+ "k"))+ (TyStar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 21 8 22+ , srcInfoPoints = []+ }))))+ []+ []+ ]+ , []+ )
+ tests/examples/t412.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/t412.hs.prettyprinter.golden view
@@ -0,0 +1,5 @@+{-# LANGUAGE TypeInType #-}+module Typeintype (App) where+import Data.Kind++data App (f :: k -> *)