Skip to content

Commit 561d082

Browse files
committed
refactor: bindToSig just return signature string
1 parent 5fa456d commit 561d082

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

ghcide/src/Development/IDE/Plugin/TypeLenses.hs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ module Development.IDE.Plugin.TypeLenses (
1616

1717
import Control.Concurrent.STM.Stats (atomically)
1818
import Control.DeepSeq (rwhnf)
19-
import Control.Lens (Bifunctor (bimap), (?~),
20-
(^.))
19+
import Control.Lens ((?~), (^.))
2120
import Control.Monad (mzero)
2221
import Control.Monad.Extra (whenMaybe)
2322
import Control.Monad.IO.Class (MonadIO (liftIO))
@@ -268,7 +267,7 @@ data Mode
268267
Always
269268
| -- | similar to 'Always', but only displays for exported global bindings
270269
Exported
271-
| -- | follows error messages produced by GHC
270+
| -- | follows error messages produced by GHC
272271
Diagnostics
273272
deriving (Eq, Ord, Show, Read, Enum)
274273

@@ -323,16 +322,16 @@ rules recorder = do
323322
result <- liftIO $ gblBindingType (hscEnv <$> hsc) (tmrTypechecked <$> tmr)
324323
pure ([], result)
325324

326-
bindToSig :: Id -> HscEnv -> GlobalRdrEnv -> IOEnv (Env TcGblEnv TcLclEnv) (Name, String)
325+
-- | Converts a given haskell bind to its corresponding type signature.
326+
bindToSig :: Id -> HscEnv -> GlobalRdrEnv -> IOEnv (Env TcGblEnv TcLclEnv) String
327327
bindToSig id hsc rdrEnv = do
328328
env <-
329329
#if MIN_VERSION_ghc(9,7,0)
330330
liftZonkM
331331
#endif
332332
tcInitTidyEnv
333-
let name = idName id
334-
(_, ty) = tidyOpenType env (idType id)
335-
pure (name, showDocRdrEnv hsc rdrEnv (pprSigmaType ty))
333+
let (_, ty) = tidyOpenType env (idType id)
334+
pure (showDocRdrEnv hsc rdrEnv (pprSigmaType ty))
336335

337336
gblBindingType :: Maybe HscEnv -> Maybe TcGblEnv -> IO (Maybe GlobalBindingTypeSigsResult)
338337
gblBindingType (Just hsc) (Just gblEnv) = do
@@ -346,8 +345,9 @@ gblBindingType (Just hsc) (Just gblEnv) = do
346345
renderBind id = do
347346
let name = idName id
348347
hasSig name $ do
349-
(name', sig) <- bindToSig id hsc rdrEnv
350-
pure $ GlobalBindingTypeSig name (printName name' <> " :: " <> sig) (name `elemNameSet` exports)
348+
-- convert from bind id to its signature
349+
sig <- bindToSig id hsc rdrEnv
350+
pure $ GlobalBindingTypeSig name (printName name <> " :: " <> sig) (name `elemNameSet` exports)
351351
patToSig p = do
352352
let name = patSynName p
353353
hasSig name
@@ -471,7 +471,8 @@ whereClauseInlayHints state plId (InlayHintParams _ (TextDocumentIdentifier uri)
471471
(_, sig) <- liftIO
472472
$ initTcWithGbl hsc tcGblEnv ghostSpan
473473
$ bindToSig id hsc rdrEnv
474-
pure $ generateWhereInlayHints range (maybe ("", "") (bimap (T.pack . printName) T.pack) sig) offset
474+
let name = idName id
475+
pure $ generateWhereInlayHints range (T.pack $ printName name) (maybe "_" T.pack sig) offset
475476

476477
inlayHints <- sequence
477478
[ bindingToInlayHints bindingId bindingRange offset
@@ -488,8 +489,8 @@ whereClauseInlayHints state plId (InlayHintParams _ (TextDocumentIdentifier uri)
488489

489490
pure $ InL inlayHints
490491
where
491-
generateWhereInlayHints :: Range -> (T.Text, T.Text) -> Int -> InlayHint
492-
generateWhereInlayHints range (name, ty) offset =
492+
generateWhereInlayHints :: Range -> T.Text -> T.Text -> Int -> InlayHint
493+
generateWhereInlayHints range name ty offset =
493494
let edit = makeEdit range (name <> " :: " <> ty) offset
494495
in InlayHint { _textEdits = Just [edit]
495496
, _paddingRight = Nothing

0 commit comments

Comments
 (0)