Skip to content

Commit 41b4ce0

Browse files
committed
Fix -Wall and -Wunused-packages in stan plugin
1 parent d6553e0 commit 41b4ce0

File tree

3 files changed

+47
-77
lines changed

3 files changed

+47
-77
lines changed

plugins/hls-stan-plugin/hls-stan-plugin.cabal

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ flag pedantic
2525
default: False
2626
manual: True
2727

28+
common warnings
29+
ghc-options: -Wall -Wunused-packages
30+
2831
library
32+
import: warnings
2933
if (impl(ghc > 8.8.1) && impl(ghc <= 9.2.3) || impl(ghc >= 9.4.0) && impl(ghc < 9.10.0))
3034
buildable: True
3135
else
@@ -35,16 +39,13 @@ library
3539
build-depends:
3640
base
3741
, containers
38-
, data-default
3942
, deepseq
4043
, hashable
41-
, hie-compat
4244
, hls-plugin-api
4345
, ghc
4446
, ghcide
4547
, lsp-types
4648
, text
47-
, transformers
4849
, unordered-containers
4950
, stan >= 0.1.2.0
5051
, trial
@@ -61,6 +62,7 @@ library
6162
OverloadedStrings
6263

6364
test-suite test
65+
import: warnings
6466
if (impl(ghc > 8.8.1) && impl(ghc <= 9.2.3) || impl(ghc >= 9.4.0) && impl(ghc < 9.10.0))
6567
buildable: True
6668
else
@@ -71,9 +73,7 @@ test-suite test
7173
main-is: Main.hs
7274
ghc-options: -threaded -rtsopts -with-rtsopts=-N
7375
build-depends:
74-
aeson
7576
, base
76-
, containers
7777
, filepath
7878
, hls-stan-plugin
7979
, hls-plugin-api

plugins/hls-stan-plugin/src/Ide/Plugin/Stan.hs

Lines changed: 42 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -2,68 +2,46 @@
22
{-# LANGUAGE PatternSynonyms #-}
33
module Ide.Plugin.Stan (descriptor, Log) where
44

5-
import Compat.HieTypes (HieASTs, HieFile (..))
6-
import Control.DeepSeq (NFData)
7-
import Control.Monad (void, when)
8-
import Control.Monad.IO.Class (liftIO)
9-
import Control.Monad.Trans.Maybe (MaybeT (MaybeT), runMaybeT)
10-
import Data.Default
11-
import Data.Foldable (toList)
12-
import Data.Hashable (Hashable)
13-
import qualified Data.HashMap.Strict as HM
14-
import Data.HashSet (HashSet)
15-
import qualified Data.HashSet as HS
16-
import qualified Data.Map as Map
17-
import Data.Maybe (fromJust, mapMaybe,
18-
maybeToList)
19-
import Data.String (IsString (fromString))
20-
import qualified Data.Text as T
5+
import Control.DeepSeq (NFData)
6+
import Control.Monad (void)
7+
import Control.Monad.IO.Class (liftIO)
8+
import Data.Foldable (toList)
9+
import Data.Hashable (Hashable)
10+
import qualified Data.HashMap.Strict as HM
11+
import qualified Data.Map as Map
12+
import Data.Maybe (mapMaybe)
13+
import qualified Data.Text as T
2114
import Development.IDE
22-
import Development.IDE.Core.Rules (getHieFile,
23-
getSourceFileSource)
24-
import Development.IDE.Core.RuleTypes (HieAstResult (..))
25-
import qualified Development.IDE.Core.Shake as Shake
26-
import Development.IDE.GHC.Compat (HieASTs (HieASTs),
27-
HieFile (hie_hs_file),
28-
RealSrcSpan (..), mkHieFile',
29-
mkRealSrcLoc, mkRealSrcSpan,
30-
runHsc, srcSpanEndCol,
31-
srcSpanEndLine,
32-
srcSpanStartCol,
33-
srcSpanStartLine, tcg_exports)
34-
import Development.IDE.GHC.Error (realSrcSpanToRange)
35-
import GHC.Generics (Generic)
36-
import Ide.Plugin.Config (PluginConfig (..))
37-
import Ide.Types (PluginDescriptor (..),
38-
PluginId, configHasDiagnostics,
39-
configInitialGenericConfig,
40-
defaultConfigDescriptor,
41-
defaultPluginDescriptor)
42-
import qualified Language.LSP.Protocol.Types as LSP
43-
import Stan (createCabalExtensionsMap,
44-
getStanConfig)
45-
import Stan.Analysis (Analysis (..), runAnalysis)
46-
import Stan.Category (Category (..))
47-
import Stan.Cli (StanArgs (..))
48-
import Stan.Config (Config, ConfigP (..),
49-
applyConfig, defaultConfig)
50-
import Stan.Config.Pretty (ConfigAction, configToTriples,
51-
prettyConfigAction,
52-
prettyConfigCli)
53-
import Stan.Core.Id (Id (..))
54-
import Stan.EnvVars (EnvVars (..), envVarsToText)
55-
import Stan.Inspection (Inspection (..))
56-
import Stan.Inspection.All (inspectionsIds, inspectionsMap)
57-
import Stan.Observation (Observation (..))
58-
import Stan.Report.Settings (OutputSettings (..),
59-
ToggleSolution (..),
60-
Verbosity (..))
61-
import Stan.Toml (usedTomlFiles)
62-
import System.Directory (makeRelativeToCurrentDirectory)
63-
import Trial (Fatality, Trial (..), fiasco,
64-
pattern FiascoL,
65-
pattern ResultL, prettyTrial,
66-
prettyTrialWith)
15+
import Development.IDE.Core.Rules (getHieFile)
16+
import qualified Development.IDE.Core.Shake as Shake
17+
import GHC.Generics (Generic)
18+
import Ide.Plugin.Config (PluginConfig (..))
19+
import Ide.Types (PluginDescriptor (..), PluginId,
20+
configHasDiagnostics,
21+
configInitialGenericConfig,
22+
defaultConfigDescriptor,
23+
defaultPluginDescriptor)
24+
import qualified Language.LSP.Protocol.Types as LSP
25+
import Stan (createCabalExtensionsMap,
26+
getStanConfig)
27+
import Stan.Analysis (Analysis (..), runAnalysis)
28+
import Stan.Category (Category (..))
29+
import Stan.Cli (StanArgs (..))
30+
import Stan.Config (Config, ConfigP (..), applyConfig)
31+
import Stan.Config.Pretty (prettyConfigCli)
32+
import Stan.Core.Id (Id (..))
33+
import Stan.EnvVars (EnvVars (..), envVarsToText)
34+
import Stan.Inspection (Inspection (..))
35+
import Stan.Inspection.All (inspectionsIds, inspectionsMap)
36+
import Stan.Observation (Observation (..))
37+
import Stan.Report.Settings (OutputSettings (..),
38+
ToggleSolution (..),
39+
Verbosity (..))
40+
import Stan.Toml (usedTomlFiles)
41+
import System.Directory (makeRelativeToCurrentDirectory)
42+
import Trial (Fatality, Trial (..), fiasco,
43+
pattern FiascoL, pattern ResultL,
44+
prettyTrial, prettyTrialWith)
6745
descriptor :: Recorder (WithPriority Log) -> PluginId -> PluginDescriptor IdeState
6846
descriptor recorder plId = (defaultPluginDescriptor plId desc)
6947
{ pluginRules = rules recorder plId
@@ -101,12 +79,11 @@ stripModifiers = go ""
10179
Nothing -> txt
10280
Just index -> T.drop (index + 1) txt
10381

104-
renderId :: Id a -> T.Text
105-
renderId (Id t) = "Id = " <> t
82+
10683

10784
instance Pretty Log where
10885
pretty = \case
109-
LogShake log -> pretty log
86+
LogShake msg -> pretty msg
11087
LogWarnConf errs -> "Fiasco encountered when trying to load stan configuration. Using default inspections:"
11188
<> line <> (pretty $ show errs)
11289
LogDebugStanConfigResult fps t -> "Config result using: "
@@ -162,24 +139,21 @@ rules recorder plId = do
162139

163140
-- If envVar is set to 'False', stan will ignore all local and global .stan.toml files
164141
logWith recorder Debug (LogDebugStanEnvVars env)
165-
seTomlFiles <- liftIO $ usedTomlFiles useDefConfig (stanArgsConfigFile stanArgs)
166142

167143
(cabalExtensionsMap, checksMap, confIgnored) <- case configTrial of
168144
FiascoL es -> do
169145
logWith recorder Development.IDE.Warning (LogWarnConf es)
170146
pure (Map.empty,
171147
HM.fromList [(LSP.fromNormalizedFilePath file, inspectionsIds)],
172148
[])
173-
ResultL warnings stanConfig -> do
149+
ResultL _warnings stanConfig -> do
174150
let currentHSAbs = fromNormalizedFilePath file -- hie_hs_file hie
175151
currentHSRel <- liftIO $ makeRelativeToCurrentDirectory currentHSAbs
176152
cabalExtensionsMap <- liftIO $ createCabalExtensionsMap isLoud (stanArgsCabalFilePath stanArgs) [hie]
177153

178154
-- Files (keys) in checksMap need to have an absolute path for the analysis, but applyConfig needs to receive relative
179155
-- filepaths to apply the config, because the toml config has relative paths. Stan itself seems to work only in terms of relative paths.
180156
let checksMap = HM.mapKeys (const currentHSAbs) $ applyConfig [currentHSRel] stanConfig
181-
182-
let analysis = runAnalysis cabalExtensionsMap checksMap (configIgnored stanConfig) [hie]
183157
pure (cabalExtensionsMap, checksMap, configIgnored stanConfig)
184158
let analysis = runAnalysis cabalExtensionsMap checksMap confIgnored [hie]
185159
return (analysisToDiagnostics file analysis, Just ())

plugins/hls-stan-plugin/test/Main.hs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@ module Main
44
where
55

66
import Control.Lens ((^.))
7-
import Control.Monad (void)
8-
import Data.List (find)
9-
import Data.Text (Text)
107
import qualified Data.Text as T
11-
import qualified Data.Text.IO as T
128
import qualified Ide.Plugin.Stan as Stan
139
import Ide.Types
1410
import qualified Language.LSP.Protocol.Lens as L

0 commit comments

Comments
 (0)