Skip to content

Commit f90d3aa

Browse files
committed
fix documentation, tests
1 parent 0079903 commit f90d3aa

File tree

4 files changed

+19
-40
lines changed

4 files changed

+19
-40
lines changed

plugins/hls-cabal-project-plugin/src/Ide/Plugin/CabalProject/Diagnostics.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@ import Language.LSP.Protocol.Types (Diagnostic (..),
2424
NormalizedFilePath,
2525
fromNormalizedFilePath)
2626

27-
-- | Produce a diagnostic for a fatal Cabal Project parser error.
27+
-- | Produce a diagnostic for a fatal cabal.project parser error.
2828
fatalParseErrorDiagnostic :: NormalizedFilePath -> T.Text -> FileDiagnostic
2929
fatalParseErrorDiagnostic fp msg =
3030
mkDiag fp "cabal-project" DiagnosticSeverity_Error (toBeginningOfNextLine Syntax.zeroPos) msg
3131

32-
-- | Produce a diagnostic from a Cabal Project parser error
32+
-- | Produce a diagnostic from a cabal.project parser error
3333
errorDiagnostic :: NormalizedFilePath -> Syntax.PError -> FileDiagnostic
3434
errorDiagnostic fp err@(Syntax.PError pos _) =
3535
mkDiag fp "cabal-project" DiagnosticSeverity_Error (toBeginningOfNextLine pos) msg
3636
where
3737
msg = T.pack $ showPError (fromNormalizedFilePath fp) err
3838

39-
-- | Produce a diagnostic from a Cabal Project parser warning
39+
-- | Produce a diagnostic from a cabal.project parser warning
4040
warningDiagnostic :: NormalizedFilePath -> Syntax.PWarning -> FileDiagnostic
4141
warningDiagnostic fp warning@(Syntax.PWarning _ pos _) =
4242
mkDiag fp "cabal-project" DiagnosticSeverity_Warning (toBeginningOfNextLine pos) msg

plugins/hls-cabal-project-plugin/src/Ide/Plugin/CabalProject/Parse.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import qualified Data.ByteString.Base16 as B16
1111
import qualified Data.ByteString.Char8 as B
1212
import Data.List.NonEmpty (NonEmpty (..))
1313
import qualified Data.List.NonEmpty as NE
14-
import qualified Data.Text as T
1514
import Development.IDE
1615
import Distribution.Client.HttpUtils (configureTransport)
1716
import Distribution.Client.ProjectConfig.Parsec (ProjectConfigSkeleton,
@@ -31,6 +30,7 @@ import System.Directory.Extra (XdgDirectory (..),
3130
import System.FilePath (takeBaseName,
3231
takeDirectory, (</>))
3332

33+
-- High level parsing of cabal.project file to produce errors, warnings, and ProjectConfigSkeleton
3434
parseCabalProjectFileContents
3535
:: FilePath
3636
-> BS.ByteString
@@ -47,21 +47,21 @@ parseCabalProjectFileContents fp bytes = do
4747

4848
pure (PR.runParseResult parseRes)
4949

50+
-- Extract fields from cabal.project file
5051
readCabalProjectFields
5152
:: NormalizedFilePath
5253
-> BS.ByteString
53-
-> Either FileDiagnostic [Syntax.Field Syntax.Position]
54+
-> Either [FileDiagnostic] [Syntax.Field Syntax.Position]
5455
readCabalProjectFields file contents =
5556
case PR.runParseResult (readPreprocessFields contents) of
57+
-- we don't want to double report diagnostics, all diagnostics are produced by 'parseCabalProjectFileContents'.
5658
(_warnings, Left (_mbVer, errs)) ->
57-
let perr = NE.head errs
58-
in Left $
59-
Diagnostics.fatalParseErrorDiagnostic file
60-
("Failed to parse cabal.project file: " <> T.pack (show perr))
59+
Left (map (Diagnostics.errorDiagnostic file) (NE.toList errs))
6160

6261
(_warnings, Right fields) ->
6362
Right fields
6463

64+
-- Helper for parseCabalProjectFileContents, returns unique cache directory for given cabal.project file
6565
getCabalProjectCacheDir :: FilePath -> IO FilePath
6666
getCabalProjectCacheDir fp = do
6767
getXdgDirectory XdgCache (cacheDir </> prefix ++ "-" ++ opts_hash)

plugins/hls-cabal-project-plugin/test/Main.hs

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,13 @@ module Main (
66
main,
77
) where
88

9-
import qualified Control.Exception as E
10-
import Control.Lens ((^.))
11-
import Control.Lens.Fold ((^?))
12-
import Control.Monad (guard)
13-
import qualified Data.ByteString as BS
14-
import Data.ByteString.Char8 (pack)
15-
import Data.Either (isRight)
16-
import Data.List.Extra (nubOrdOn)
17-
import Data.List.NonEmpty (NonEmpty (..))
18-
import qualified Data.List.NonEmpty as NE
19-
import qualified Data.Maybe as Maybe
20-
import qualified Data.Text as T
21-
import Distribution.Client.ProjectConfig.Parsec (ProjectConfigSkeleton)
22-
import Distribution.Fields (PError (..),
23-
PWarning (..))
24-
import Distribution.Types.Version (Version)
25-
import qualified Ide.Plugin.CabalProject.Parse as Lib
26-
import qualified Language.LSP.Protocol.Lens as L
9+
import qualified Control.Exception as E
10+
import Control.Lens ((^.))
11+
import qualified Data.ByteString as BS
12+
import Data.ByteString.Char8 (pack)
13+
import Data.Either (isRight)
14+
import qualified Ide.Plugin.CabalProject.Parse as Lib
15+
import qualified Language.LSP.Protocol.Lens as L
2716
import System.FilePath
2817
import Test.Hls
2918
import Utils
@@ -65,13 +54,6 @@ cabalProjectParserUnitTests =
6554
let cabalFp = root </> "cabal.project"
6655
bytes <- BS.readFile cabalFp
6756
result <- E.try @E.IOException (Lib.parseCabalProjectFileContents cabalFp bytes)
68-
:: IO ( Either
69-
E.IOException
70-
( [PWarning]
71-
, Either (Maybe Version, NonEmpty PError)
72-
ProjectConfigSkeleton
73-
)
74-
)
7557
case result of
7658
Left err ->
7759
let errStr = show err

plugins/hls-cabal-project-plugin/test/Utils.hs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44

55
module Utils where
66

7-
import Control.Monad (guard)
8-
import Data.List (sort)
9-
import Data.Proxy (Proxy (Proxy))
10-
import qualified Data.Text as T
11-
import Ide.Plugin.CabalProject (descriptor)
7+
import Control.Monad (guard)
8+
import Data.Proxy (Proxy (Proxy))
9+
import Ide.Plugin.CabalProject (descriptor)
1210
import qualified Ide.Plugin.CabalProject
13-
import Ide.Plugin.CabalProject.Types
1411
import System.FilePath
1512
import Test.Hls
1613

0 commit comments

Comments
 (0)