Skip to content

Commit 329e4fb

Browse files
committed
Handle ghc exception
1 parent 4e82134 commit 329e4fb

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

ghcide/src/Development/IDE/Core/Actions.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ getAtPoint file pos = runMaybeT $ do
6262
env <- hscEnv . fst <$> useE GhcSession file
6363
dkMap <- lift $ maybe (DKMap mempty mempty) fst <$> runMaybeT (useE GetDocMap file)
6464
void $ useE TypeCheck file
65-
(hi, _) <- useE GetModIface file
65+
hi <- fst <$> useE GetModIface file
6666

6767
!pos' <- MaybeT (return $ fromCurrentPosition mapping pos)
6868

ghcide/src/Development/IDE/GHC/Compat/Core.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,8 @@ module Development.IDE.GHC.Compat.Core (
345345
module GHC.Core.Unify,
346346
module GHC.Core.Utils,
347347

348+
module GHC.Data.Bag,
349+
348350
module GHC.HsToCore.Docs,
349351
module GHC.HsToCore.Expr,
350352
module GHC.HsToCore.Monad,
@@ -394,6 +396,7 @@ module Development.IDE.GHC.Compat.Core (
394396
module GHC.Unit.Module,
395397
module GHC.Utils.Error,
396398
#else
399+
module Bag,
397400
module BasicTypes,
398401
module Class,
399402
#if MIN_VERSION_ghc(8,10,0)
@@ -484,8 +487,8 @@ import qualified GHC.Core.DataCon as DataCon
484487
import GHC.Core.FamInstEnv hiding (pprFamInst)
485488
import GHC.Core.InstEnv
486489
import GHC.Types.Unique.FM
487-
#if MIN_VERSION_ghc(9,2,0)
488490
import GHC.Data.Bag
491+
#if MIN_VERSION_ghc(9,2,0)
489492
import GHC.Core.Multiplicity (scaledThing)
490493
#else
491494
import GHC.Core.Ppr.TyThing hiding (pprFamInst)
@@ -628,6 +631,7 @@ import qualified GHC.Utils.Panic.Plain as Plain
628631
#else
629632
import qualified Avail
630633
import BasicTypes hiding (Version)
634+
import Bag
631635
import Class
632636
import CmdLineParser (Warn (..))
633637
import ConLike

ghcide/src/Development/IDE/Spans/AtPoint.hs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,23 +221,28 @@ fixityAtPoint (HAR _ hf _ _ _) hi env pos = fmap listToMaybe $ sequence $ pointC
221221
then fmap (\fixities -> (Just range, [toHoverContent fixities])) (getFixityFromEnv names)
222222
else pure (Just range, [toHoverContent fixities])
223223

224+
-- For local defined fixities
224225
getFixityFromModIface :: [Name] -> [(Name, Fixity)]
225226
getFixityFromModIface names =
226227
let iface = hirModIface hi
227228
fixities = filter (\(_, fixity) -> fixity /= defaultFixity)
228229
$ map (\name -> (name, mi_fix iface (nameOccName name))) names
229230
in fixities
230231

232+
-- For extern defined fixities
231233
getFixityFromEnv :: [Name] -> IO [(Name, Fixity)]
232234
getFixityFromEnv names = do
233235
liftIO
234-
$ fmap (filter ((/= defaultFixity) . snd) . mapMaybe cond)
236+
$ fmap (filter ((/= defaultFixity) . snd) . mapMaybe pickFixity)
235237
$ forM names $ \name ->
236-
(\(_, fixity) -> (name, fixity)) <$> runTcInteractive env (lookupFixityRn name)
238+
(\(_, fixity) -> (name, fixity))
239+
<$> Util.handleGhcException
240+
(const $ pure ((emptyBag, emptyBag), Nothing))
241+
(runTcInteractive env (lookupFixityRn name))
237242
where
238-
cond :: (Name, Maybe Fixity) -> Maybe (Name, Fixity)
239-
cond (_, Nothing) = Nothing
240-
cond (name, Just f) = Just (name, f)
243+
pickFixity :: (Name, Maybe Fixity) -> Maybe (Name, Fixity)
244+
pickFixity (_, Nothing) = Nothing
245+
pickFixity (name, Just f) = Just (name, f)
241246

242247
toHoverContent [] = ""
243248
toHoverContent fixities =

0 commit comments

Comments
 (0)