Fix promoted HsTyVars on ghc-8.2.1
This fix does not work on ghc-8.0, because I do not understand the 8.0 API in this instance. Could be resolved by looking at annotations, but that really should not be necessary.pull/75/head
parent
7d7ec3e8b4
commit
f86665a251
|
@ -465,3 +465,15 @@ v = A {..} where b = 2
|
||||||
{-# LANGUAGE RecordWildCards #-}
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
v = A {a = 1, b = 2, c = 3}
|
v = A {a = 1, b = 2, c = 3}
|
||||||
|
|
||||||
|
#test issue 63 a
|
||||||
|
#pending fix does not work on 8.0.2
|
||||||
|
test :: Proxy 'Int
|
||||||
|
|
||||||
|
#test issue 63 b
|
||||||
|
#pending fix does not work on 8.0.2
|
||||||
|
test :: Proxy '[ 'True]
|
||||||
|
|
||||||
|
#test issue 63 c
|
||||||
|
#pending fix does not work on 8.0.2
|
||||||
|
test :: Proxy '[Bool]
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ module Language.Haskell.Brittany.Internal.LayouterBasics
|
||||||
, appSep
|
, appSep
|
||||||
, docCommaSep
|
, docCommaSep
|
||||||
, docParenLSep
|
, docParenLSep
|
||||||
|
, docTick
|
||||||
, spacifyDocs
|
, spacifyDocs
|
||||||
, briDocMToPPM
|
, briDocMToPPM
|
||||||
, allocateNode
|
, allocateNode
|
||||||
|
@ -447,6 +448,9 @@ docCommaSep = appSep $ docLit $ Text.pack ","
|
||||||
docParenLSep :: ToBriDocM BriDocNumbered
|
docParenLSep :: ToBriDocM BriDocNumbered
|
||||||
docParenLSep = appSep $ docLit $ Text.pack "("
|
docParenLSep = appSep $ docLit $ Text.pack "("
|
||||||
|
|
||||||
|
docTick :: ToBriDocM BriDocNumbered
|
||||||
|
docTick = docLit $ Text.pack "'"
|
||||||
|
|
||||||
docNodeAnnKW
|
docNodeAnnKW
|
||||||
:: Data.Data.Data ast
|
:: Data.Data.Data ast
|
||||||
=> Located ast
|
=> Located ast
|
||||||
|
|
|
@ -29,12 +29,20 @@ layoutType :: ToBriDoc HsType
|
||||||
layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of
|
layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of
|
||||||
-- _ | traceShow (ExactPrint.Types.mkAnnKey ltype) False -> error "impossible"
|
-- _ | traceShow (ExactPrint.Types.mkAnnKey ltype) False -> error "impossible"
|
||||||
#if MIN_VERSION_ghc(8,2,0) /* ghc-8.2 */
|
#if MIN_VERSION_ghc(8,2,0) /* ghc-8.2 */
|
||||||
HsTyVar _ name -> do
|
HsTyVar promoted name -> do
|
||||||
|
t <- lrdrNameToTextAnn name
|
||||||
|
case promoted of
|
||||||
|
Promoted -> docSeq
|
||||||
|
[ docSeparator
|
||||||
|
, docTick
|
||||||
|
, docWrapNode name $ docLit t
|
||||||
|
]
|
||||||
|
NotPromoted -> docWrapNode name $ docLit t
|
||||||
#else /* ghc-8.0 */
|
#else /* ghc-8.0 */
|
||||||
HsTyVar name -> do
|
HsTyVar name -> do
|
||||||
#endif
|
|
||||||
t <- lrdrNameToTextAnn name
|
t <- lrdrNameToTextAnn name
|
||||||
docWrapNode name $ docLit t
|
docWrapNode name $ docLit t
|
||||||
|
#endif
|
||||||
HsForAllTy bndrs (L _ (HsQualTy (L _ cntxts@(_:_)) typ2)) -> do
|
HsForAllTy bndrs (L _ (HsQualTy (L _ cntxts@(_:_)) typ2)) -> do
|
||||||
typeDoc <- docSharedWrapper layoutType typ2
|
typeDoc <- docSharedWrapper layoutType typ2
|
||||||
tyVarDocs <- bndrs `forM` \case
|
tyVarDocs <- bndrs `forM` \case
|
||||||
|
@ -294,7 +302,7 @@ layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of
|
||||||
docAlt
|
docAlt
|
||||||
[ docSeq
|
[ docSeq
|
||||||
[ docForceSingleline typeDoc1
|
[ docForceSingleline typeDoc1
|
||||||
, docLit $ Text.pack " "
|
, docSeparator
|
||||||
, docForceSingleline typeDoc2
|
, docForceSingleline typeDoc2
|
||||||
]
|
]
|
||||||
, docPar
|
, docPar
|
||||||
|
@ -324,7 +332,7 @@ layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of
|
||||||
docAlt
|
docAlt
|
||||||
[ docSeq
|
[ docSeq
|
||||||
$ docForceSingleline docHead : (docRest >>= \d ->
|
$ docForceSingleline docHead : (docRest >>= \d ->
|
||||||
[ docLit $ Text.pack " ", docForceSingleline d ])
|
[ docSeparator, docForceSingleline d ])
|
||||||
, docPar docHead (docLines $ docEnsureIndent BrIndentRegular <$> docRest)
|
, docPar docHead (docLines $ docEnsureIndent BrIndentRegular <$> docRest)
|
||||||
]
|
]
|
||||||
HsAppsTy (typHead:typRest) -> do
|
HsAppsTy (typHead:typRest) -> do
|
||||||
|
@ -333,7 +341,7 @@ layoutType ltype@(L _ typ) = docWrapNode ltype $ case typ of
|
||||||
docAlt
|
docAlt
|
||||||
[ docSeq
|
[ docSeq
|
||||||
$ docForceSingleline docHead : (docRest >>= \d ->
|
$ docForceSingleline docHead : (docRest >>= \d ->
|
||||||
[ docLit $ Text.pack " ", docForceSingleline d ])
|
[ docSeparator, docForceSingleline d ])
|
||||||
, docPar docHead (docLines $ docEnsureIndent BrIndentRegular <$> docRest)
|
, docPar docHead (docLines $ docEnsureIndent BrIndentRegular <$> docRest)
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
|
|
Loading…
Reference in New Issue