Merge branch 'master' of github.com:DanielG/ghc-mod
This commit is contained in:
commit
ab3dccc77c
@ -27,6 +27,7 @@ import Language.Haskell.GhcMod.SrcUtils
|
|||||||
import Language.Haskell.GhcMod.Doc
|
import Language.Haskell.GhcMod.Doc
|
||||||
import Language.Haskell.GhcMod.Logging
|
import Language.Haskell.GhcMod.Logging
|
||||||
import Language.Haskell.GhcMod.Types
|
import Language.Haskell.GhcMod.Types
|
||||||
|
import Language.Haskell.GhcMod.Utils (withMappedFile)
|
||||||
import Language.Haskell.GhcMod.FileMapping (fileModSummaryWithMapping)
|
import Language.Haskell.GhcMod.FileMapping (fileModSummaryWithMapping)
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
@ -57,12 +58,14 @@ splits file lineNo colNo =
|
|||||||
whenFound' oopts (getSrcSpanTypeForSplit modSum lineNo colNo) $ \x -> case x of
|
whenFound' oopts (getSrcSpanTypeForSplit modSum lineNo colNo) $ \x -> case x of
|
||||||
(SplitInfo varName bndLoc (varLoc,varT) _matches) -> do
|
(SplitInfo varName bndLoc (varLoc,varT) _matches) -> do
|
||||||
let varName' = showName dflag style varName -- Convert name to string
|
let varName' = showName dflag style varName -- Convert name to string
|
||||||
t <- genCaseSplitTextFile file (SplitToTextInfo varName' bndLoc varLoc $
|
t <- withMappedFile file $ \file' ->
|
||||||
|
genCaseSplitTextFile file' (SplitToTextInfo varName' bndLoc varLoc $
|
||||||
getTyCons dflag style varName varT)
|
getTyCons dflag style varName varT)
|
||||||
return (fourInts bndLoc, t)
|
return (fourInts bndLoc, t)
|
||||||
(TySplitInfo varName bndLoc (varLoc,varT)) -> do
|
(TySplitInfo varName bndLoc (varLoc,varT)) -> do
|
||||||
let varName' = showName dflag style varName -- Convert name to string
|
let varName' = showName dflag style varName -- Convert name to string
|
||||||
t <- genCaseSplitTextFile file (SplitToTextInfo varName' bndLoc varLoc $
|
t <- withMappedFile file $ \file' ->
|
||||||
|
genCaseSplitTextFile file' (SplitToTextInfo varName' bndLoc varLoc $
|
||||||
getTyCons dflag style varName varT)
|
getTyCons dflag style varName varT)
|
||||||
return (fourInts bndLoc, t)
|
return (fourInts bndLoc, t)
|
||||||
where
|
where
|
||||||
|
@ -75,6 +75,10 @@ import qualified InstEnv
|
|||||||
import qualified Pretty
|
import qualified Pretty
|
||||||
import qualified StringBuffer as SB
|
import qualified StringBuffer as SB
|
||||||
|
|
||||||
|
#if __GLASGOW_HASKELL__ >= 710
|
||||||
|
import CoAxiom (coAxiomTyCon)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if __GLASGOW_HASKELL__ >= 708
|
#if __GLASGOW_HASKELL__ >= 708
|
||||||
import FamInstEnv
|
import FamInstEnv
|
||||||
import ConLike (ConLike(..))
|
import ConLike (ConLike(..))
|
||||||
@ -357,28 +361,44 @@ pprInfo :: (FilePath -> FilePath) -> Bool -> (TyThing, GHC.Fixity, [ClsInst], [F
|
|||||||
pprInfo m _ (thing, fixity, insts, famInsts)
|
pprInfo m _ (thing, fixity, insts, famInsts)
|
||||||
= pprTyThingInContextLoc' thing
|
= pprTyThingInContextLoc' thing
|
||||||
$$ show_fixity fixity
|
$$ show_fixity fixity
|
||||||
$$ InstEnv.pprInstances insts
|
$$ vcat (map pprInstance' insts)
|
||||||
$$ pprFamInsts famInsts
|
$$ vcat (map pprFamInst' famInsts)
|
||||||
#else
|
#else
|
||||||
pprInfo :: (FilePath -> FilePath) -> PrintExplicitForalls -> (TyThing, GHC.Fixity, [ClsInst]) -> SDoc
|
pprInfo :: (FilePath -> FilePath) -> PrintExplicitForalls -> (TyThing, GHC.Fixity, [ClsInst]) -> SDoc
|
||||||
pprInfo m pefas (thing, fixity, insts)
|
pprInfo m pefas (thing, fixity, insts)
|
||||||
= pprTyThingInContextLoc' pefas thing
|
= pprTyThingInContextLoc' pefas thing
|
||||||
$$ show_fixity fixity
|
$$ show_fixity fixity
|
||||||
$$ vcat (map pprInstance insts)
|
$$ vcat (map pprInstance' insts)
|
||||||
#endif
|
#endif
|
||||||
where
|
where
|
||||||
show_fixity fx
|
show_fixity fx
|
||||||
| fx == defaultFixity = Outputable.empty
|
| fx == defaultFixity = Outputable.empty
|
||||||
| otherwise = ppr fx <+> ppr (getName thing)
|
| otherwise = ppr fx <+> ppr (getName thing)
|
||||||
#if __GLASGOW_HASKELL__ >= 708
|
#if __GLASGOW_HASKELL__ >= 708
|
||||||
pprTyThingInContextLoc' thing' = hang (pprTyThingInContext thing') 2
|
pprTyThingInContextLoc' thing' = showWithLoc (pprDefinedAt' thing') (pprTyThingInContext thing')
|
||||||
(char '\t' <> ptext (sLit "--") <+> loc)
|
#if __GLASGOW_HASKELL__ >= 710
|
||||||
where loc = ptext (sLit "Defined") <+> pprNameDefnLoc' (getName thing')
|
pprFamInst' (FamInst { fi_flavor = DataFamilyInst rep_tc })
|
||||||
|
= pprTyThingInContextLoc (ATyCon rep_tc)
|
||||||
|
|
||||||
|
pprFamInst' (FamInst { fi_flavor = SynFamilyInst, fi_axiom = axiom
|
||||||
|
, fi_tys = lhs_tys, fi_rhs = rhs })
|
||||||
|
= showWithLoc (pprDefinedAt' (getName axiom)) $
|
||||||
|
hang (ptext (sLit "type instance") <+> pprTypeApp (coAxiomTyCon axiom) lhs_tys)
|
||||||
|
2 (equals <+> ppr rhs)
|
||||||
#else
|
#else
|
||||||
pprTyThingInContextLoc' pefas' thing' = hang (pprTyThingInContext pefas' thing') 2
|
pprFamInst' ispec = showWithLoc (pprDefinedAt' (getName ispec)) (pprFamInstHdr ispec)
|
||||||
(char '\t' <> ptext (sLit "--") <+> loc)
|
|
||||||
where loc = ptext (sLit "Defined") <+> pprNameDefnLoc' (getName thing')
|
|
||||||
#endif
|
#endif
|
||||||
|
#else
|
||||||
|
pprTyThingInContextLoc' pefas' thing' = showWithLoc (pprDefinedAt' thing') (pprTyThingInContext pefas' thing')
|
||||||
|
#endif
|
||||||
|
showWithLoc loc doc
|
||||||
|
= hang doc 2 (char '\t' <> comment <+> loc)
|
||||||
|
-- The tab tries to make them line up a bit
|
||||||
|
where
|
||||||
|
comment = ptext (sLit "--")
|
||||||
|
pprInstance' ispec = hang (pprInstanceHdr ispec)
|
||||||
|
2 (ptext (sLit "--") <+> pprDefinedAt' (getName ispec))
|
||||||
|
pprDefinedAt' thing' = ptext (sLit "Defined") <+> pprNameDefnLoc' (getName thing')
|
||||||
pprNameDefnLoc' name
|
pprNameDefnLoc' name
|
||||||
= case Name.nameSrcLoc name of
|
= case Name.nameSrcLoc name of
|
||||||
RealSrcLoc s -> ptext (sLit "at") <+> ppr (subst s)
|
RealSrcLoc s -> ptext (sLit "at") <+> ppr (subst s)
|
||||||
|
@ -464,7 +464,7 @@ loadTargets opts targetStrs = do
|
|||||||
HscNothing -> do
|
HscNothing -> do
|
||||||
void $ load LoadAllTargets
|
void $ load LoadAllTargets
|
||||||
forM_ mg $
|
forM_ mg $
|
||||||
handleSourceError (gmLog GmWarning "loadTargets" . text . show)
|
handleSourceError (gmLog GmDebug "loadTargets" . text . show)
|
||||||
. void . (parseModule >=> typecheckModule >=> desugarModule)
|
. void . (parseModule >=> typecheckModule >=> desugarModule)
|
||||||
HscInterpreted -> do
|
HscInterpreted -> do
|
||||||
void $ load LoadAllTargets
|
void $ load LoadAllTargets
|
||||||
|
Loading…
Reference in New Issue
Block a user