Skip to content

Commit a40c194

Browse files
committed
Handle ghc exception
1 parent 4e82134 commit a40c194

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ module Development.IDE.GHC.Compat.Core (
382382
module GHC.Types.Name.Cache,
383383
module GHC.Types.Name.Env,
384384
module GHC.Types.Name.Reader,
385+
module GHC.Utils.Error,
385386
#if MIN_VERSION_ghc(9,2,0)
386387
module GHC.Types.Avail,
387388
module GHC.Types.SourceFile,
@@ -392,7 +393,6 @@ module Development.IDE.GHC.Compat.Core (
392393
module GHC.Types.Unique.Supply,
393394
module GHC.Types.Var,
394395
module GHC.Unit.Module,
395-
module GHC.Utils.Error,
396396
#else
397397
module BasicTypes,
398398
module Class,
@@ -622,7 +622,7 @@ import GHC.Unit.Module.ModIface (IfaceExport, ModIface (..),
622622
import GHC.Unit.Module.ModSummary (ModSummary (..))
623623
#endif
624624
import GHC.Unit.State (ModuleOrigin (..))
625-
import GHC.Utils.Error (Severity (..))
625+
import GHC.Utils.Error (Severity (..), emptyMessages)
626626
import GHC.Utils.Panic hiding (try)
627627
import qualified GHC.Utils.Panic.Plain as Plain
628628
#else

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 (emptyMessages, 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)