diff --git a/plugins/hls-class-plugin/src/Ide/Plugin/Class/Types.hs b/plugins/hls-class-plugin/src/Ide/Plugin/Class/Types.hs index a3f0110544..cebd3a6193 100644 --- a/plugins/hls-class-plugin/src/Ide/Plugin/Class/Types.hs +++ b/plugins/hls-class-plugin/src/Ide/Plugin/Class/Types.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} @@ -5,7 +6,6 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-} -{-# LANGUAGE CPP #-} module Ide.Plugin.Class.Types where diff --git a/plugins/hls-eval-plugin/hls-eval-plugin.cabal b/plugins/hls-eval-plugin/hls-eval-plugin.cabal index 6b35b38365..bb75818286 100644 --- a/plugins/hls-eval-plugin/hls-eval-plugin.cabal +++ b/plugins/hls-eval-plugin/hls-eval-plugin.cabal @@ -36,7 +36,12 @@ source-repository head type: git location: https://github.com/haskell/haskell-language-server +common warnings + ghc-options: + -Wall -Wunused-packages -Wno-name-shadowing -Wno-unticked-promoted-constructors -fno-ignore-asserts + library + import: warnings exposed-modules: Ide.Plugin.Eval Ide.Plugin.Eval.Types @@ -57,18 +62,14 @@ library , base >=4.12 && <5 , bytestring , containers - , data-default , deepseq , Diff ^>=0.4.0 - , directory , dlist , extra , filepath , ghc , ghc-boot-th - , ghc-paths , ghcide == 2.6.0.0 - , hashable , hls-graph , hls-plugin-api == 2.6.0.0 , lens @@ -77,18 +78,11 @@ library , megaparsec >=9.0 , mtl , parser-combinators >=1.2 - , pretty-simple - , QuickCheck - , safe-exceptions , text - , time , transformers , unliftio , unordered-containers - ghc-options: - -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors -fno-ignore-asserts - if flag(pedantic) ghc-options: -Werror @@ -98,6 +92,7 @@ library TypeOperators test-suite tests + import: warnings type: exitcode-stdio-1.0 default-language: Haskell2010 hs-source-dirs: test @@ -107,7 +102,6 @@ test-suite tests , aeson , base , containers - , directory , extra , filepath , hls-eval-plugin diff --git a/plugins/hls-eval-plugin/test/Main.hs b/plugins/hls-eval-plugin/test/Main.hs index 18f718633b..b213d8223f 100644 --- a/plugins/hls-eval-plugin/test/Main.hs +++ b/plugins/hls-eval-plugin/test/Main.hs @@ -8,28 +8,25 @@ module Main ( main ) where -import Control.Lens (_Just, folded, preview, - toListOf, view, (^..)) -import Data.Aeson (Value (Object), fromJSON, - object, toJSON, (.=)) -import Data.Aeson.Types (Pair, Result (Success)) -import Data.List (isInfixOf) -import Data.List.Extra (nubOrdOn) -import qualified Data.Map as Map +import Control.Lens (_Just, folded, preview, view, (^.), + (^..)) +import Data.Aeson (Value (Object), fromJSON, object, + (.=)) +import Data.Aeson.Types (Pair, Result (Success)) +import Data.List (isInfixOf) +import Data.List.Extra (nubOrdOn) +import qualified Data.Map as Map import Data.Row -import qualified Data.Text as T -import Ide.Plugin.Config (Config) -import qualified Ide.Plugin.Config as Plugin -import qualified Ide.Plugin.Eval as Eval -import Ide.Plugin.Eval.Types (EvalParams (..), Section (..), - testOutput) -import Ide.Types (IdePlugins (IdePlugins)) -import Language.LSP.Protocol.Lens (arguments, command, range, - title) -import Language.LSP.Protocol.Message hiding (error) -import System.FilePath ((<.>), ()) +import qualified Data.Text as T +import Ide.Plugin.Config (Config) +import qualified Ide.Plugin.Config as Plugin +import qualified Ide.Plugin.Eval as Eval +import Ide.Plugin.Eval.Types (EvalParams (..), Section (..), + testOutput) +import Language.LSP.Protocol.Lens (command, range, title) +import System.FilePath ((<.>), ()) import Test.Hls -import qualified Test.Hls.FileSystem as FS +import qualified Test.Hls.FileSystem as FS main :: IO () main = defaultTestRunner tests @@ -215,16 +212,17 @@ tests = , testCase "Interfaces are reused after Eval" $ do runSessionWithServerInTmpDir def evalPlugin (mkFs $ FS.directProjectMulti ["TLocalImport.hs", "Util.hs"]) $ do doc <- openDoc "TLocalImport.hs" "haskell" - waitForTypecheck doc + _ <- waitForTypecheck doc lenses <- getCodeLenses doc - let ~cmds@[cmd] = lenses^..folded.command._Just - liftIO $ cmds^..folded.title @?= ["Evaluate..."] + cmd <- liftIO $ case lenses^..folded.command._Just of + [cmd] -> (cmd^.title @?= "Evaluate...") >> pure cmd + cmds -> assertFailure $ "Expected a single command, got " <> show (length cmds) executeCmd cmd -- trigger a rebuild and check that dependency interfaces are not rebuilt changeDoc doc [] - waitForTypecheck doc + _ <- waitForTypecheck doc Right keys <- getLastBuildKeys let ifaceKeys = filter ("GetModIface" `T.isPrefixOf`) keys liftIO $ ifaceKeys @?= []