2
2
3
3
-- | Plugin Compat utils.
4
4
module Development.IDE.GHC.Compat.Plugins (
5
+ -- * Plugin Compat Types, and initialisation
5
6
Plugin (.. ),
6
7
defaultPlugin ,
7
8
PluginWithArgs (.. ),
@@ -12,32 +13,58 @@ module Development.IDE.GHC.Compat.Plugins (
12
13
-- * Static plugins
13
14
StaticPlugin (.. ),
14
15
hsc_static_plugins ,
16
+
17
+ -- * Plugin messages
18
+ PsMessages (.. ),
19
+ getPsMessages
15
20
) where
16
21
17
22
#if MIN_VERSION_ghc(9,0,0)
18
23
#if MIN_VERSION_ghc(9,2,0)
19
- import qualified GHC.Driver.Env as Env
24
+ import qualified GHC.Driver.Env as Env
20
25
#endif
21
- import GHC.Driver.Plugins (Plugin (.. ),
22
- PluginWithArgs (.. ),
23
- StaticPlugin (.. ),
24
- defaultPlugin , withPlugins )
26
+ import GHC.Driver.Plugins (Plugin (.. ),
27
+ PluginWithArgs (.. ),
28
+ StaticPlugin (.. ),
29
+ defaultPlugin ,
30
+ withPlugins )
25
31
#if MIN_VERSION_ghc(9,3,0)
26
- import GHC.Driver.Plugins (ParsedResult (.. ),
27
- PsMessages (.. ),
28
- staticPlugins )
32
+ import GHC.Driver.Plugins (ParsedResult (.. ),
33
+ PsMessages (.. ),
34
+ staticPlugins )
35
+ import qualified GHC.Parser.Lexer as Lexer
36
+ #else
37
+ import Data.Bifunctor (bimap )
29
38
#endif
30
- import qualified GHC.Runtime.Loader as Loader
39
+ import qualified GHC.Runtime.Loader as Loader
31
40
#else
32
- import qualified DynamicLoading as Loader
41
+ import qualified DynamicLoading as Loader
33
42
import Plugins
34
43
#endif
35
44
import Development.IDE.GHC.Compat.Core
36
- import Development.IDE.GHC.Compat.Env (hscSetFlags , hsc_dflags )
37
- import Development.IDE.GHC.Compat.Parser as Parser
38
- import Debug.Trace
39
- import GHC.Driver.Env (hsc_plugins )
40
- import GHC.Driver.Plugins
45
+ import Development.IDE.GHC.Compat.Env (hscSetFlags , hsc_dflags )
46
+ import Development.IDE.GHC.Compat.Outputable as Out
47
+ import Development.IDE.GHC.Compat.Parser as Parser
48
+ import Development.IDE.GHC.Compat.Util (Bag )
49
+
50
+
51
+ #if !MIN_VERSION_ghc(9,3,0)
52
+ type PsMessages = (Bag WarnMsg , Bag ErrMsg )
53
+ #endif
54
+
55
+ getPsMessages :: PState -> DynFlags -> PsMessages
56
+ getPsMessages pst dflags =
57
+ #if MIN_VERSION_ghc(9,3,0)
58
+ uncurry PsMessages $ Lexer. getPsMessages pst
59
+ #else
60
+ #if MIN_VERSION_ghc(9,2,0)
61
+ bimap (fmap pprWarning) (fmap pprError) $
62
+ #endif
63
+ getMessages pst
64
+ #if !MIN_VERSION_ghc(9,2,0)
65
+ dflags
66
+ #endif
67
+ #endif
41
68
42
69
applyPluginsParsedResultAction :: HscEnv -> DynFlags -> ModSummary -> Parser. ApiAnns -> ParsedSource -> PsMessages -> IO (ParsedSource , PsMessages )
43
70
applyPluginsParsedResultAction env dflags ms hpm_annotations parsed msgs = do
@@ -46,7 +73,7 @@ applyPluginsParsedResultAction env dflags ms hpm_annotations parsed msgs = do
46
73
#if MIN_VERSION_ghc(9,3,0)
47
74
fmap (\ result -> (hpm_module (parsedResultModule result), (parsedResultMessages result))) $ runHsc env $ withPlugins
48
75
#else
49
- fmap (( , msgs), hpm_module ) $ runHsc env $ withPlugins
76
+ fmap (\ parsed_module -> (hpm_module parsed_module , msgs)) $ runHsc env $ withPlugins
50
77
#endif
51
78
#if MIN_VERSION_ghc(9,3,0)
52
79
(Env. hsc_plugins env)
0 commit comments