mirror of
https://github.com/haskell/haskell-language-server.git
synced 2024-08-16 12:00:31 +03:00
Stylish Haskell: CPP parse issues (#3199)
* Stylish Haskell: Parse issues * CPP language extension * Manually fix some files with duplication * Pre-commit: Fix ignored files It looks like `ExactPrint` was ignored before, but since absolute paths are used and weren't adapted it wasn't ignored afterwards.
This commit is contained in:
parent
00469199cf
commit
bd1d0a1675
@ -4,7 +4,7 @@
|
|||||||
"hooks": [
|
"hooks": [
|
||||||
{
|
{
|
||||||
"entry": "stylish-haskell --inplace",
|
"entry": "stylish-haskell --inplace",
|
||||||
"exclude": "(^Setup.hs$|test/testdata/.*$|test/data/.*$|test/manual/lhs/.*$|^hie-compat/.*$|^plugins/hls-tactics-plugin/.*$|^ghcide/src/Development/IDE/GHC/Compat.hs$|^ghcide/src/Development/IDE/Plugin/CodeAction/ExactPrint.hs$|^ghcide/src/Development/IDE/GHC/Compat/Core.hs$|^ghcide/src/Development/IDE/Spans/Pragmas.hs$|^ghcide/src/Development/IDE/LSP/Outline.hs$|^plugins/hls-splice-plugin/src/Ide/Plugin/Splice.hs$|^ghcide/test/exe/Main.hs$|ghcide/src/Development/IDE/Core/Rules.hs|^hls-test-utils/src/Test/Hls/Util.hs$)",
|
"exclude": "(^Setup.hs$|test/testdata/.*$|test/data/.*$|test/manual/lhs/.*$|^hie-compat/.*$|^plugins/hls-tactics-plugin/.*$|^ghcide/src/Development/IDE/GHC/Compat.hs$|^plugins/hls-refactor-plugin/src/Development/IDE/GHC/Compat/ExactPrint.hs$|^ghcide/src/Development/IDE/GHC/Compat/Core.hs$|^ghcide/src/Development/IDE/Spans/Pragmas.hs$|^ghcide/src/Development/IDE/LSP/Outline.hs$|^plugins/hls-splice-plugin/src/Ide/Plugin/Splice.hs$|^ghcide/test/exe/Main.hs$|^ghcide/src/Development/IDE/Core/Rules.hs$|^hls-test-utils/src/Test/Hls/Util.hs$|^ghcide/src/Development/IDE/Core/Compile.hs$|^plugins/hls-refactor-plugin/src/Development/IDE/GHC/ExactPrint.hs$|^plugins/hls-refactor-plugin/src/Development/IDE/Plugin/CodeAction/ExactPrint.hs$)",
|
||||||
"files": "\\.l?hs$",
|
"files": "\\.l?hs$",
|
||||||
"id": "stylish-haskell",
|
"id": "stylish-haskell",
|
||||||
"language": "system",
|
"language": "system",
|
||||||
|
@ -57,6 +57,7 @@ newline: lf
|
|||||||
|
|
||||||
language_extensions:
|
language_extensions:
|
||||||
- BangPatterns
|
- BangPatterns
|
||||||
|
- CPP
|
||||||
- DataKinds
|
- DataKinds
|
||||||
- DeriveFunctor
|
- DeriveFunctor
|
||||||
- DeriveGeneric
|
- DeriveGeneric
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE ExistentialQuantification #-}
|
{-# LANGUAGE ExistentialQuantification #-}
|
||||||
{-# LANGUAGE RankNTypes #-}
|
{-# LANGUAGE RankNTypes #-}
|
||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
{-# LANGUAGE CPP #-}
|
|
||||||
|
|
||||||
{-|
|
{-|
|
||||||
The logic for setting up a ghcide session by tapping into hie-bios.
|
The logic for setting up a ghcide session by tapping into hie-bios.
|
||||||
@ -67,15 +67,16 @@ import Development.IDE.Types.Location
|
|||||||
import Development.IDE.Types.Logger (Pretty (pretty),
|
import Development.IDE.Types.Logger (Pretty (pretty),
|
||||||
Priority (Debug, Error, Info, Warning),
|
Priority (Debug, Error, Info, Warning),
|
||||||
Recorder, WithPriority,
|
Recorder, WithPriority,
|
||||||
logWith, nest, vcat,
|
cmapWithPrio, logWith,
|
||||||
viaShow, (<+>),
|
nest,
|
||||||
toCologActionWithPrio, cmapWithPrio)
|
toCologActionWithPrio,
|
||||||
|
vcat, viaShow, (<+>))
|
||||||
import Development.IDE.Types.Options
|
import Development.IDE.Types.Options
|
||||||
import GHC.Check
|
import GHC.Check
|
||||||
import qualified HIE.Bios as HieBios
|
import qualified HIE.Bios as HieBios
|
||||||
import qualified HIE.Bios.Types as HieBios
|
|
||||||
import HIE.Bios.Environment hiding (getCacheDir)
|
import HIE.Bios.Environment hiding (getCacheDir)
|
||||||
import HIE.Bios.Types hiding (Log)
|
import HIE.Bios.Types hiding (Log)
|
||||||
|
import qualified HIE.Bios.Types as HieBios
|
||||||
import Hie.Implicit.Cradle (loadImplicitHieCradle)
|
import Hie.Implicit.Cradle (loadImplicitHieCradle)
|
||||||
import Language.LSP.Server
|
import Language.LSP.Server
|
||||||
import Language.LSP.Types
|
import Language.LSP.Types
|
||||||
@ -90,6 +91,8 @@ import Data.Void
|
|||||||
import Control.Concurrent.STM.Stats (atomically, modifyTVar',
|
import Control.Concurrent.STM.Stats (atomically, modifyTVar',
|
||||||
readTVar, writeTVar)
|
readTVar, writeTVar)
|
||||||
import Control.Concurrent.STM.TQueue
|
import Control.Concurrent.STM.TQueue
|
||||||
|
import Control.DeepSeq
|
||||||
|
import Control.Exception (evaluate)
|
||||||
import Control.Monad.IO.Unlift (MonadUnliftIO)
|
import Control.Monad.IO.Unlift (MonadUnliftIO)
|
||||||
import Data.Foldable (for_)
|
import Data.Foldable (for_)
|
||||||
import Data.HashMap.Strict (HashMap)
|
import Data.HashMap.Strict (HashMap)
|
||||||
@ -103,9 +106,6 @@ import HieDb.Types
|
|||||||
import HieDb.Utils
|
import HieDb.Utils
|
||||||
import qualified System.Random as Random
|
import qualified System.Random as Random
|
||||||
import System.Random (RandomGen)
|
import System.Random (RandomGen)
|
||||||
import Control.Monad.IO.Unlift (MonadUnliftIO)
|
|
||||||
import Control.Exception (evaluate)
|
|
||||||
import Control.DeepSeq
|
|
||||||
|
|
||||||
data Log
|
data Log
|
||||||
= LogSettingInitialDynFlags
|
= LogSettingInitialDynFlags
|
||||||
|
@ -123,11 +123,12 @@ locateModule env comp_info exts targetFor modName mbPkgName isSource = do
|
|||||||
#if MIN_VERSION_ghc(9,3,0)
|
#if MIN_VERSION_ghc(9,3,0)
|
||||||
OtherPkg uid
|
OtherPkg uid
|
||||||
| Just dirs <- lookup uid import_paths
|
| Just dirs <- lookup uid import_paths
|
||||||
|
-> lookupLocal uid dirs
|
||||||
#else
|
#else
|
||||||
Just pkgName
|
Just pkgName
|
||||||
| Just (uid, dirs) <- lookup (PackageName pkgName) import_paths
|
| Just (uid, dirs) <- lookup (PackageName pkgName) import_paths
|
||||||
#endif
|
|
||||||
-> lookupLocal uid dirs
|
-> lookupLocal uid dirs
|
||||||
|
#endif
|
||||||
| otherwise -> lookupInPackageDB env
|
| otherwise -> lookupInPackageDB env
|
||||||
#if MIN_VERSION_ghc(9,3,0)
|
#if MIN_VERSION_ghc(9,3,0)
|
||||||
NoPkgQual -> do
|
NoPkgQual -> do
|
||||||
|
@ -59,7 +59,8 @@ import GHC.Plugins (Depth (AllTheWay),
|
|||||||
#endif
|
#endif
|
||||||
import Ide.PluginUtils (mkLspCommand)
|
import Ide.PluginUtils (mkLspCommand)
|
||||||
import Ide.Types (CommandId (..),
|
import Ide.Types (CommandId (..),
|
||||||
IdePlugins(..), PluginId)
|
IdePlugins (..),
|
||||||
|
PluginId)
|
||||||
import Language.LSP.Types
|
import Language.LSP.Types
|
||||||
import Language.LSP.Types.Capabilities
|
import Language.LSP.Types.Capabilities
|
||||||
import qualified Language.LSP.VFS as VFS
|
import qualified Language.LSP.VFS as VFS
|
||||||
@ -516,7 +517,6 @@ findRecordCompl uri pmod mn DataDecl {tcdLName, tcdDataDefn} = result
|
|||||||
PrefixCon{} -> Just []
|
PrefixCon{} -> Just []
|
||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
|
|
||||||
extract ConDeclField{..}
|
|
||||||
-- NOTE: 'cd_fld_names' is grouped so that the fields
|
-- NOTE: 'cd_fld_names' is grouped so that the fields
|
||||||
-- sharing the same type declaration to fit in the same group; e.g.
|
-- sharing the same type declaration to fit in the same group; e.g.
|
||||||
--
|
--
|
||||||
@ -527,8 +527,10 @@ findRecordCompl uri pmod mn DataDecl {tcdLName, tcdDataDefn} = result
|
|||||||
-- is encoded as @[[arg1, arg2], [arg3], [arg4]]@
|
-- is encoded as @[[arg1, arg2], [arg3], [arg4]]@
|
||||||
-- Hence, we must concat nested arguments into one to get all the fields.
|
-- Hence, we must concat nested arguments into one to get all the fields.
|
||||||
#if MIN_VERSION_ghc(9,3,0)
|
#if MIN_VERSION_ghc(9,3,0)
|
||||||
|
extract ConDeclField{..}
|
||||||
= map (foLabel . unLoc) cd_fld_names
|
= map (foLabel . unLoc) cd_fld_names
|
||||||
#else
|
#else
|
||||||
|
extract ConDeclField{..}
|
||||||
= map (rdrNameFieldOcc . unLoc) cd_fld_names
|
= map (rdrNameFieldOcc . unLoc) cd_fld_names
|
||||||
#endif
|
#endif
|
||||||
-- XConDeclField
|
-- XConDeclField
|
||||||
|
@ -15,10 +15,10 @@ import qualified Data.Map as Map
|
|||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Development.IDE hiding (pluginHandlers)
|
import Development.IDE hiding (pluginHandlers)
|
||||||
import Development.IDE.GHC.Compat
|
import Development.IDE.GHC.Compat
|
||||||
import Development.IDE.Plugin.CodeAction
|
|
||||||
import Development.IDE.GHC.Compat.ExactPrint
|
import Development.IDE.GHC.Compat.ExactPrint
|
||||||
import Development.IDE.GHC.ExactPrint (GetAnnotatedParsedSource (..))
|
import Development.IDE.GHC.ExactPrint (GetAnnotatedParsedSource (..))
|
||||||
import qualified Development.IDE.GHC.ExactPrint as E
|
import qualified Development.IDE.GHC.ExactPrint as E
|
||||||
|
import Development.IDE.Plugin.CodeAction
|
||||||
import Ide.Types
|
import Ide.Types
|
||||||
import Language.Haskell.GHC.ExactPrint
|
import Language.Haskell.GHC.ExactPrint
|
||||||
import Language.Haskell.GHC.ExactPrint.Types hiding (GhcPs)
|
import Language.Haskell.GHC.ExactPrint.Types hiding (GhcPs)
|
||||||
|
@ -19,9 +19,9 @@ import Control.Arrow (second,
|
|||||||
(&&&),
|
(&&&),
|
||||||
(>>>))
|
(>>>))
|
||||||
import Control.Concurrent.STM.Stats (atomically)
|
import Control.Concurrent.STM.Stats (atomically)
|
||||||
|
import Control.Monad.Extra
|
||||||
import Control.Monad.IO.Class
|
import Control.Monad.IO.Class
|
||||||
import Control.Monad.Trans.Maybe
|
import Control.Monad.Trans.Maybe
|
||||||
import Control.Monad.Extra
|
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
import Data.Char
|
import Data.Char
|
||||||
import qualified Data.DList as DL
|
import qualified Data.DList as DL
|
||||||
@ -39,10 +39,10 @@ import qualified Data.Set as S
|
|||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import qualified Data.Text.Utf16.Rope as Rope
|
import qualified Data.Text.Utf16.Rope as Rope
|
||||||
import Data.Tuple.Extra (fst3)
|
import Data.Tuple.Extra (fst3)
|
||||||
import Development.IDE.Types.Logger hiding (group)
|
|
||||||
import Development.IDE.Core.Rules
|
import Development.IDE.Core.Rules
|
||||||
import Development.IDE.Core.RuleTypes
|
import Development.IDE.Core.RuleTypes
|
||||||
import Development.IDE.Core.Service
|
import Development.IDE.Core.Service
|
||||||
|
import Development.IDE.Core.Shake hiding (Log)
|
||||||
import Development.IDE.GHC.Compat
|
import Development.IDE.GHC.Compat
|
||||||
import Development.IDE.GHC.Compat.ExactPrint
|
import Development.IDE.GHC.Compat.ExactPrint
|
||||||
import Development.IDE.GHC.Compat.Util
|
import Development.IDE.GHC.Compat.Util
|
||||||
@ -51,38 +51,40 @@ import Development.IDE.GHC.ExactPrint
|
|||||||
import qualified Development.IDE.GHC.ExactPrint as E
|
import qualified Development.IDE.GHC.ExactPrint as E
|
||||||
import Development.IDE.GHC.Util (printOutputable,
|
import Development.IDE.GHC.Util (printOutputable,
|
||||||
printRdrName)
|
printRdrName)
|
||||||
import Development.IDE.Core.Shake hiding (Log)
|
|
||||||
import Development.IDE.Plugin.CodeAction.Args
|
import Development.IDE.Plugin.CodeAction.Args
|
||||||
import Development.IDE.Plugin.CodeAction.ExactPrint
|
import Development.IDE.Plugin.CodeAction.ExactPrint
|
||||||
import Development.IDE.Plugin.CodeAction.Util
|
|
||||||
import Development.IDE.Plugin.CodeAction.PositionIndexed
|
import Development.IDE.Plugin.CodeAction.PositionIndexed
|
||||||
|
import Development.IDE.Plugin.CodeAction.Util
|
||||||
import Development.IDE.Plugin.Completions.Types
|
import Development.IDE.Plugin.Completions.Types
|
||||||
import Development.IDE.Plugin.TypeLenses (suggestSignature)
|
import Development.IDE.Plugin.TypeLenses (suggestSignature)
|
||||||
import Development.IDE.Types.Exports
|
import Development.IDE.Types.Exports
|
||||||
import Development.IDE.Types.Location
|
import Development.IDE.Types.Location
|
||||||
|
import Development.IDE.Types.Logger hiding
|
||||||
|
(group)
|
||||||
import Development.IDE.Types.Options
|
import Development.IDE.Types.Options
|
||||||
|
import GHC.Exts (fromList)
|
||||||
import qualified GHC.LanguageExtensions as Lang
|
import qualified GHC.LanguageExtensions as Lang
|
||||||
import Ide.PluginUtils (subRange)
|
import Ide.PluginUtils (subRange)
|
||||||
import Ide.Types
|
import Ide.Types
|
||||||
import qualified Language.LSP.Server as LSP
|
import qualified Language.LSP.Server as LSP
|
||||||
import Language.LSP.Types (ApplyWorkspaceEditParams(..), CodeAction (..),
|
import Language.LSP.Types (ApplyWorkspaceEditParams (..),
|
||||||
|
CodeAction (..),
|
||||||
CodeActionContext (CodeActionContext, _diagnostics),
|
CodeActionContext (CodeActionContext, _diagnostics),
|
||||||
CodeActionKind (CodeActionQuickFix, CodeActionUnknown),
|
CodeActionKind (CodeActionQuickFix, CodeActionUnknown),
|
||||||
CodeActionParams (CodeActionParams),
|
CodeActionParams (CodeActionParams),
|
||||||
Command,
|
Command,
|
||||||
Diagnostic (..),
|
Diagnostic (..),
|
||||||
MessageType (..),
|
|
||||||
ShowMessageParams (..),
|
|
||||||
List (..),
|
List (..),
|
||||||
|
MessageType (..),
|
||||||
ResponseError,
|
ResponseError,
|
||||||
SMethod (..),
|
SMethod (..),
|
||||||
|
ShowMessageParams (..),
|
||||||
TextDocumentIdentifier (TextDocumentIdentifier),
|
TextDocumentIdentifier (TextDocumentIdentifier),
|
||||||
TextEdit (TextEdit, _range),
|
TextEdit (TextEdit, _range),
|
||||||
UInt,
|
UInt,
|
||||||
WorkspaceEdit (WorkspaceEdit, _changeAnnotations, _changes, _documentChanges),
|
WorkspaceEdit (WorkspaceEdit, _changeAnnotations, _changes, _documentChanges),
|
||||||
type (|?) (InR),
|
type (|?) (InR),
|
||||||
uriToFilePath)
|
uriToFilePath)
|
||||||
import GHC.Exts (fromList)
|
|
||||||
import Language.LSP.VFS (VirtualFile,
|
import Language.LSP.VFS (VirtualFile,
|
||||||
_file_text)
|
_file_text)
|
||||||
import Text.Regex.TDFA (mrAfter,
|
import Text.Regex.TDFA (mrAfter,
|
||||||
|
@ -1,22 +1,23 @@
|
|||||||
module Development.IDE.Plugin.CodeAction.Util where
|
module Development.IDE.Plugin.CodeAction.Util where
|
||||||
|
|
||||||
import Data.Data (Data)
|
import Data.Data (Data)
|
||||||
|
import Data.Time.Clock.POSIX (POSIXTime,
|
||||||
|
getCurrentTime,
|
||||||
|
utcTimeToPOSIXSeconds)
|
||||||
import qualified Data.Unique as U
|
import qualified Data.Unique as U
|
||||||
import Debug.Trace
|
import Debug.Trace
|
||||||
import Development.IDE.GHC.Compat.ExactPrint as GHC
|
import Development.IDE.GHC.Compat.ExactPrint as GHC
|
||||||
|
import Development.IDE.GHC.Dump (showAstDataHtml)
|
||||||
import GHC.Stack
|
import GHC.Stack
|
||||||
import System.Environment.Blank (getEnvDefault)
|
import System.Environment.Blank (getEnvDefault)
|
||||||
import System.IO.Unsafe
|
import System.IO.Unsafe
|
||||||
import Text.Printf
|
import Text.Printf
|
||||||
import Development.IDE.GHC.Dump (showAstDataHtml)
|
|
||||||
import Data.Time.Clock.POSIX (POSIXTime, getCurrentTime,
|
|
||||||
utcTimeToPOSIXSeconds)
|
|
||||||
#if MIN_VERSION_ghc(9,2,0)
|
#if MIN_VERSION_ghc(9,2,0)
|
||||||
import GHC.Utils.Outputable
|
import GHC.Utils.Outputable
|
||||||
#else
|
#else
|
||||||
import Development.IDE.GHC.Util
|
|
||||||
import Development.IDE.GHC.Compat.Util
|
|
||||||
import Development.IDE.GHC.Compat
|
import Development.IDE.GHC.Compat
|
||||||
|
import Development.IDE.GHC.Compat.Util
|
||||||
|
import Development.IDE.GHC.Util
|
||||||
#endif
|
#endif
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Tracing exactprint terms
|
-- Tracing exactprint terms
|
||||||
|
@ -7,15 +7,15 @@ import Control.Monad.Trans.Class (lift)
|
|||||||
import Control.Monad.Trans.Maybe (MaybeT (MaybeT), runMaybeT)
|
import Control.Monad.Trans.Maybe (MaybeT (MaybeT), runMaybeT)
|
||||||
import Data.Default
|
import Data.Default
|
||||||
import Data.Foldable (toList)
|
import Data.Foldable (toList)
|
||||||
import qualified Data.HashMap.Strict as HM
|
|
||||||
import Data.Hashable (Hashable)
|
import Data.Hashable (Hashable)
|
||||||
|
import qualified Data.HashMap.Strict as HM
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import Data.Maybe (fromJust, mapMaybe)
|
import Data.Maybe (fromJust, mapMaybe)
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Development.IDE
|
import Development.IDE
|
||||||
import Development.IDE.Core.RuleTypes (HieAstResult (..))
|
|
||||||
import Development.IDE.Core.Rules (getHieFile,
|
import Development.IDE.Core.Rules (getHieFile,
|
||||||
getSourceFileSource)
|
getSourceFileSource)
|
||||||
|
import Development.IDE.Core.RuleTypes (HieAstResult (..))
|
||||||
import qualified Development.IDE.Core.Shake as Shake
|
import qualified Development.IDE.Core.Shake as Shake
|
||||||
import Development.IDE.GHC.Compat (HieASTs (HieASTs),
|
import Development.IDE.GHC.Compat (HieASTs (HieASTs),
|
||||||
RealSrcSpan (..), mkHieFile',
|
RealSrcSpan (..), mkHieFile',
|
||||||
|
Loading…
Reference in New Issue
Block a user