Compare commits
No commits in common. "5dda978304efff4955583c0cba3287205609eec6" and "e6956e9264ea775bfe7f78450714d9c90b68501f" have entirely different histories.
5dda978304
...
e6956e9264
|
@ -13,7 +13,6 @@ module Language.Haskell.Brittany.Internal.S2_SplitModule
|
|||
import Language.Haskell.Brittany.Internal.Prelude
|
||||
|
||||
import qualified Data.Generics as SYB
|
||||
import qualified Data.List.Extra
|
||||
import qualified Data.Map as Map
|
||||
import qualified GHC
|
||||
import GHC ( AddEpAnn(AddEpAnn)
|
||||
|
@ -92,42 +91,16 @@ extractDeclMap modul =
|
|||
|
||||
splitModuleDecls :: GHC.ParsedSource -> FinalList ModuleElement ExactPrint.Pos
|
||||
splitModuleDecls lmod = do
|
||||
let
|
||||
L moduleSpan modl = lmod
|
||||
HsModule _ _layout _name _exports imports decls _ _ = modl
|
||||
let L moduleSpan modl = lmod
|
||||
HsModule _ _layout _name _exports _imports decls _ _ = modl
|
||||
(hsModAnn', finalComments) = case GHC.hsmodAnn modl of
|
||||
EpAnn a modAnns (EpaCommentsBalanced prior post) ->
|
||||
(EpAnn a modAnns (EpaCommentsBalanced prior []), post)
|
||||
_ -> (GHC.hsmodAnn modl, [])
|
||||
(newImports, commsAfterImports) = case Data.List.Extra.unsnoc imports of
|
||||
Just (allButLast, L (SrcSpanAnn epAnn s@(RealSrcSpan span _)) lastImp) ->
|
||||
case epAnn of
|
||||
EpAnnNotUsed -> (imports, [])
|
||||
EpAnn anch anns (EpaComments cs) ->
|
||||
let
|
||||
(keepImports, moveImports) =
|
||||
partition
|
||||
(\(L cAnch _) ->
|
||||
GHC.srcSpanEndLine (anchor cAnch) <= GHC.srcSpanEndLine span
|
||||
)
|
||||
cs
|
||||
newLastImport =
|
||||
L (SrcSpanAnn (EpAnn anch anns (EpaComments keepImports)) s)
|
||||
lastImp
|
||||
in
|
||||
( allButLast ++ [newLastImport]
|
||||
, List.sortOn (\(L l _) -> l) moveImports
|
||||
)
|
||||
EpAnn anch anns (EpaCommentsBalanced cs1 cs2) ->
|
||||
let newLastImport =
|
||||
L (SrcSpanAnn (EpAnn anch anns (EpaComments cs1)) s) lastImp
|
||||
in (allButLast ++ [newLastImport], List.sortOn (\(L l _) -> l) cs2)
|
||||
_ -> ([], [])
|
||||
moduleWithoutComments = L moduleSpan modl { GHC.hsmodAnn = hsModAnn'
|
||||
, GHC.hsmodDecls = []
|
||||
, GHC.hsmodImports = newImports
|
||||
}
|
||||
spanAfterImports <- do
|
||||
lastSpan <- do
|
||||
finalYield $ MEExactModuleHead moduleWithoutComments
|
||||
pure
|
||||
$ maybe (0, 1) (ExactPrint.ss2posEnd)
|
||||
|
@ -138,14 +111,17 @@ splitModuleDecls lmod = do
|
|||
EpAnnNotUsed -> error "unexpected EpAnnNotUsed"
|
||||
]
|
||||
++ [ s | AddEpAnn _ (EpaSpan s) <- GHC.am_main $ GHC.anns hsModAnn' ]
|
||||
++ [ span
|
||||
| L (SrcSpanAnn _ (RealSrcSpan span _)) _ <- GHC.hsmodImports modl
|
||||
++ [ GHC.anchor a
|
||||
| L da _ <- GHC.hsmodImports modl
|
||||
, L a _ <- case GHC.ann da of
|
||||
EpAnn _ _ (EpaComments l ) -> l
|
||||
EpAnn _ _ (EpaCommentsBalanced _ l) -> l
|
||||
EpAnnNotUsed -> []
|
||||
]
|
||||
++ [ span
|
||||
| L (SrcSpanAnn _ (GHC.RealSrcSpan span _)) _ <- GHC.hsmodImports modl
|
||||
]
|
||||
spanBeforeDecls <- enrichComms spanAfterImports commsAfterImports
|
||||
spanAfterDecls <- enrichDecls spanBeforeDecls decls
|
||||
spanAfterDecls <- enrichDecls lastSpan decls
|
||||
enrichComms spanAfterDecls finalComments
|
||||
|
||||
splitModuleStart
|
||||
|
|
|
@ -494,7 +494,7 @@ createDetailsDoc consNameStr details = case details of
|
|||
]
|
||||
, docSeq
|
||||
[ docHandleComms posOpen $ docLitS "{"
|
||||
, docHandleComms epAnn docSeparator
|
||||
, docSeparator
|
||||
, docSetBaseY $ docAddBaseY BrIndentRegular $ docPar
|
||||
fName1
|
||||
(docSeq [docLitS "::", docSeparator, fType1])
|
||||
|
|
Loading…
Reference in New Issue