Compare commits

..

No commits in common. "ghc92" and "master" have entirely different histories.

636 changed files with 11069 additions and 16081 deletions

3
.gitignore vendored
View File

@ -13,6 +13,3 @@ cabal.project.local*
cabal.project.freeze cabal.project.freeze
.ghc.environment.* .ghc.environment.*
result result
/nix/seaaye-cache
/nix/gcroots
/nix/ci-out

View File

@ -1,7 +1,7 @@
cabal-version: 2.2 cabal-version: 2.2
name: brittany name: brittany
version: 92.1.0.0 version: 0.14.0.2
synopsis: Haskell source code formatter synopsis: Haskell source code formatter
description: description:
See <https://github.com/lspitzner/brittany/blob/master/README.md the README>. See <https://github.com/lspitzner/brittany/blob/master/README.md the README>.
@ -24,7 +24,8 @@ extra-doc-files:
README.md README.md
doc/implementation/*.md doc/implementation/*.md
extra-source-files: extra-source-files:
data/*.blt data/brittany.yaml
data/*.hs
source-repository head source-repository head
type: git type: git
@ -38,9 +39,9 @@ flag pedantic
common library common library
build-depends: build-depends:
, aeson ^>= 2.0.1 , aeson ^>= 2.0.1
, base >= 4.15.0 && < 4.17 , base ^>= 4.15.0
, butcher ^>= 2.0.0 , butcher ^>= 1.3.3
, bytestring >= 0.10.12 && < 0.12 , bytestring ^>= 0.10.12
, cmdargs ^>= 0.10.21 , cmdargs ^>= 0.10.21
, containers ^>= 0.6.4 , containers ^>= 0.6.4
, czipwith ^>= 1.0.1 , czipwith ^>= 1.0.1
@ -49,17 +50,17 @@ common library
, directory ^>= 1.3.6 , directory ^>= 1.3.6
, extra ^>= 1.7.10 , extra ^>= 1.7.10
, filepath ^>= 1.4.2 , filepath ^>= 1.4.2
, ghc >= 9.0.1 && < 9.3 , ghc ^>= 9.0.1
, ghc-boot >= 9.0.1 && < 9.3 , ghc-boot ^>= 9.0.1
, ghc-boot-th >= 9.0.1 && < 9.3 , ghc-boot-th ^>= 9.0.1
, ghc-exactprint >= 0.6.4 && < 1.6 , ghc-exactprint ^>= 0.6.4
, monad-memo ^>= 0.5.3 , monad-memo ^>= 0.5.3
, mtl ^>= 2.2.2 , mtl ^>= 2.2.2
, multistate ^>= 0.8.0 , multistate ^>= 0.8.0
, pretty ^>= 1.1.3 , pretty ^>= 1.1.3
, random ^>= 1.2.1 , random ^>= 1.2.1
, safe ^>= 0.3.19 , safe ^>= 0.3.19
, semigroups >= 0.19.2 && < 0.21 , semigroups ^>= 0.19.2
, strict ^>= 0.4.0 , strict ^>= 0.4.0
, syb ^>= 0.7.2 , syb ^>= 0.7.2
, text ^>= 1.2.5 , text ^>= 1.2.5
@ -70,6 +71,7 @@ common library
ghc-options: ghc-options:
-Weverything -Weverything
-Wno-all-missed-specialisations -Wno-all-missed-specialisations
-Wno-incomplete-uni-patterns
-Wno-missing-deriving-strategies -Wno-missing-deriving-strategies
-Wno-missing-export-lists -Wno-missing-export-lists
-Wno-missing-import-lists -Wno-missing-import-lists
@ -79,28 +81,10 @@ common library
-Wno-prepositive-qualified-module -Wno-prepositive-qualified-module
-Wno-safe -Wno-safe
-Wno-unsafe -Wno-unsafe
-Wno-missing-kind-signatures
-Wunused-imports
-fhide-source-paths
if flag(pedantic) if flag(pedantic)
ghc-options: -Werror ghc-options: -Werror
default-extensions: {
FlexibleContexts
FlexibleInstances
ScopedTypeVariables
MonadComprehensions
LambdaCase
MultiWayIf
KindSignatures
MultiParamTypeClasses
TypeApplications
RankNTypes
GADTs
BangPatterns
}
common executable common executable
import: library import: library
@ -110,7 +94,6 @@ common executable
-threaded -threaded
-Wno-implicit-prelude -Wno-implicit-prelude
-Wno-unused-packages -Wno-unused-packages
-fhide-source-paths
library library
import: library import: library
@ -118,46 +101,36 @@ library
autogen-modules: Paths_brittany autogen-modules: Paths_brittany
hs-source-dirs: source/library hs-source-dirs: source/library
exposed-modules: exposed-modules:
Language.Haskell.Brittany.Main
Language.Haskell.Brittany Language.Haskell.Brittany
Language.Haskell.Brittany.Internal Language.Haskell.Brittany.Internal
Language.Haskell.Brittany.Internal.Config.Config Language.Haskell.Brittany.Internal.Backend
Language.Haskell.Brittany.Internal.Config.InlineParsing Language.Haskell.Brittany.Internal.BackendUtils
Language.Haskell.Brittany.Internal.Config
Language.Haskell.Brittany.Internal.Config.Types Language.Haskell.Brittany.Internal.Config.Types
Language.Haskell.Brittany.Internal.Config.Types.Instances1 Language.Haskell.Brittany.Internal.Config.Types.Instances
Language.Haskell.Brittany.Internal.Config.Types.Instances2 Language.Haskell.Brittany.Internal.ExactPrintUtils
Language.Haskell.Brittany.Internal.ParseExact Language.Haskell.Brittany.Internal.LayouterBasics
Language.Haskell.Brittany.Internal.SplitExactModule Language.Haskell.Brittany.Internal.Layouters.DataDecl
Language.Haskell.Brittany.Internal.ToBriDoc.Comment Language.Haskell.Brittany.Internal.Layouters.Decl
Language.Haskell.Brittany.Internal.ToBriDoc.DataDecl Language.Haskell.Brittany.Internal.Layouters.Expr
Language.Haskell.Brittany.Internal.ToBriDoc.Decl Language.Haskell.Brittany.Internal.Layouters.IE
Language.Haskell.Brittany.Internal.ToBriDoc.Expr Language.Haskell.Brittany.Internal.Layouters.Import
Language.Haskell.Brittany.Internal.ToBriDoc.OpTree Language.Haskell.Brittany.Internal.Layouters.Module
Language.Haskell.Brittany.Internal.ToBriDoc.IE Language.Haskell.Brittany.Internal.Layouters.Pattern
Language.Haskell.Brittany.Internal.ToBriDoc.Import Language.Haskell.Brittany.Internal.Layouters.Stmt
Language.Haskell.Brittany.Internal.ToBriDoc.Module Language.Haskell.Brittany.Internal.Layouters.Type
Language.Haskell.Brittany.Internal.ToBriDoc.Pattern Language.Haskell.Brittany.Internal.Obfuscation
Language.Haskell.Brittany.Internal.ToBriDoc.Stmt Language.Haskell.Brittany.Internal.ParseModule
Language.Haskell.Brittany.Internal.ToBriDoc.Type
Language.Haskell.Brittany.Internal.ToBriDoc
Language.Haskell.Brittany.Internal.Components.BriDoc
Language.Haskell.Brittany.Internal.Components.Obfuscation
Language.Haskell.Brittany.Internal.Components.OpTree
Language.Haskell.Brittany.Internal.ToBriDocTools
Language.Haskell.Brittany.Internal.WriteBriDoc
Language.Haskell.Brittany.Internal.PerModule
Language.Haskell.Brittany.Internal.PerDecl
Language.Haskell.Brittany.Internal.Prelude Language.Haskell.Brittany.Internal.Prelude
Language.Haskell.Brittany.Internal.Transformations.T1_Alt Language.Haskell.Brittany.Internal.PreludeUtils
Language.Haskell.Brittany.Internal.Transformations.T2_Floating Language.Haskell.Brittany.Internal.Transformations.Alt
Language.Haskell.Brittany.Internal.Transformations.T3_Par Language.Haskell.Brittany.Internal.Transformations.Columns
Language.Haskell.Brittany.Internal.Transformations.T4_Columns Language.Haskell.Brittany.Internal.Transformations.Floating
Language.Haskell.Brittany.Internal.Transformations.T5_Indent Language.Haskell.Brittany.Internal.Transformations.Indent
Language.Haskell.Brittany.Internal.WriteBriDoc.AlignmentAlgo Language.Haskell.Brittany.Internal.Transformations.Par
Language.Haskell.Brittany.Internal.WriteBriDoc.Operators
Language.Haskell.Brittany.Internal.WriteBriDoc.Types
Language.Haskell.Brittany.Internal.Types Language.Haskell.Brittany.Internal.Types
Language.Haskell.Brittany.Internal.Utils Language.Haskell.Brittany.Internal.Utils
Language.Haskell.Brittany.Main
Paths_brittany Paths_brittany
executable brittany executable brittany
@ -170,11 +143,7 @@ test-suite brittany-test-suite
import: executable import: executable
build-depends: build-depends:
, hspec >= 2.8.3 && < 2.10 , hspec ^>= 2.8.3
, HUnit >= 1.6.2 && < 1.7
, ansi-terminal >= 0.11.4 && < 0.12
, parsec ^>= 3.1.14
, these ^>= 1.1
hs-source-dirs: source/test-suite hs-source-dirs: source/test-suite
main-is: Main.hs main-is: Main.hs
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0

View File

@ -1,296 +0,0 @@
#group data type declarations
#test nullary data type
data Foo = Bar {}
data Biz = Baz
#test single record
data Foo = Bar
{ foo :: Baz
}
#test record multiple names
data Foo = Bar
{ foo, bar :: Baz
}
#test record multiple types
data Foo = Bar
{ foo :: Baz
, bars :: Bizzz
}
#test record multiple types and names
data Foo = Bar
{ foo, biz :: Baz
, bar :: Bizzz
}
#test record multiple types deriving
data Foo = Bar
{ fooz :: Baz
, bar :: Bizzz
}
deriving Show
#test record long field names
data MyRecord = MyConstructor
{ bar1, bar2
:: Loooooooooooooooooooooooooooooooong
-> Loooooooooooooooooooooooooooooooong
, foo1, foo2
:: Loooooooooooooooooooooooooooooooonger
-> Loooooooooooooooooooooooooooooooonger
}
#test record with DataTypeContexts
{-# LANGUAGE DatatypeContexts #-}
data
( LooooooooooooooooooooongConstraint a
, LooooooooooooooooooooongConstraint b
) =>
MyRecord a b
= MyConstructor
{ foo1, foo2
:: loooooooooooooooooooooooooooooooong
-> loooooooooooooooooooooooooooooooong
, bar :: a
, bazz :: b
}
#test record single line layout
{-# LANGUAGE ScopedTypeVariables #-}
-- brittany { lconfig_allowSinglelineRecord: true }
data MyRecord = forall a . Show a => MyCons { foo :: a -> a, i :: Int }
#test record no matching single line layout
{-# LANGUAGE ScopedTypeVariables #-}
-- brittany { lconfig_allowSinglelineRecord: true }
data MyRecord = forall a . Show a => Bar
{ foo :: abittoolongbutnotvery -> abittoolongbutnotvery
}
#test avoid single-line record if there are comments
-- brittany { lconfig_allowSinglelineRecord: true }
data MyRecord = MyRecord
{ a :: Int
-- ^ comment 1
, b :: Int
-- ^ comment 2
}
#test record forall constraint multiline
{-# LANGUAGE ScopedTypeVariables #-}
data MyRecord
= forall a
. LooooooooooooooooooooongConstraint a =>
LoooooooooooongConstructor
{ foo :: abittoolongbutnotvery -> abittoolongbutnotvery
}
#test record forall constraint multiline more
{-# LANGUAGE ScopedTypeVariables #-}
data MyRecord
= forall a b
. ( Loooooooooooooooooooooooooooooooong a
, Loooooooooooooooooooooooooooooooong b
) =>
MyConstructor
{ a :: a
, b :: b
}
#test plain with forall and constraint
{-# LANGUAGE ScopedTypeVariables #-}
data MyStruct
= forall a b
. ( Loooooooooooooooooooooooooooooooong a
, Loooooooooooooooooooooooooooooooong b
) =>
MyConstructor (ToBriDocM BriDocNumbered)
(ToBriDocM BriDocNumbered)
(ToBriDocM BriDocNumbered)
#test record with many features
{-# LANGUAGE ScopedTypeVariables #-}
data MyRecord
= forall a b
. ( Loooooooooooooooooooooooooooooooong a
, Loooooooooooooooooooooooooooooooong b
) =>
MyConstructor
{ foo, foo2
:: loooooooooooooooooooooooooooooooong
-> loooooooooooooooooooooooooooooooong
, bar :: a
, bazz :: b
}
deriving Show
#test record multiple types deriving
data Foo = Bar
{ foo :: Baz
, bars :: Bizzz
}
deriving (Show, Eq, Monad, Functor, Traversable, Foldable)
#test record multiple deriving strategies
data Foo = Bar
{ foo :: Baz
, bars :: Bizzz
}
deriving Show
deriving (Eq, Ord)
deriving stock Show
deriving stock (Eq, Ord)
deriving anyclass Show
deriving anyclass (Show, Eq, Monad, Functor)
deriving newtype Show
deriving newtype (Traversable, Foldable)
#test record deriving via
data Foo = Bar
{ foo :: Baz
, bars :: Bizzz
}
deriving ToJSON via (SomeType)
deriving (ToJSON, FromJSON) via (SomeType)
#test single record existential
{-# LANGUAGE ExistentialQuantification #-}
data Foo = forall a . Show a => Bar
{ foo :: a
}
#test record multiple types existential
{-# LANGUAGE ExistentialQuantification #-}
data Foo = forall a b . (Show a, Eq b) => Bar
{ foo :: a
, bars :: b
}
#test plain comment simple
-- before
data MyData = MyData Int
-- after
#test record newline comment
data MyRecord = MyRecord
{ a :: Int
-- comment
, b :: Int
}
#test record comments simple
data Foo = Bar -- a
{ foo :: Baz -- b
, bars :: Bizzz -- c
} -- d
deriving (Show, Eq, Monad, Functor, Traversable, Foldable) -- e
#test record comments strange inline
data Foo = Bar
{ -- a
foo -- b
:: -- c
Baz -- d
, -- e
bars :: Bizzz
}
deriving (Show, Eq, Monad, Functor, Traversable, Foldable)
#test record comments in deriving
## maybe we want to switch to a differnt layout when there are such comments.
## Don't hesitate to modify this testcase, it clearly is not the ideal layout
## for this.
data Foo = Bar
{ foo :: Baz
, bars :: Bizzz
}
-- a
deriving --b
( -- c
ToJSON -- d
, -- e
FromJSON --f
) -- g
#test record comments in deriving via
## maybe we want to switch to a differnt layout when there are such comments.
## Don't hesitate to modify this testcase, it clearly is not the ideal layout
## for this.
data Foo = Bar
{ foo :: Baz
, bars :: Bizzz
}
-- a
deriving --a
ToJSON --b
via -- c
( -- d
SomeType --e
, -- f
ABC --g
)
#test comment before equal sign
{-# LANGUAGE ExistentialQuantification #-}
data MyRecord
-- test comment
= forall a b
. ( Loooooooooooooooooooooooooooooooong a
, Loooooooooooooooooooooooooooooooong b
) =>
MyConstructor a b
#test normal records on multi line indent policy left
-- brittany {lconfig_indentPolicy: IndentPolicyLeft }
data EnterpriseGrantsForCompanyResponse = EnterpriseGrantsForCompanyResponse
Types.Company
[EnterpriseGrantResponse]
#test normal records on multi line indent policy free
-- brittany {lconfig_indentPolicy: IndentPolicyFree }
data GrantsForCompanyResp = GrantsForCompanyResp Types.Company
[EnterpriseGrantResponse]
#test normal records on multi line indent policy free 2
-- brittany {lconfig_indentPolicy: IndentPolicyFree }
data EnterpriseGrantsForCompanyResponse = EnterpriseGrantsForCompanyResponse
Types.Company
[EnterpriseGrantResponse]
#test normal records on multi line indent policy multiple
-- brittany {lconfig_indentPolicy: IndentPolicyMultiple }
data GrantsForCompanyResp = GrantsForCompanyResp Types.Company
[EnterpriseGrantResponse]
#test large record with a comment
data XIILqcacwiuNiu = XIILqcacwiuNiu
{ oyyFtvbepgbOge_pebzVmuftEijwuj :: Jgtoyuh HessJvNlo
, wloQsiskdoxJop_xatiKrwedOxtu :: Jgtoyuh [Inotg]
, mmmJjcqtemyIyo_ovosDoreKeeoyamvove :: Jgtoyuh Eujo
, mbiIatelofxOzr_uluxNngiiMjah :: Jgtoyuh HessJvNlo
, obxIskfcxpkIkb_uuviTuevcSkrgo :: Jgtoyuh Int
, wqrAtuvuecoHwr_ilotNxbuPleo :: Jgtoyuh Ufaxdeq
, lofAfuebdhpLuv_cnekPoyFxmg :: Jgtoyuh Ufaxdeq
, ouoFugtawzvUpk_oupiLzptugy :: Jgtoyuh Eujo
, iqiXjtziwogNsa_uiyvSunaTtgUsf3 :: Jgtoyuh Oaivn
, odbIriaqnojUlz_onotoWuunehIpuy :: Jgtoyuh Eujo
, opjUxtkxzkiKse_luqjuZazt
:: Jgtoyuh [(Eujo, Int, Int, Int, Int, Int, NELUxro)]
-- , jcqRaqznxfhIpa_ywevMezmoYkutuwa :: Jgtoyuh ()
, vayOmuasyphOfd_bcsVljmvt :: Jgtoyuh Eujo
, rifArahilooRax_ufikecqdImsv :: Jgtoyuh Oaivn
, raqKtopcpszDwb_oqocubasZuqjcryoDojGkw :: Jgtoyuh Oaivn
, mluJiilpcijUtt_gaisklifVekfeyagRmfbyzz :: Jgtoyuh Oaivn
, oqhPaahjupaSmi_gamwwoovKyxznecvEayluc :: Jgtoyuh Oaivn
, mazFubimwebZpa_itidehDodiDlboz :: Jgtoyuh Vrep
, jeyOcuesexaYoy_vpqn :: Jgtoyuh ()
}

View File

@ -1,127 +0,0 @@
#group decl/instance
#test simple-instance
instance MyClass Int where
myMethod x = x + 1
#test simple-method-comment
instance MyClass Int where
myMethod x =
-- insightful comment
x + 1
#test simple-method-signature
instance MyClass Int where
myMethod :: Int -> Int
myMethod x = x + 1
#test simple-long-method-signature
instance MyClass Int where
myMethod
:: Int
-> Int
-> AReallyLongType
-> AReallyLongType
-> AReallyLongType
-> Int
myMethod x = x + 1
#test simple-two-methods
instance MyClass Int where
myMethod x = x + 1
myMethod2 x = x + 1
#test simple-two-signatures
instance MyClass Int where
myMethod
:: Int
-> Int
-> AReallyLongType
-> AReallyLongType
-> AReallyLongType
-> Int
myMethod x = x + 1
myMethod2 :: Int -> Int
myMethod2 x = x + 1
#test simple-instance-comment
-- | This instance should be commented on
instance MyClass Int where
-- | This method is also comment-worthy
myMethod x = x + 1
#test instance-with-type-family
instance MyClass Int where
type MyType = Int
myMethod :: MyType -> Int
myMethod x = x + 1
#test instance-with-type-family-below-method
instance MyClass Int where
type MyType = String
myMethod :: MyType -> Int
myMethod x = x + 1
type MyType = Int
#test instance-with-data-family
instance MyClass Int where
-- | This data is very important
data MyData = IntData
{ intData :: String
, intData2 :: Int
}
myMethod :: MyData -> Int
myMethod = intData2
#test instance-with-data-family-below-method
instance MyClass Int where
-- | This data is important
data MyData = Test Int Int
myMethod :: MyData -> Int
myMethod = intData2
-- | This data is also important
data MyData2 = IntData
{ intData :: String
-- ^ Interesting field
, intData2 :: Int
}
#test instance-with-newtype-family-and-deriving
{-# LANGUAGE TypeFamilies #-}
module Lib where
instance Foo () where
newtype Bar () = Baz ()
deriving (Eq, Ord, Show)
bar = Baz
#test instance-with-newtype-family-and-record
instance Foo Int where
newtype Bar Int = BarInt
{ unBarInt :: Int
}

View File

@ -1,134 +0,0 @@
#group decl/typefam/ghc9-support
#test type-instance-without-comment
{-# language TypeFamilies #-}
type family F a
type instance F Int = IO Int
#test type-instance-with-comment
{-# language TypeFamilies #-}
type family F a
type instance F Int = IO Int -- x
#test type-instance-with-module-header
{-# language TypeFamilies #-}
module M where
type family F a
type instance F Int = IO Int
#test newtype-instance-without-comment
{-# language TypeFamilies #-}
data family F a
newtype instance F Int = N Int
#test newtype-instance-with-comment
{-# language TypeFamilies #-}
data family F a
newtype instance F Int = N Int -- x
#test newtype-instance-with-module-header
{-# language TypeFamilies #-}
module M where
data family F a
newtype instance F Int = N Int
#test data-instance-without-comment
{-# language TypeFamilies #-}
data family F a
data instance F Int = D Int
#test data-instance-with-comment
{-# language TypeFamilies #-}
data family F a
data instance F Int = D Int -- x
#test data-instance-with-module-header
{-# language TypeFamilies #-}
module M where
data family F a
data instance F Int = D Int
#test instance-type-without-comment
{-# language TypeFamilies #-}
class C a where
type family F a
instance C Int where
type F Int = IO Int
#test instance-type-with-comment
{-# language TypeFamilies #-}
class C a where
type family F a
instance C Int where
type F Int = IO Int -- x
#test instance-type-with-module-header
{-# language TypeFamilies #-}
module M where
class C a where
type family F a
instance C Int where
type F Int = IO Int
#test instance-newtype-without-comment
{-# language TypeFamilies #-}
class C a where
data family F a
instance C Int where
newtype F Int = N Int
#test instance-newtype-with-comment
{-# language TypeFamilies #-}
class C a where
data family F a
instance C Int where
newtype F Int = N Int -- x
#test instance-newtype-with-module-header
{-# language TypeFamilies #-}
module M where
class C a where
data family F a
instance C Int where
newtype F Int = N Int
#test instance-data-without-comment
{-# language TypeFamilies #-}
class C a where
data family F a
instance C Int where
data F Int = D Int
#test instance-data-with-comment
{-# language TypeFamilies #-}
class C a where
data family F a
instance C Int where
data F Int = D Int -- x
#test instance-data-with-module-header
{-# language TypeFamilies #-}
module M where
class C a where
data family F a
instance C Int where
data F Int = D Int

View File

@ -1,36 +0,0 @@
#group decl/typefam/instance
#test simple-typefam-instance
type instance MyFam Bool = String
#test simple-typefam-instance-param-type
type instance MyFam (Maybe a) = a -> Bool
#test simple-typefam-instance-parens
#pending the parens cause problems since ghc-8.8
type instance (MyFam (String -> Int)) = String
#test simple-typefam-instance-overflow
type instance MyFam ALongishType
= AMuchLongerTypeThanThat
-> AnEvenLongerTypeThanTheLastOne
-> ShouldDefinitelyOverflow
#test simple-typefam-instance-comments
-- | A happy family
type instance MyFam Bool -- This is an odd one
= AnotherType -- Here's another
#test simple-typefam-instance-parens-comment
#pending the parens cause problems since ghc-8.8
-- | A happy family
type instance (MyFam Bool) -- This is an odd one
= -- Here's another
AnotherType

View File

@ -1,150 +0,0 @@
#group expression/basic
#test var
func = x
describe "infix op" $ do
#test 1
func = x + x
#test long
func =
mweroiuxlskdfjlksjdflkjsdfljksldkjflkjsdflkj
+ mweroiuxlskdfjlksjdflkjsdfljksldkjflkjsdflkj
#test long keep linemode 1
func =
mweroiuxlskdfjlksjdflkjsdfljksldkjflkjsdflkj
+ mweroiuxlskdfjlksj
+ mweroiuxlskdfjlksj
#test long keep linemode 2
func =
mweroiuxlskdfjlksj
+ mweroiuxlskdfjlksj
+ mweroiuxlskdfjlksjdflkjsdfljksldkjflkjsdflkj
#test literals
func = 1
func = "abc"
func = 1.1e5
func = 'x'
func = 981409823458910394810928414192837123987123987123
#test lambda
func = \x -> abc
describe "app" $ do
#test 1
func = klajsdas klajsdas klajsdas
#test 2
func =
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
#test 3
func =
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd lakjsdlajsdljas
lakjsdlajsdljas
lakjsdlajsdljas
###
#group expression.basic.sections
###
#test left
func = (1 +)
#test right
func = (+ 1)
#test left inf
func = (1 `abc`)
#test right inf
func = (`abc` 1)
###
#group tuples
###
#test pair
func = (abc, def)
#test pair section left
func = (abc, )
#test pair section right
func = (, abc)
#test quintuple section long
myTupleSection =
( verylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargefirstelement
,
, verylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargethirdelement
,
)
#test 2
func =
( lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
, lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
)
#test comment-after-then
foo = if True
then
-- iiiiii
"a "
else
"b "
#test comment-after-if-else-do
func = if cond
then pure 42
else do
-- test
abc
#test nonempty-case-short
func = case x of
False -> False
True -> True
#test nonempty-case-long
func =
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of
False -> False
True -> True
#test nonempty-case-long-do
func = do
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of
False -> False
True -> True
#test empty-case-short
func = case x of {}
#test empty-case-long
func =
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of {}
#test empty-case-long-do
func = do
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of {}

View File

@ -1,26 +0,0 @@
#group expression/do
#test simple
func = do
stmt
stmt
#test bind
func = do
x <- stmt
stmt x
#test let
func = do
let x = 13
stmt x
#test do empty lines
func = do
<BLANKLINE>
let x = 13
<BLANKLINE>
y <- monadic
<BLANKLINE>
stmt (x + y)

View File

@ -1,27 +0,0 @@
#group expression/let
#test single-bind-comment-long
testMethod foo bar baz qux =
let x = undefined foo bar baz qux qux baz bar :: String
-- some comment explaining the in expression
in undefined foo x :: String
#test single-bind-comment-short
testMethod foo bar baz qux =
let x = undefined :: String
-- some comment explaining the in expression
in undefined :: String
#test single-bind-comment-before
testMethod foo bar baz qux =
-- some comment explaining the in expression
let x = undefined :: String in undefined :: String
#test multiple-binds-comment
foo foo bar baz qux =
let a = 1
b = 2
c = 3
-- some comment explaining the in expression
in undefined :: String

View File

@ -1,30 +0,0 @@
#group expression/list
#golden list format into singleline should not keep spacing
foo =
[ 1
, 2
, 3
, 4
, 5
]
#expected
foo = [1, 2, 3, 4, 5]
#golden singleline list with comment
foo = [1 {- a -}, {- b -} 2, {- c -} 3, 4, 5]
#expected
foo =
[ 1 {- a -}
, {- b -} 2
, {- c -} 3
, 4
, 5
]
#test set-base-y for multiple line elements
foo =
[ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
, bbbbbbbbbbbbbbbbbb
$ cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
]

View File

@ -1,16 +0,0 @@
#group expression.special
#test monad-comprehension-case-of
func = foooooo
$ [ case foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo of
_ -> True
]
#test operatorprefixalignment-even-with-multiline-alignbreak
func =
foo
$ [ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
]
++ [ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]

View File

@ -1,92 +0,0 @@
###############################################################################
#group decl/binding/basic
###############################################################################
#test basic 1
func x = x
#test infix 1
x *** y = x
#test symbol prefix
(***) x y = x
#test infix more args simple
(f >=> g) k = f k >>= g
#test infix more args alignment
(Left a <$$> Left dd) e f = True
(Left a <$$> Right d ) e f = True
(Right a <$$> Left d ) e f = False
(Right a <$$> Right dd) e f = True
###############################################################################
#group decl/binding/patterns
###############################################################################
#test wildcard
func _ = x
#test simple long pattern
func reallyreallyreallyreallyreallyreallyreallyreallyreallyreallylongvariable =
x
#test simple multiline pattern
func reallyreallyreallyreallyreallyreallyreallyreallyreallyreallylongvariable reallyreallyreallyreallyreallyreallyreallyreallyreallyreallylongvariable
= x
#test another multiline pattern
func reallyreallyreallyreallyreallyreallyreallyreallyreallyreallylongvariable a b
= x
#test simple constructor
func (A a) = a
#test list constructor
func (x : xr) = x
#test some other constructor symbol
func (x :+: xr) = x
#test normal infix constructor
func (x `Foo` xr) = x
###############################################################################
#group decl/binding/guards
###############################################################################
#test simple guard
func | True = x
#test multiple-clauses-1
func x | x = simple expression
| otherwise = 0
#test multiple-clauses-2
func x
| a somewhat longer guard x = "and a somewhat longer expession that does not"
| otherwise = "fit without putting the guards in new lines"
#test multiple-clauses-3
func x
| very long guard, another rather long guard that refers to x
= nontrivial expression foo bar alsdkjlasdjlasj
| otherwise
= 0
#test multiple-clauses-4
func x
| very long guard, another rather long guard that refers to x
= nontrivialexpression foo bar alsdkjlasdjlasj
| otherwise
= 0
#test multiple-clauses-5
func x
| very loooooooooooooooooooooooooooooong guard
, another rather long guard that refers to x
= nontrivial expression foo bar alsdkjlasdjlasj
| otherwise
= 0

View File

@ -1,271 +0,0 @@
#group module/imports
#test simple-import
import Data.List
#test simple-import-alias
import Data.List as L
#test simple-qualified-import
import qualified Data.List
#test simple-qualified-import-alias
import qualified Data.List as L
#test simple-safe
import safe Data.List as L
#test simple-source
import {-# SOURCE #-} Data.List ( )
#test simple-safe-qualified
import safe qualified Data.List
#test simple-safe-qualified-source
import {-# SOURCE #-} safe qualified Data.List
#test simple-qualified-package
import qualified "base" Data.List
#test qualifier-effect
import {-# SOURCE #-} safe qualified "base" Data.List as L
import {-# SOURCE #-} safe qualified "base" Data.List ( )
import {-# SOURCE #-} safe qualified Data.List hiding ( )
#test instances-only
import qualified Data.List ( )
#test one-element
import Data.List ( nub )
#test several-elements
import Data.List ( foldl'
, indexElem
, nub
)
#test a-ridiculous-amount-of-elements
import Test ( Long
, anymore
, fit
, items
, line
, list
, not
, onA
, quite
, single
, that
, will
, with
)
#test with-things
import Test ( (+)
, (:!)(..)
, (:*)((:.), T7, t7)
, (:.)
, T
, T2()
, T3(..)
, T4(T4)
, T5(T5, t5)
, T6((<|>))
)
#test hiding
import Test hiding ( )
import Test as T
hiding ( )
#test import-hiding-many
import Prelude as X
hiding ( head
, init
, last
, maximum
, minimum
, pred
, read
, readFile
, succ
, tail
, undefined
)
#test long-module-name-simple
import TestJustAbitToLongModuleNameLikeThisOneIs
( )
import TestJustShortEnoughModuleNameLikeThisOne ( )
#test long-module-name-as
import TestJustAbitToLongModuleNameLikeThisOneI
as T
import TestJustShortEnoughModuleNameLikeThisOn as T
#test long-module-name-hiding
import TestJustAbitToLongModuleNameLikeTh
hiding ( )
import TestJustShortEnoughModuleNameLike hiding ( )
#test long-module-name-simple-items
import MoreThanSufficientlyLongModuleNameWithSome
( compact
, fit
, inA
, items
, layout
, not
, that
, will
)
#test long-module-name-hiding-items
import TestJustAbitToLongModuleNameLikeTh
hiding ( abc
, def
, ghci
, jklm
)
import TestJustShortEnoughModuleNameLike hiding ( abc
, def
, ghci
, jklm
)
#test long-module-name-other
import {-# SOURCE #-} safe qualified "qualifier" A hiding ( )
import {-# SOURCE #-} safe qualified "qualifiers" A
hiding ( )
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAf as T
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAff ( )
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAff
as T
import {-# SOURCE #-} safe qualified "qualifiers" AlsoAffe
( )
#test import-with-comments
-- Test
import Data.List ( nub ) -- Test
{- Test -}
import qualified Data.List as L
( foldl' ) {- Test -}
-- Test
import Test ( test )
#test import-with-comments-2
import Test ( abc
, def
-- comment
)
#test import-with-comments-3
import Test ( abc
-- comment
)
#test import-with-comments-4
import Test ( abc
-- comment
, def
, ghi
{- comment -}
, jkl
-- comment
)
#test import-with-comments-5
import Test ( -- comment
)
#test long-bindings
import TestA ( longbindingNameThatoverflowsColum
)
import TestB ( Long
( List
, Of
, Things
)
)
#test things-with-with-comments
import Test ( Thing
( -- Comments
)
)
import Test ( Thing
( Item
-- and Comment
)
)
import Test ( Thing
( With
-- Comments
, and
-- also
, items
-- !
)
)
#test prefer-dense-empty-list
import VeryLongModuleNameThatCouldEvenCauseAnEmptyBindingListToExpandIntoMultipleLine
( )
#test preamble full-preamble
{-# LANGUAGE BangPatterns #-}
{-
- Test module
-}
module Test
( test1
-- ^ test
, test2
-- | test
, test3
, test4
, test5
, test6
, test7
, test8
, test9
, test10
-- Test 10
) where
-- Test
import Data.List ( nub ) -- Test
{- Test -}
import qualified Data.List as L
( foldl' ) {- Test -}
-- Test
import Test ( test )
#test sorted-imports
import Aaa
import Baa
#test sorted-import-groups
import Zaa
import Zab
<BLANKLINE>
import Aaa
import Baa
#test sorted-qualified-imports
import Boo
import qualified Zoo
#test imports-groups-same-module
import Boo ( a )
<BLANKLINE>
import Boo ( b )
#test sorted-imports-nested
import A.B.C
import A.B.D

View File

@ -1,66 +0,0 @@
#group module/top
#test simple
module Main where
#test no-exports
module Main () where
#test one-export
module Main (main) where
#test several-exports
module Main (main, test1, test2) where
#test many-exports
module Main
( main
, test1
, test2
, test3
, test4
, test5
, test6
, test7
, test8
, test9
) where
#test exports-with-comments
module Main
( main
-- main
, test1
, test2
-- Test 3
, test3
, test4
-- Test 5
, test5
-- Test 6
) where
#test simple-export-with-things
module Main (Test(..)) where
#test simple-export-with-module-contents
module Main (module Main) where
#test export-with-things
module Main (Test(Test, a, b)) where
#test export-with-things-comment
-- comment1
module Main
( Test(Test, a, b)
, foo -- comment2
) -- comment3
where
#test export-with-empty-thing
module Main (Test()) where
#test empty-with-comment
-- Intentionally left empty

View File

@ -1,249 +0,0 @@
#group expression/op-precedence
#test basic precedence-aware layouting
operatorExpr1 =
( foo1 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1
+ foo2 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2
+ foo3 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr3
+ foo4 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr4
+ foo5 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5
+ foo6 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr6
+ foo7 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr7
+ foo8 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr8
+ foo9 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr9
)
#test nested different precedences
operatorExpr2 =
( foo1 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1
+ foo2 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2
+ foo3 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr3
+ foo4 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr4
== foo5 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5
+ foo6 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr6
+ foo7 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr7
+ foo8 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr8
+ foo9 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr9
)
#test simple comment respecting
alternatives = -- a
( -- b
alternativeOne -- c
<|> alterantiveTwo -- d
<|> alternativeThree -- e
) -- f
#golden retaining comments while minimizing duplicated parens
#pending
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
alternatives = -- a
x
+ ( -- b
( -- c
alternativeOne -- c
<|> alterantiveTwo -- d
<|> alternativeThree -- e
) -- f
) -- g
#expected
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
alternatives = -- a
x
+ -- b
( -- c
alternativeOne -- c
<|> alterantiveTwo -- d
<|> alternativeThree -- e
) -- f -- g
#golden refactoring unnecessary parens basic example
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
operatorExpr1 =
( (goo1 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1)
+ goo2 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2
+ goo3 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr3
+ goo4 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr4
)
#expected
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
operatorExpr1 =
( goo1 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1
+ goo2 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2
+ goo3 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr3
+ goo4 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr4
)
#test feature flag fixityAwareOps works
-- brittany { lconfig_fixityAwareOps: False }
operatorExpr1 =
( goo1
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1
+ goo2
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2
+ goo3
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr3
+ goo4
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr4
+ goo5
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5
+ goo6
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr6
+ goo7
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr7
+ goo8
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr8
+ goo9
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr9
)
#golden op-app simple golden test
operatorExpr1 =
( goo1
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1
+ goo2
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2
+ goo3
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr3
+ goo4
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr4
+ goo5
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5
+ goo6
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr6
+ goo7
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr7
+ goo8
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr8
+ goo9
* barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr9
)
#expected
operatorExpr1 =
( goo1 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1
+ goo2 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2
+ goo3 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr3
+ goo4 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr4
+ goo5 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5
+ goo6 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr6
+ goo7 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr7
+ goo8 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr8
+ goo9 * barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr9
)
#golden op-app mixed golden
doop =
some long invocation ==
loooooooooongman + (third nested expression)
- 4 && {- meow -} 5
- 6
> 7
`mod` loooooooooongwoman || ill just invoke a function with these args
|| foo && dooasdoiaosdoi ** oaisdoioasido <= asduiuaisduiasdu + asdahjsd + ahsjdhjhasd
#expected
doop =
some long invocation == loooooooooongman + (third nested expression) - 4
&& {- meow -} 5 - 6 > 7 `mod` loooooooooongwoman
|| ill just invoke a function with these args
|| foo
&& dooasdoiaosdoi ** oaisdoioasido
<= asduiuaisduiasdu + asdahjsd + ahsjdhjhasd
#golden op-app mixed golden with added parens
-- brittany { lconfig_fixityBasedAddAlignParens: True }
doop =
some long invocation ==
loooooooooongman + (third nested expression)
- 4 && {- meow -} 5
- 6
> 7
`mod` loooooooooongwoman || ill just invoke a function with these args
|| foo && dooasdoiaosdoi ** oaisdoioasido <= asduiuaisduiasdu + asdahjsd + ahsjdhjhasd
#expected
-- brittany { lconfig_fixityBasedAddAlignParens: True }
doop =
( ( some long invocation == loooooooooongman + (third nested expression) - 4
&& {- meow -} 5 - 6 > 7 `mod` loooooooooongwoman
)
|| ill just invoke a function with these args
|| ( foo
&& ( dooasdoiaosdoi ** oaisdoioasido
<= asduiuaisduiasdu + asdahjsd + ahsjdhjhasd
)
)
)
#golden multiline mixed op expression 1
-- brittany { lconfig_fixityBasedAddAlignParens: True }
meow =
[docSeparator, docForceSL od1, docSeparator, docForceSL ed1]
++ join
[ [docSeparator, docForceSingleline od, docSeparator, docForceSingleline ed]
| (od, ed) <- ems
]
++ [docSeparator, docForceSingleline odN, docSeparator, lastWrap edN]
#expected
-- brittany { lconfig_fixityBasedAddAlignParens: True }
meow =
( [docSeparator, docForceSL od1, docSeparator, docForceSL ed1]
++ join
[ [ docSeparator
, docForceSingleline od
, docSeparator
, docForceSingleline ed
]
| (od, ed) <- ems
]
++ [docSeparator, docForceSingleline odN, docSeparator, lastWrap edN]
)
#golden multiline mixed op expression 2
-- brittany { lconfig_fixityBasedAddAlignParens: True }
meow =
[docSeparator, docForceSingleline od1, docSeparator, docForceSingleline ed1, something]
++ join
[ [docSeparator, docForceSingleline od, docSeparator, docForceSingleline ed]
| (od, ed) <- ems
]
++ [docSeparator, docForceSingleline odN, docSeparator, lastWrap edN, something]
#expected
-- brittany { lconfig_fixityBasedAddAlignParens: True }
meow =
( [ docSeparator
, docForceSingleline od1
, docSeparator
, docForceSingleline ed1
, something
]
++ join
[ [ docSeparator
, docForceSingleline od
, docSeparator
, docForceSingleline ed
]
| (od, ed) <- ems
]
++ [ docSeparator
, docForceSingleline odN
, docSeparator
, lastWrap edN
, something
]
)
#test operator-paren-alignment inside do and other op
func = do
other
( aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
**~ bbbbbbbbbbbbbbbbbb
**~ cccccccccccccccccccccccccccccccccccccccccccccccccc
)
== 13
#test allow lambdacase parspacing after operator
foo = do
abc `forM_` \case
True -> 1
False -> 0

View File

@ -1,29 +0,0 @@
#group type signatures/pragmas
#test inline pragma 1
func = f
where
{-# INLINE f #-}
f = id
#test inline pragma 2
func = ($)
where
{-# INLINE ($) #-}
($) = id
#test inline pragma 3
func = f
where
{-# INLINE CONLIKE [1] f #-}
f = id
#test noinline pragma 1
{-# NOINLINE func #-}
func :: Int
#test inline pragma 4
func = f
where
{-# INLINE [~1] f #-}
f = id

View File

@ -1,265 +0,0 @@
#group type signatures
#test simple001
func :: a -> a
#test long typeVar
func
:: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
#test keep linebreak mode
func
:: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lakjsdlkjasldkj
-> lakjsdlkjasldkj
#test simple parens 1
func :: ((a))
#test simple parens 2
func :: (a -> a) -> a
#test simple parens 3
func :: a -> (a -> a)
#test did anyone say parentheses?
func :: (((((((((())))))))))
-- current output is.. funny. wonder if that can/needs to be improved..
#test give me more!
#pending nested tuples over line length
func :: ((((((((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))))))))
#test unit
func :: ()
###############################################################################
#test paren'd func 1
func
:: ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lakjsdlkjasldkj
-> lakjsdlkjasldkj
)
#test paren'd func 2
func
:: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> (lakjsdlkjasldkj -> lakjsdlkjasldkj)
#test paren'd func 3
func
:: (lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd -> lakjsdlkjasldkj)
-> lakjsdlkjasldkj
#test paren'd func 4
func
:: ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
-> lakjsdlkjasldkj
#test paren'd func 5
func
:: ( ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
)
###############################################################################
#test type application 1
func :: asd -> Either a b
#test type application 2
func
:: asd
-> Either
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
#test type application 3
func
:: asd
-> Trither
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
#test type application 4
func
:: Trither
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> asd
#test type application 5
func
:: Trither
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
(lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd -> asd)
#test type application 6
func
:: Trither
asd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
#test type application paren 1
func
:: asd
-> ( Trither
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
#test type application paren 2
func
:: asd
-> ( Trither
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
#test type application paren 3
func
:: ( Trither
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> asd
###############################################################################
#test list simple
func :: [a -> b]
#test list func
func
:: [ lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
]
#test list paren
func
:: [ ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
]
################################################################## -- #############
#test tuple type 1
func :: (a, b, c)
#test tuple type 2
func :: ((a, b, c), (a, b, c), (a, b, c))
#test tuple type long
func
:: ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
, lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
, lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
#test tuple type nested
func
:: ( ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
, (lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd)
, lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
)
#test tuple type function
func
:: [ ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
, lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
, lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
]
###############################################################################
#test type operator stuff
#pending HsOpTy
test050 :: a :+: b
test051 :: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
:+: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
test052 :: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
:+: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
###############################################################################
#test forall oneliner
{-# LANGUAGE ScopedTypeVariables #-}
func :: forall (a :: *) b . a -> b
#test forall context multiline
{-# LANGUAGE ScopedTypeVariables #-}
func
:: forall m
. Foo
=> ColMap2
-> ColInfo
-> ColInfo
-> ColInfo
-> ColInfo
-> m ()
#test forall no-context multiline
{-# LANGUAGE ScopedTypeVariables #-}
func
:: forall m
. ColMap2
-> ColInfo
-> ColInfo
-> ColInfo
-> ColInfo
-> ColInfo
-> m ()
#test forall context multiline with comments
{-# LANGUAGE RankNTypes #-}
addFlagStringParam
:: forall f out
. (Applicative f)
=> String -- ^ short flag chars, i.e. "v" for -v
-> [String] -- ^ list of long names, i.e. ["verbose"]
-> String -- ^ param name
-> Flag String -- ^ properties
-> CmdParser f out String
#test language pragma issue
{-# LANGUAGE ScopedTypeVariables #-}
func :: forall (a :: *) b . a -> b
#test comments 1
func :: a -> b -- comment
#test comments 2
funcA :: a -> b -- comment A
funcB :: a -> b -- comment B
#test comments all
-- a
func -- b
:: -- c
a -- d
-> -- e
( -- f
c -- g
, -- h
d -- i
) -- j
-- k

View File

@ -1,94 +0,0 @@
#group decl/type synonyms
#test simple-synonym
type MySynonym = String
#test parameterised-synonym
type MySynonym a = [a]
#test long-function-synonym
-- | Important comment thrown in
type MySynonym b a
= MySynonym a b -> MySynonym a b -> MyParamType a b -> MyParamType a b
#test overflowing-function-synonym
type MySynonym3 b a
= MySynonym a b
-> MySynonym a b
-- ^ RandomComment
-> MyParamType a b
-> MyParamType a b
-> MySynonym2 b a
#test synonym-with-kind-sig
{-# LANGUAGE StarIsType #-}
type MySynonym (a :: * -> *)
= MySynonym a b
-> MySynonym a b
-> MyParamType a b
-> MyParamType a b
-> MySynonym2 b a
#test synonym-with-constraint
type MySynonym a = Num a => a -> Int
#test synonym-overflowing-with-constraint
type MySynonym a
= Num a
=> AReallyLongTypeName
-> AnotherReallyLongTypeName
-> AThirdTypeNameToOverflow
#test synonym-forall
{-# LANGUAGE RankNTypes #-}
type MySynonym = forall a . [a]
#test synonym-operator
type (:+:) a b = (a, b)
#test synonym-infix
type a `MySynonym` b = a -> b
#test synonym-infix-operator
type a :+: b = (a, b)
#test synonym-infix-parens
type (a `Foo` b) c = (a, b, c)
#test synonym-comments
type Foo a -- fancy type comment
= -- strange comment
Int
#test synonym-type-operators
type (a :+: b) = (a, b)
#test synonym-multi-parens
#pending loses extra parens
type ((a :+: b) c) = (a, c)
#test synonym-tuple-type-many-comments
type Foo
= ( -- t1
A -- t2
, -- t3
B -- t4
) -- t5

View File

@ -1,80 +0,0 @@
#group extensions/datakinds-promoted-types
### The spaces before commas are undesirable
#test 1
test :: Proxy '[ 'True ]
test = Proxy @'[ 'True ]
#test 2
test :: Proxy '[True]
test = Proxy @'[True]
#test 3
test :: Proxy '[ 'True, False ]
test = Proxy @'[ 'True, False ]
#test 4
test :: Proxy '[True, False]
test = Proxy @'[True, False]
#test 5
test :: Proxy '[True, 'False]
test = Proxy @'[True, 'False]
#test 6
test :: Proxy '[ 'True, 'False ]
test = Proxy @'[ 'True, 'False ]
#test 7
test :: Proxy '[ 'Just 'True, False ]
test = Proxy @'[ 'Just 'True, False ]
#test 8
test :: Proxy '[Just True, False]
test = Proxy @'[Just True, False]
#test 9
test :: Proxy '[('True)]
test = Proxy @'[('True)]
#test 10
test :: Proxy ('Just 'True)
test = Proxy @('Just 'True)
#test 11
test :: Proxy ('True)
test = Proxy @('True)
#test with-comment-1
test
:: Proxy '[-- comment
'True ]
test = Proxy @'[-- comment
'True ]
#test with-comment-2
test
:: Proxy '[-- comment
True]
test = Proxy @'[-- comment
True]
#test with-comment-3
test
:: Proxy '[{- comment -} 'True ]
test = Proxy @'[{- comment -} 'True ]
#test with-comment-4
test
:: Proxy '[{- comment -}
'True ]
test = Proxy @'[{- comment -}
'True ]
#test with-comment-5
test
:: Proxy '[{- comment -} True]
test = Proxy @'[{- comment -} True]
#test with-comment-6
test
:: Proxy '[{- comment -}
True]
test = Proxy @'[{- comment -}
True]
#test explicit-list-type non-promoted
type Foo = '[Bool, Bool, Bool]
#test explicit-list-type promoted
type Foo = '[ 'Bool, Bool, Bool ]

View File

@ -1,28 +0,0 @@
#group extensions/implicitparams
#test ImplicitParams 1
{-# LANGUAGE ImplicitParams #-}
func :: (?asd::Int) -> ()
#test ImplicitParams 2
{-# LANGUAGE ImplicitParams #-}
func
:: ( ?asd
:: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
-> ()
#test IP usage
{-# LANGUAGE ImplicitParams #-}
foo = ?bar
#test IP binding
{-# LANGUAGE ImplicitParams #-}
foo = let ?bar = Foo in value
#test IP type signature
{-# LANGUAGE ImplicitParams #-}
foo :: (?bar::Bool) => ()
foo = ()

View File

@ -1,23 +0,0 @@
#group extensions/multiwayif
#test multiwayif 1
{-# LANGUAGE MultiWayIf #-}
func = if
| cond1 -> loooooooooooooooooooooooooooooong expr1
| cond2 -> loooooooooooooooooooooooooooooong expr2
#test multiwayif 2
{-# LANGUAGE MultiWayIf #-}
func = do
foo
bar $ if
| cond1 -> loooooooooooooooooooooooooooooong expr1
| cond2 -> loooooooooooooooooooooooooooooong expr2
#test multiwayif comment between cases
func = do
if
| abc -> yes
-- | test comment
| _ -> no

View File

@ -1,10 +0,0 @@
#group extensions/overloadedlabels
#test bare label
{-# LANGUAGE OverloadedLabels #-}
foo = #bar
#test applied and composed label
{-# LANGUAGE OverloadedLabels #-}
foo = #bar . #baz $ fmap #foo xs

View File

@ -1,24 +0,0 @@
#group extensions/overloadedrecorddot
#test getfield
{-# LANGUAGE OverloadedRecordDot #-}
recorddot1 = a.b.c
#test getfield
{-# LANGUAGE OverloadedRecordDot #-}
recorddot2 =
{-before-} a.b.c {-after-}
#test projection
{-# LANGUAGE OverloadedRecordDot #-}
recorddot3 =
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
& (.bbbbbbbbbbbbbbbbbbbbbbbbbbb)
& (.ccccccccccccccccccccccccccccccccccccc)
& (.ddddddddddddddddddddddddddddddddddddddddddddddddddd)
#test projection too long
{-# LANGUAGE OverloadedRecordDot #-}
recorddot4 =
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
& (.bbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccc.ddddddddddddddddddddddddddddddddddddddddddddddddddd)

View File

@ -1,100 +0,0 @@
#group extensions/patternsynonyms
#test bidirectional pattern
{-# LANGUAGE PatternSynonyms #-}
pattern J x = Just x
#test unidirection pattern
{-# LANGUAGE PatternSynonyms #-}
pattern F x <- (x, _)
#test explicitly bidirectional pattern
{-# LANGUAGE PatternSynonyms #-}
pattern HeadC x <- x : xs where
HeadC x = [x]
#test Multiple arguments
{-# LANGUAGE PatternSynonyms #-}
pattern Head2 x y <- x : y : xs where
Head2 x y = [x, y]
#test Infix argument
{-# LANGUAGE PatternSynonyms #-}
pattern x :> y = [x, y]
#test Record argument
{-# LANGUAGE PatternSynonyms #-}
pattern MyData { a, b, c } = [a, b, c]
#test long pattern match
{-# LANGUAGE PatternSynonyms #-}
pattern myLongLeftVariableName `MyLongInfixPatternMatcher` myLongRightVariableName =
[myLongLeftVariableName, myLongRightVariableName]
#test long explicitly bidirectional match
{-# LANGUAGE PatternSynonyms #-}
pattern myLeftVariableName `MyInfixPatternMatcher` myRightVariableName <-
[myLongLeftVariableName, myLongRightVariableName] where
MyInfixPatternMatcher x y = [x, x, y]
#test Pattern synonym types
{-# LANGUAGE PatternSynonyms #-}
pattern J :: a -> Maybe a
pattern J x = Just x
#test pattern synonym bidirectional multiple cases
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ViewPatterns #-}
pattern Signed x <- (asSigned -> x) where
Signed (Neg x) = -x
Signed Zero = 0
Signed (Pos x) = x
#test pattern synonym bidirectional multiple cases long
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ViewPatterns #-}
pattern Signed xxxxxxxxxxxxxxxxxxxxxxxx <-
(asSigned -> xxxxxxxxxxxxxxxxxxxxxxxx) where
Signed (Neg x) = -x
Signed Zero = 0
Signed (Pos x) = x
#test pattern synonym bidirectional multiple cases with comments
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ViewPatterns #-}
pattern Signed x <- (asSigned -> x) where
Signed (Neg x) = -x -- negative comment
Signed Zero = 0 -- zero comment
Signed (Pos x) = x -- positive comment
#test Pattern synonym types multiple names
{-# LANGUAGE PatternSynonyms #-}
pattern J, K :: a -> Maybe a
#test Pattern synonym type sig wrapped
{-# LANGUAGE PatternSynonyms #-}
pattern LongMatcher
:: longlongtypevar
-> longlongtypevar
-> longlongtypevar
-> Maybe [longlongtypevar]
pattern LongMatcher x y z = Just [x, y, z]
#group extensions/patternsynonyms+explicitnamespaces
#test explicitnamespaces_patternsynonyms export
{-# LANGUAGE ExplicitNamespaces #-}
{-# LANGUAGE PatternSynonyms #-}
module Test (type (++), (++), pattern Foo) where
#test explicitnamespaces_patternsynonyms import
{-# LANGUAGE ExplicitNamespaces #-}
{-# LANGUAGE PatternSynonyms #-}
import Test ( type (++)
, (++)
, pattern (:.)
, pattern Foo
)

View File

@ -1,34 +0,0 @@
#group extensions/quasiquotes
#test quasi-quotes simple 1
{-# LANGUAGE QuasiQuotes #-}
func = [blub|
asd
qwe
|]
#test quasi-quotes simple 2
{-# LANGUAGE QuasiQuotes #-}
func = [blub|
asd
qwe|]
#test quasi-quotes ignoring layouting
{-# LANGUAGE QuasiQuotes #-}
func = do
let body = [json|
hello
|]
pure True
#test quasi-quotes ignoring layouting, strict mode
-- brittany { lconfig_allowHangingQuasiQuotes: False }
{-# LANGUAGE QuasiQuotes #-}
func = do
let
body =
[json|
hello
|]
pure True

View File

@ -1,17 +0,0 @@
#group extensions/recursivedo
#test recursivedo 1
{-# LANGUAGE RecursiveDo #-}
foo = do
rec a <- f b
b <- g a
return (a, b)
#test recursivedo 2
{-# LANGUAGE RecursiveDo #-}
foo = do
rec -- comment
a <- f b
b <- g a
return (a, b)

View File

@ -1,14 +0,0 @@
#group extensions/unboxedtuples
#test unboxed-tuple and vanilla names
{-# LANGUAGE UnboxedTuples #-}
spanKey :: (# Int, Int #) -> (# Int, Int #)
spanKey = case foo of
(# bar, baz #) -> (# baz, bar #)
#test unboxed-tuple and hashed name
{-# LANGUAGE MagicHash, UnboxedTuples #-}
spanKey :: (# Int#, Int# #) -> (# Int#, Int# #)
spanKey = case foo of
(# bar#, baz# #) -> (# baz# +# bar#, bar# #)

View File

@ -1,45 +0,0 @@
#group feature/import-merging
#golden merge imports down to constructor-level
import Data.Bool ( Bool(True) )
import Data.Bool ( Bool(False) )
#expected
import Data.Bool ( Bool(False, True) )
#golden wildcard trumps explicit+hiding
import Data.Map ( Map )
import Data.Map
import Data.Map hiding ( toList )
#expected
import Data.Map
#golden explicit+hiding do not merge for now
import Data.Map ( Map )
import Data.Map hiding ( toList )
#expected
import Data.Map ( Map )
import Data.Map hiding ( toList )
#golden hiding+hiding do not merge for now
import Data.Map hiding ( toList )
import Data.Map hiding ( fromList )
#expected
import Data.Map hiding ( toList )
import Data.Map hiding ( fromList )
#golden qualified and qualified-as merge but separately
import qualified Data.Map ( toList )
import qualified Data.Map ( fromList )
import qualified Data.Map as M
( Map )
import qualified Data.Map as M
( take )
#expected
import qualified Data.Map ( fromList
, toList
)
import qualified Data.Map as M
( Map
, take
)

View File

@ -1,31 +0,0 @@
#group feature/minimize-parens
#golden minimize parens basic test
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = func (abc) (def)
#expected
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = func abc def
#test minimize parens test that it keep necessary parens
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = func (abc False) ("asd" ++ "def")
#golden minimize nested parens 1
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = func ((((((((nested))))))))
#expected
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = func nested
#golden minimize nested parens 2
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = func ((((((((nested + expression))))))))
#expected
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = func (nested + expression)
#test does not remove parens on InfixN
-- brittany { lconfig_operatorParenthesisRefactorMode: PRMMinimize }
func = (a == Foo) == (b == Bar)

View File

@ -1,27 +0,0 @@
#group other/whitespace-newlines
#test module-import-newlines
module Main where
import Prelude
firstDecl = True
#test function-where-newlines
func = do
-- complex first step
aaa
-- complex second step
bbb
where
helper :: Helper
helper = helpful
other :: Other
other = True

File diff suppressed because it is too large Load Diff

View File

@ -1,35 +0,0 @@
###############################################################################
###############################################################################
###############################################################################
#group pending
###############################################################################
###############################################################################
###############################################################################
## this testcase is not about idempotency, but about _how_ the output differs
## from the input; i cannot really express this yet with the current
## test-suite.
## #test ayaz
##
## myManageHook =
## composeOne [isFullscreen -?> doFullFloat, isDialog -?> doFloat, transience]
## <+> composeAll
## [ className =? "Pidgin" --> doFloat
## , className =? "XCalc" --> doFloat
## -- plan9port's acme
## , className =? "acme" --> doFloat
## -- Acme with Vi bindings editor
## , title =? "ED" --> doFloat
## , title =? "wlc-x11" --> doFloat
## , className =? "Skype" --> doFloat
## , className =? "ffplay" --> doFloat
## , className =? "mpv" --> doFloat
## , className =? "Plugin-container" --> doFloat -- Firefox flash, etc.
## -- Firefox works well tiled, but it has dialog windows we want to float.
## , appName =? "Browser" --> doFloat
## ]
## where
## role = stringProperty "WM_WINDOW_ROLE"

File diff suppressed because it is too large Load Diff

View File

@ -1,43 +0,0 @@
###############################################################################
###############################################################################
###############################################################################
#group indent-policy-multiple
###############################################################################
###############################################################################
###############################################################################
#test long
-- brittany { lconfig_indentAmount: 4, lconfig_indentPolicy: IndentPolicyMultiple }
func =
mweroiuxlskdfjlksjdflkjsdfljksldkjflkjsdflkj
+ mweroiuxlskdfjlksjdflkjsdfljksldkjflkjsdflkj
#test let indAmount=4
-- brittany { lconfig_indentAmount: 4, lconfig_indentPolicy: IndentPolicyMultiple }
foo = do
let aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
foo
#test let indAmount=8
-- brittany { lconfig_indentAmount: 8, lconfig_indentPolicy: IndentPolicyMultiple }
foo = do
let aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
foo
foo = do
let aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
foo
#test nested do-block
-- brittany { lconfig_indentAmount: 4, lconfig_indentPolicy: IndentPolicyMultiple }
foo =
asdyf8asdf
"ajsdfas"
[ asjdf asyhf $ do
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
]

1
data/Test1.hs Normal file
View File

@ -0,0 +1 @@
func :: a -> a

3
data/Test10.hs Normal file
View File

@ -0,0 +1,3 @@
func
:: lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> (lakjsdlkjasldkj -> lakjsdlkjasldkj)

1
data/Test100.hs Normal file
View File

@ -0,0 +1 @@
func = klajsdas klajsdas klajsdas

3
data/Test101.hs Normal file
View File

@ -0,0 +1,3 @@
func = lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd

3
data/Test102.hs Normal file
View File

@ -0,0 +1,3 @@
func = lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd lakjsdlajsdljas
lakjsdlajsdljas
lakjsdlajsdljas

1
data/Test103.hs Normal file
View File

@ -0,0 +1 @@
func = (1 +)

1
data/Test104.hs Normal file
View File

@ -0,0 +1 @@
func = (+ 1)

1
data/Test105.hs Normal file
View File

@ -0,0 +1 @@
func = (1 `abc`)

1
data/Test106.hs Normal file
View File

@ -0,0 +1 @@
func = (`abc` 1)

1
data/Test107.hs Normal file
View File

@ -0,0 +1 @@
func = (abc, def)

1
data/Test108.hs Normal file
View File

@ -0,0 +1 @@
func = (abc, )

1
data/Test109.hs Normal file
View File

@ -0,0 +1 @@
func = (, abc)

3
data/Test11.hs Normal file
View File

@ -0,0 +1,3 @@
func
:: (lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd -> lakjsdlkjasldkj)
-> lakjsdlkjasldkj

6
data/Test110.hs Normal file
View File

@ -0,0 +1,6 @@
myTupleSection =
( verylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargefirstelement
,
, verylaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaargethirdelement
,
)

4
data/Test111.hs Normal file
View File

@ -0,0 +1,4 @@
func =
( lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
, lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
)

6
data/Test112.hs Normal file
View File

@ -0,0 +1,6 @@
foo = if True
then
-- iiiiii
"a "
else
"b "

5
data/Test113.hs Normal file
View File

@ -0,0 +1,5 @@
func = if cond
then pure 42
else do
-- test
abc

3
data/Test114.hs Normal file
View File

@ -0,0 +1,3 @@
func = case x of
False -> False
True -> True

7
data/Test115.hs Normal file
View File

@ -0,0 +1,7 @@
func =
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of
False -> False
True -> True

7
data/Test116.hs Normal file
View File

@ -0,0 +1,7 @@
func = do
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of
False -> False
True -> True

1
data/Test117.hs Normal file
View File

@ -0,0 +1 @@
func = case x of {}

5
data/Test118.hs Normal file
View File

@ -0,0 +1,5 @@
func =
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of {}

5
data/Test119.hs Normal file
View File

@ -0,0 +1,5 @@
func = do
case
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
lakjsdlajsdljasdlkjasldjasldjasldjalsdjlaskjd
of {}

5
data/Test12.hs Normal file
View File

@ -0,0 +1,5 @@
func
:: ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
-> lakjsdlkjasldkj

3
data/Test120.hs Normal file
View File

@ -0,0 +1,3 @@
func = do
stmt
stmt

3
data/Test121.hs Normal file
View File

@ -0,0 +1,3 @@
func = do
x <- stmt
stmt x

3
data/Test122.hs Normal file
View File

@ -0,0 +1,3 @@
func = do
let x = 13
stmt x

7
data/Test123.hs Normal file
View File

@ -0,0 +1,7 @@
func =
foooooo
$ [ case
foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
of
_ -> True
]

4
data/Test124.hs Normal file
View File

@ -0,0 +1,4 @@
testMethod foo bar baz qux =
let x = undefined foo bar baz qux qux baz bar :: String
-- some comment explaining the in expression
in undefined foo x :: String

4
data/Test125.hs Normal file
View File

@ -0,0 +1,4 @@
testMethod foo bar baz qux =
let x = undefined :: String
-- some comment explaining the in expression
in undefined :: String

3
data/Test126.hs Normal file
View File

@ -0,0 +1,3 @@
testMethod foo bar baz qux =
-- some comment explaining the in expression
let x = undefined :: String in undefined :: String

6
data/Test127.hs Normal file
View File

@ -0,0 +1,6 @@
foo foo bar baz qux =
let a = 1
b = 2
c = 3
-- some comment explaining the in expression
in undefined :: String

6
data/Test128.hs Normal file
View File

@ -0,0 +1,6 @@
func =
foo
$ [ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
]
++ [ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]

1
data/Test129.hs Normal file
View File

@ -0,0 +1 @@
module Main where

5
data/Test13.hs Normal file
View File

@ -0,0 +1,5 @@
func
:: ( ( lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
-> lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
)
)

1
data/Test130.hs Normal file
View File

@ -0,0 +1 @@
module Main () where

1
data/Test131.hs Normal file
View File

@ -0,0 +1 @@
module Main (main) where

1
data/Test132.hs Normal file
View File

@ -0,0 +1 @@
module Main (main, test1, test2) where

12
data/Test133.hs Normal file
View File

@ -0,0 +1,12 @@
module Main
( main
, test1
, test2
, test3
, test4
, test5
, test6
, test7
, test8
, test9
) where

12
data/Test134.hs Normal file
View File

@ -0,0 +1,12 @@
module Main
( main
-- main
, test1
, test2
-- Test 3
, test3
, test4
-- Test 5
, test5
-- Test 6
) where

1
data/Test135.hs Normal file
View File

@ -0,0 +1 @@
module Main (Test(..)) where

1
data/Test136.hs Normal file
View File

@ -0,0 +1 @@
module Main (module Main) where

1
data/Test137.hs Normal file
View File

@ -0,0 +1 @@
module Main (Test(Test, a, b)) where

6
data/Test138.hs Normal file
View File

@ -0,0 +1,6 @@
-- comment1
module Main
( Test(Test, a, b)
, foo -- comment2
) -- comment3
where

1
data/Test139.hs Normal file
View File

@ -0,0 +1 @@
module Main (Test()) where

1
data/Test14.hs Normal file
View File

@ -0,0 +1 @@
func :: asd -> Either a b

1
data/Test140.hs Normal file
View File

@ -0,0 +1 @@
-- Intentionally left empty

1
data/Test141.hs Normal file
View File

@ -0,0 +1 @@
import Data.List

1
data/Test142.hs Normal file
View File

@ -0,0 +1 @@
import Data.List as L

1
data/Test143.hs Normal file
View File

@ -0,0 +1 @@
import qualified Data.List

1
data/Test144.hs Normal file
View File

@ -0,0 +1 @@
import qualified Data.List as L

1
data/Test145.hs Normal file
View File

@ -0,0 +1 @@
import safe Data.List as L

1
data/Test146.hs Normal file
View File

@ -0,0 +1 @@
import {-# SOURCE #-} Data.List ( )

1
data/Test147.hs Normal file
View File

@ -0,0 +1 @@
import safe qualified Data.List

1
data/Test148.hs Normal file
View File

@ -0,0 +1 @@
import {-# SOURCE #-} safe qualified Data.List

1
data/Test149.hs Normal file
View File

@ -0,0 +1 @@
import qualified "base" Data.List

5
data/Test15.hs Normal file
View File

@ -0,0 +1,5 @@
func
:: asd
-> Either
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd
lkasdlkjalsdjlakjsdlkjasldkjalskdjlkajsd

3
data/Test150.hs Normal file
View File

@ -0,0 +1,3 @@
import {-# SOURCE #-} safe qualified "base" Data.List as L
import {-# SOURCE #-} safe qualified "base" Data.List ( )
import {-# SOURCE #-} safe qualified Data.List hiding ( )

1
data/Test151.hs Normal file
View File

@ -0,0 +1 @@
import qualified Data.List ( )

1
data/Test152.hs Normal file
View File

@ -0,0 +1 @@
import Data.List ( nub )

4
data/Test153.hs Normal file
View File

@ -0,0 +1,4 @@
import Data.List ( foldl'
, indexElem
, nub
)

14
data/Test154.hs Normal file
View File

@ -0,0 +1,14 @@
import Test ( Long
, anymore
, fit
, items
, line
, list
, not
, onA
, quite
, single
, that
, will
, with
)

11
data/Test155.hs Normal file
View File

@ -0,0 +1,11 @@
import Test ( (+)
, (:!)(..)
, (:*)((:.), T7, t7)
, (:.)
, T
, T2()
, T3(..)
, T4(T4)
, T5(T5, t5)
, T6((<|>))
)

3
data/Test156.hs Normal file
View File

@ -0,0 +1,3 @@
import Test hiding ( )
import Test as T
hiding ( )

13
data/Test157.hs Normal file
View File

@ -0,0 +1,13 @@
import Prelude as X
hiding ( head
, init
, last
, maximum
, minimum
, pred
, read
, readFile
, succ
, tail
, undefined
)

Some files were not shown because too many files have changed in this diff Show More