Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix layout process for empty let statements #416

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Prev Previous commit
Next Next commit
TypeInType implies PolyKinds
Fixes #412
mpickering committed Aug 10, 2018
commit 0f03d9a22051d44cd19e74c15c027db288c186af
4 changes: 4 additions & 0 deletions src/Language/Haskell/Exts/Extension.hs
Original file line number Diff line number Diff line change
@@ -546,6 +546,8 @@ data KnownExtension =

| UnboxedSums

| TypeInType

deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable)

-- | Certain extensions imply other extensions, and this function
@@ -581,6 +583,8 @@ impliesExts = go
ImpredicativeTypes -> [ExplicitForAll]
PolyKinds -> [KindSignatures]
TypeFamilyDependencies -> [TypeFamilies]
TypeInType -> [PolyKinds, DataKinds, KindSignatures]
TypeOperators -> [ExplicitNamespaces]
-- Deprecations
RecordPuns -> [NamedFieldPuns]
PatternSignatures -> [ScopedTypeVariables]
8 changes: 8 additions & 0 deletions tests/examples/t412.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{-# LANGUAGE TypeInType #-}

module Typeintype
( App ) where

import Data.Kind

data App (f :: k -> *)
1 change: 1 addition & 0 deletions tests/examples/t412.hs.exactprinter.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Match
171 changes: 171 additions & 0 deletions tests/examples/t412.hs.parser.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
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")
(KindFn
SrcSpanInfo
{ srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 22
, srcInfoPoints = [ SrcSpan "tests/examples/t412.hs" 8 18 8 20 ]
}
(KindVar
SrcSpanInfo
{ srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 17
, srcInfoPoints = []
}
(UnQual
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")))
(KindStar
SrcSpanInfo
{ srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 21 8 22
, srcInfoPoints = []
}))))
[]
[]
]
, []
)
1 change: 1 addition & 0 deletions tests/examples/t412.hs.prettyparser.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Match
5 changes: 5 additions & 0 deletions tests/examples/t412.hs.prettyprinter.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{-# LANGUAGE TypeInType #-}
module Typeintype (App) where
import Data.Kind

data App (f :: k -> *)