Improvements to ":help" for nominal types/constructors

Fixes #1605
This commit is contained in:
Iavor Diatchki 2024-01-31 10:02:56 -08:00
parent 0c88cc328d
commit e47ebcbc8a
2 changed files with 17 additions and 17 deletions

View File

@ -244,16 +244,17 @@ showTypeHelp ctxparams env nameEnv name =
fromNominal = fromNominal =
do nt <- Map.lookup name (M.ifNominalTypes env) do nt <- Map.lookup name (M.ifNominalTypes env)
let decl = pp nt $$ let kw = case T.ntDef nt of
vcat T.Struct {} -> "newtype"
[ pp x <+> text ":" <+> pp t T.Enum {} -> "enum"
| case T.ntDef nt of let decl =
T.Struct {} -> False vcat
-- Don't show constructor, as it will be shown [ kw <+> pp (T.ntName nt) <.> ":" <+> pp (T.kindOf nt)
-- separately , ""
_ -> True , "Constructors:" <+>
, (x,t) <- T.nominalTypeConTypes nt commaSep
] (map (pp . fst) (T.nominalTypeConTypes nt))
]
return $ doShowTyHelp nameEnv decl (T.ntDoc nt) return $ doShowTyHelp nameEnv decl (T.ntDoc nt)
fromPrimType = fromPrimType =
@ -312,8 +313,8 @@ showConHelp env nameEnv qname name =
where where
getDocs nt = getDocs nt =
case T.ntDef nt of case T.ntDef nt of
T.Struct {} -> [ T.ntDoc nt ] T.Struct {} -> [ Nothing ]
T.Enum cs -> map T.ecDoc cs T.Enum cs -> map (Just . T.ecDoc) cs
addCons nt mp = foldr (addCon nt) mp addCons nt mp = foldr (addCon nt) mp
(zip (T.nominalTypeConTypes nt) (getDocs nt)) (zip (T.nominalTypeConTypes nt) (getDocs nt))
@ -323,7 +324,7 @@ showConHelp env nameEnv qname name =
[ "Constructor of" <+> pp (T.ntName nt) [ "Constructor of" <+> pp (T.ntName nt)
, indent 4 $ hsep [ pp qname, ":", pp t ] , indent 4 $ hsep [ pp qname, ":", pp t ]
]) ])
doShowDocString d maybe (pure ()) doShowDocString d
showValHelp :: showValHelp ::

View File

@ -2,10 +2,9 @@ Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
enum E1 enum E1: *
A : E1
B : E1 Constructors: A, B, C
C : E1
Custom docs fo E1 Custom docs fo E1