Merge pull request #105 from eagletmt/datacon-type
Show types of data constructors with "browse -d"
This commit is contained in:
commit
12bb30b097
@ -13,6 +13,7 @@ import TyCon
|
||||
import Type
|
||||
import Types
|
||||
import Var
|
||||
import DataCon (dataConRepType)
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
@ -59,12 +60,16 @@ processModule minfo = mapM processName names
|
||||
inOtherModule nm = getModuleInfo (nameModule nm) >> lookupGlobalName nm
|
||||
|
||||
showThing :: TyThing -> Maybe String
|
||||
showThing (AnId i) = Just $ getOccString i ++ " :: " ++ showOutputable (removeForAlls $ varType i)
|
||||
showThing (AnId i) = Just $ formatType varType i
|
||||
showThing (ADataCon d) = Just $ formatType dataConRepType d
|
||||
showThing (ATyCon t) = unwords . toList <$> tyType t
|
||||
where
|
||||
toList t' = t' : getOccString t : map getOccString (tyConTyVars t)
|
||||
showThing _ = Nothing
|
||||
|
||||
formatType :: NamedThing a => (a -> Type) -> a -> String
|
||||
formatType f x = getOccString x ++ " :: " ++ showOutputable (removeForAlls $ f x)
|
||||
|
||||
tyType :: TyCon -> Maybe String
|
||||
tyType typ
|
||||
| isAlgTyCon typ
|
||||
|
@ -17,3 +17,7 @@ spec = do
|
||||
it "lists up symbols with type info in the module" $ do
|
||||
syms <- lines <$> browseModule defaultOptions { detailed = True } "Data.Either"
|
||||
syms `shouldContain` "either :: (a -> c) -> (b -> c) -> Either a b -> c"
|
||||
|
||||
it "lists up data constructors with type info in the module" $ do
|
||||
syms <- lines <$> browseModule defaultOptions { detailed = True} "Data.Either"
|
||||
syms `shouldContain` "Left :: a -> Either a b"
|
||||
|
Loading…
Reference in New Issue
Block a user