@@ -16,8 +16,7 @@ module Development.IDE.Plugin.TypeLenses (
1616
1717import Control.Concurrent.STM.Stats (atomically )
1818import Control.DeepSeq (rwhnf )
19- import Control.Lens (Bifunctor (bimap ), (?~) ,
20- (^.) )
19+ import Control.Lens ((?~) , (^.) )
2120import Control.Monad (mzero )
2221import Control.Monad.Extra (whenMaybe )
2322import 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
327327bindToSig 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
337336gblBindingType :: Maybe HscEnv -> Maybe TcGblEnv -> IO (Maybe GlobalBindingTypeSigsResult )
338337gblBindingType (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