Skip to content

Commit e62a05e

Browse files
committed
Fix a few more ghc compats
1 parent 1ea186c commit e62a05e

File tree

3 files changed

+114
-93
lines changed

3 files changed

+114
-93
lines changed

ghcide/session-loader/Development/IDE/Session.hs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -532,10 +532,7 @@ cradleToOptsAndLibDir logger cradle file = do
532532
emptyHscEnv :: IORef NameCache -> FilePath -> IO HscEnv
533533
emptyHscEnv nc libDir = do
534534
env <- runGhc (Just libDir) getSession
535-
when (Compat.ghcVersion < Compat.GHC90) $
536-
-- This causes ghc9 to crash with the error:
537-
-- Couldn't find a target code interpreter. Try with -fexternal-interpreter
538-
initDynLinker env
535+
initDynLinker env
539536
pure $ setNameCache nc (hscSetFlags ((hsc_dflags env){useUnicode = True }) env)
540537

541538
data TargetDetails = TargetDetails

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

Lines changed: 110 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,8 @@ module Development.IDE.GHC.Compat.Core (
235235
-- * Linker
236236
Unlinked(..),
237237
Linkable(..),
238-
unload,
239-
#if !MIN_VERSION_ghc(9,2,0)
238+
Linker.unload,
240239
initDynLinker,
241-
#endif
242240
-- * Hooks
243241
Hooks,
244242
runMetaHook,
@@ -311,6 +309,11 @@ module Development.IDE.GHC.Compat.Core (
311309
module GHC.Iface.Syntax,
312310

313311
#if MIN_VERSION_ghc(9,2,0)
312+
module GHC.Hs.Decls,
313+
module GHC.Hs.Extension,
314+
module GHC.Hs.ImpExp,
315+
module GHC.Hs.Pat,
316+
module GHC.Hs.Type,
314317
module Language.Haskell.Syntax.Expr,
315318
#endif
316319

@@ -421,30 +424,31 @@ module Development.IDE.GHC.Compat.Core (
421424
import qualified GHC
422425

423426
#if MIN_VERSION_ghc(9,0,0)
424-
import GHC.Builtin.Names hiding (Unique, printName)
427+
import GHC.Builtin.Names hiding (Unique, printName)
425428
import GHC.Builtin.Types
426429
import GHC.Builtin.Types.Prim
427430
import GHC.Builtin.Utils
428431
import GHC.Core.Class
429432
import GHC.Core.Coercion
430433
import GHC.Core.ConLike
431-
import GHC.Core.DataCon hiding (dataConExTyCoVars)
432-
import qualified GHC.Core.DataCon as DataCon
433-
import GHC.Core.FamInstEnv hiding (pprFamInst)
434+
import GHC.Core.DataCon hiding (dataConExTyCoVars)
435+
import qualified GHC.Core.DataCon as DataCon
436+
import GHC.Core.FamInstEnv hiding (pprFamInst)
434437
import GHC.Core.InstEnv
435438
import GHC.Types.Unique.FM
436439
#if MIN_VERSION_ghc(9,2,0)
437-
import GHC.Core.Multiplicity (scaledThing)
440+
import GHC.Core.Multiplicity (scaledThing)
438441
#else
439-
import GHC.Core.Ppr.TyThing hiding (pprFamInst)
440-
import GHC.Core.TyCo.Rep (scaledThing)
442+
import GHC.Core.Ppr.TyThing hiding (pprFamInst)
443+
import GHC.Core.TyCo.Rep (scaledThing)
441444
#endif
442445
import GHC.Core.PatSyn
443446
import GHC.Core.Predicate
444447
import GHC.Core.TyCo.Ppr
445-
import qualified GHC.Core.TyCo.Rep as TyCoRep
448+
import qualified GHC.Core.TyCo.Rep as TyCoRep
446449
import GHC.Core.TyCon
447-
import GHC.Core.Type hiding (mkInfForAllTys, mkVisFunTys)
450+
import GHC.Core.Type hiding (mkInfForAllTys,
451+
mkVisFunTys)
448452
import GHC.Core.Unify
449453
import GHC.Core.Utils
450454

@@ -456,17 +460,22 @@ import GHC.Driver.Finder
456460
import GHC.Driver.Types
457461
import GHC.Driver.Ways
458462
#endif
459-
import GHC.Driver.CmdLine (Warn (..))
463+
import GHC.Driver.CmdLine (Warn (..))
460464
import GHC.Driver.Hooks
461465
import GHC.Driver.Main
462466
import GHC.Driver.Monad
463467
import GHC.Driver.Phases
464468
import GHC.Driver.Pipeline
465469
import GHC.Driver.Plugins
466-
import GHC.Driver.Session hiding (ExposePackage)
467-
import qualified GHC.Driver.Session as DynFlags
470+
import GHC.Driver.Session hiding (ExposePackage)
471+
import qualified GHC.Driver.Session as DynFlags
468472
#if MIN_VERSION_ghc(9,2,0)
469-
import GHC.Hs (HsParsedModule(..))
473+
import GHC.Hs (HsParsedModule (..))
474+
import GHC.Hs.Decls hiding (FunDep)
475+
import GHC.Hs.Extension
476+
import GHC.Hs.ImpExp
477+
import GHC.Hs.Pat
478+
import GHC.Hs.Type
470479
#endif
471480
#if !MIN_VERSION_ghc(9,2,0)
472481
import GHC.Hs
@@ -475,21 +484,22 @@ import GHC.HsToCore.Docs
475484
import GHC.HsToCore.Expr
476485
import GHC.HsToCore.Monad
477486
import GHC.Iface.Load
478-
import GHC.Iface.Make (mkFullIface, mkIfaceTc,
479-
mkPartialIface)
487+
import GHC.Iface.Make (mkFullIface, mkIfaceTc,
488+
mkPartialIface)
480489
import GHC.Iface.Recomp
481490
import GHC.Iface.Syntax
482491
import GHC.Iface.Tidy
483492
import GHC.IfaceToCore
484493
import GHC.Parser
485-
import GHC.Parser.Header hiding (getImports)
486-
import GHC.Parser.Lexer
494+
import GHC.Parser.Header hiding (getImports)
487495
#if MIN_VERSION_ghc(9,2,0)
488-
import GHC.Linker.Loader
496+
import GHC.Linker.Loader as Linker
489497
import GHC.Linker.Types
498+
import GHC.Parser.Lexer hiding (initParserState)
490499
import GHC.Platform.Ways
491-
import GHC.Runtime.Context (InteractiveImport(..))
500+
import GHC.Runtime.Context (InteractiveImport (..))
492501
#else
502+
import GHC.Parser.Lexer
493503
import GHC.Runtime.Linker
494504
#endif
495505
import GHC.Rename.Names
@@ -498,80 +508,82 @@ import GHC.Runtime.Interpreter
498508
import GHC.Tc.Instance.Family
499509
import GHC.Tc.Module
500510
import GHC.Tc.Types
501-
import GHC.Tc.Types.Evidence hiding ((<.>))
511+
import GHC.Tc.Types.Evidence hiding ((<.>))
502512
import GHC.Tc.Utils.Env
503-
import GHC.Tc.Utils.Monad hiding (Applicative (..), IORef,
504-
MonadFix (..), MonadIO (..), allM,
505-
anyM, concatMapM, mapMaybeM, (<$>))
506-
import GHC.Tc.Utils.TcType as TcType
507-
import qualified GHC.Types.Avail as Avail
513+
import GHC.Tc.Utils.Monad hiding (Applicative (..), IORef,
514+
MonadFix (..), MonadIO (..),
515+
allM, anyM, concatMapM,
516+
mapMaybeM, (<$>))
517+
import GHC.Tc.Utils.TcType as TcType
518+
import qualified GHC.Types.Avail as Avail
508519
#if MIN_VERSION_ghc(9,2,0)
509-
import GHC.Types.Fixity (LexicalFixity(..))
520+
import GHC.Types.Fixity (LexicalFixity (..))
510521
#endif
511522
#if MIN_VERSION_ghc(9,2,0)
512523
import GHC.Types.Meta
513524
#endif
514525
import GHC.Types.Basic
515526
import GHC.Types.Id
516-
import GHC.Types.Name hiding (varName)
527+
import GHC.Types.Name hiding (varName)
517528
import GHC.Types.Name.Cache
518529
import GHC.Types.Name.Env
519530
import GHC.Types.Name.Reader
520531
#if MIN_VERSION_ghc(9,2,0)
521532
import GHC.Types.Name.Set
522-
import GHC.Types.SourceFile (HscSource (..),
523-
SourceModified (..))
533+
import GHC.Types.SourceFile (HscSource (..),
534+
SourceModified (..))
524535
import GHC.Types.SourceText
525-
import GHC.Types.Target (Target(..), TargetId(..))
536+
import GHC.Types.Target (Target (..), TargetId (..))
526537
import GHC.Types.TyThing
527538
import GHC.Types.TyThing.Ppr
528539
#else
529540
import GHC.Types.Name.Set
530541
#endif
531-
import GHC.Types.SrcLoc (BufPos, BufSpan,
532-
SrcLoc (UnhelpfulLoc),
533-
SrcSpan (UnhelpfulSpan))
534-
import qualified GHC.Types.SrcLoc as SrcLoc
542+
import GHC.Types.SrcLoc (BufPos, BufSpan,
543+
SrcLoc (UnhelpfulLoc),
544+
SrcSpan (UnhelpfulSpan))
545+
import qualified GHC.Types.SrcLoc as SrcLoc
535546
import GHC.Types.Unique.Supply
536-
import GHC.Types.Var (Var (varName), setTyVarUnique,
537-
setVarUnique)
547+
import GHC.Types.Var (Var (varName), setTyVarUnique,
548+
setVarUnique)
538549
#if MIN_VERSION_ghc(9,2,0)
539550
import GHC.Unit.Finder
540551
import GHC.Unit.Home.ModInfo
541552
#endif
542-
import GHC.Unit.Info (PackageName (..))
543-
import GHC.Unit.Module hiding (ModLocation (..), UnitId,
544-
addBootSuffixLocnOut, moduleUnit,
545-
toUnitId)
546-
import qualified GHC.Unit.Module as Module
553+
import GHC.Unit.Info (PackageName (..))
554+
import GHC.Unit.Module hiding (ModLocation (..), UnitId,
555+
addBootSuffixLocnOut, moduleUnit,
556+
toUnitId)
557+
import qualified GHC.Unit.Module as Module
547558
#if MIN_VERSION_ghc(9,2,0)
548-
import GHC.Unit.Module.Graph (mkModuleGraph)
559+
import GHC.Unit.Module.Graph (mkModuleGraph)
549560
import GHC.Unit.Module.Imported
550561
import GHC.Unit.Module.ModDetails
551562
import GHC.Unit.Module.ModGuts
552-
import GHC.Unit.Module.ModIface (IfaceExport, ModIface(..), ModIface_(..))
553-
import GHC.Unit.Module.ModSummary (ModSummary(..))
554-
#endif
555-
import GHC.Unit.State (ModuleOrigin (..))
556-
import GHC.Utils.Error (Severity (..))
557-
import GHC.Utils.Panic hiding (try)
558-
import qualified GHC.Utils.Panic.Plain as Plain
563+
import GHC.Unit.Module.ModIface (IfaceExport, ModIface (..),
564+
ModIface_ (..))
565+
import GHC.Unit.Module.ModSummary (ModSummary (..))
566+
#endif
567+
import GHC.Unit.State (ModuleOrigin (..))
568+
import GHC.Utils.Error (Severity (..))
569+
import GHC.Utils.Panic hiding (try)
570+
import qualified GHC.Utils.Panic.Plain as Plain
559571
#else
560572
import qualified Avail
561-
import BasicTypes hiding (Version)
573+
import BasicTypes hiding (Version)
562574
import Class
563-
import CmdLineParser (Warn (..))
575+
import CmdLineParser (Warn (..))
564576
import ConLike
565577
import CoreUtils
566-
import DataCon hiding (dataConExTyCoVars)
578+
import DataCon hiding (dataConExTyCoVars)
567579
import qualified DataCon
568580
import DriverPhases
569581
import DriverPipeline
570582
import DsExpr
571-
import DsMonad hiding (foldrM)
572-
import DynFlags hiding (ExposePackage)
583+
import DsMonad hiding (foldrM)
584+
import DynFlags hiding (ExposePackage)
573585
import qualified DynFlags
574-
import ErrUtils hiding (logInfo, mkWarnMsg)
586+
import ErrUtils hiding (logInfo, mkWarnMsg)
575587
import ExtractDocs
576588
import FamInst
577589
import FamInstEnv
@@ -581,7 +593,7 @@ import GHC.Hs
581593
#endif
582594
import GHCi
583595
import GhcMonad
584-
import HeaderInfo hiding (getImports)
596+
import HeaderInfo hiding (getImports)
585597
import Hooks
586598
import HscMain
587599
import HscTypes
@@ -595,81 +607,83 @@ import HsExtension
595607
import HsImpExp
596608
import HsLit
597609
import HsPat
598-
import HsSyn hiding (wildCardName)
599-
import HsTypes hiding (wildCardName)
610+
import HsSyn hiding (wildCardName)
611+
import HsTypes hiding (wildCardName)
600612
import HsUtils
601613
#endif
602614
import Id
603615
import IfaceSyn
604616
import InstEnv
605-
import Lexer hiding (getSrcLoc)
606-
import Linker
617+
import Lexer hiding (getSrcLoc)
618+
import qualified Linker
607619
import LoadIface
608620
import MkIface
609-
import Module hiding (ModLocation (..), UnitId,
610-
addBootSuffixLocnOut, moduleUnitId)
621+
import Module hiding (ModLocation (..), UnitId,
622+
addBootSuffixLocnOut,
623+
moduleUnitId)
611624
import qualified Module
612-
import Name hiding (varName)
625+
import Name hiding (varName)
613626
import NameCache
614627
import NameEnv
615628
import NameSet
616629
import Packages
617630
#if MIN_VERSION_ghc(8,8,0)
618-
import Panic hiding (try)
619-
import qualified PlainPanic as Plain
631+
import Panic hiding (try)
632+
import qualified PlainPanic as Plain
620633
#else
621-
import Panic hiding (GhcException, try)
622-
import qualified Panic as Plain
634+
import Panic hiding (GhcException, try)
635+
import qualified Panic as Plain
623636
#endif
624637
import Parser
625638
import PatSyn
626639
#if MIN_VERSION_ghc(8,8,0)
627640
import Plugins
628641
#endif
629-
import PprTyThing hiding (pprFamInst)
642+
import PprTyThing hiding (pprFamInst)
630643
import PrelInfo
631-
import PrelNames hiding (Unique, printName)
644+
import PrelNames hiding (Unique, printName)
632645
import RdrName
633646
import RnNames
634647
import RnSplice
635648
import qualified SrcLoc
636649
import TcEnv
637-
import TcEvidence hiding ((<.>))
650+
import TcEvidence hiding ((<.>))
638651
import TcIface
639652
import TcRnDriver
640-
import TcRnMonad hiding (Applicative (..), IORef,
641-
MonadFix (..), MonadIO (..), allM,
642-
anyM, concatMapM, foldrM,
643-
mapMaybeM, (<$>))
653+
import TcRnMonad hiding (Applicative (..), IORef,
654+
MonadFix (..), MonadIO (..),
655+
allM, anyM, concatMapM, foldrM,
656+
mapMaybeM, (<$>))
644657
import TcRnTypes
645-
import TcType hiding (mkVisFunTys)
658+
import TcType hiding (mkVisFunTys)
646659
import qualified TcType
647660
import TidyPgm
648661
import qualified TyCoRep
649662
import TyCon
650-
import Type hiding (mkVisFunTys)
663+
import Type hiding (mkVisFunTys)
651664
import TysPrim
652665
import TysWiredIn
653666
import Unify
654667
import UniqFM
655668
import UniqSupply
656-
import Var (Var (varName), setTyVarUnique,
657-
setVarUnique, varType)
669+
import Var (Var (varName), setTyVarUnique,
670+
setVarUnique, varType)
658671

659672
#if MIN_VERSION_ghc(8,10,0)
660-
import Coercion (coercionKind)
673+
import Coercion (coercionKind)
661674
import Predicate
662-
import SrcLoc (SrcLoc (UnhelpfulLoc),
663-
SrcSpan (UnhelpfulSpan))
675+
import SrcLoc (SrcLoc (UnhelpfulLoc),
676+
SrcSpan (UnhelpfulSpan))
664677
#else
665-
import SrcLoc (RealLocated, SrcLoc (UnhelpfulLoc),
666-
SrcSpan (UnhelpfulSpan))
678+
import SrcLoc (RealLocated,
679+
SrcLoc (UnhelpfulLoc),
680+
SrcSpan (UnhelpfulSpan))
667681
#endif
668682
#endif
669683

670684

671685
#if !MIN_VERSION_ghc(8,8,0)
672-
import Data.List (isSuffixOf)
686+
import Data.List (isSuffixOf)
673687
import System.FilePath
674688
#endif
675689

@@ -883,3 +897,12 @@ type PlainGhcException = Plain.PlainGhcException
883897
#else
884898
type PlainGhcException = Plain.GhcException
885899
#endif
900+
901+
initDynLinker :: HscEnv -> IO ()
902+
initDynLinker =
903+
#if !MIN_VERSION_ghc(9,0,0)
904+
Linker.initDynLinker
905+
#else
906+
-- It errors out in GHC 9.0 and doesn't exist in 9.2
907+
const $ return ()
908+
#endif

0 commit comments

Comments
 (0)