Skip to content

Commit a69ca44

Browse files
committed
Revert "ghcide: Remove dependency on retrie, since it doesn't build yet"
Retrie now supports ghc-9.0.1 This reverts commit c98956e.
1 parent 76b3600 commit a69ca44

File tree

4 files changed

+44
-86
lines changed

4 files changed

+44
-86
lines changed

ghcide/ghcide.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ library
7070
prettyprinter-ansi-terminal,
7171
prettyprinter,
7272
regex-tdfa >= 1.3.1.0,
73-
-- retrie,
73+
retrie,
7474
rope-utf16-splay,
7575
safe,
7676
safe-exceptions,

ghcide/src/Development/IDE/GHC/ExactPrint.hs

Lines changed: 40 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -33,84 +33,45 @@ module Development.IDE.GHC.ExactPrint
3333
)
3434
where
3535

36-
import BasicTypes (appPrec)
37-
import Control.Applicative (Alternative)
38-
import Control.Monad
39-
import qualified Control.Monad.Fail as Fail
40-
import Control.Monad.IO.Class (MonadIO)
41-
import Control.Monad.Trans.Class
42-
import Control.Monad.Trans.Except
43-
import Control.Monad.Zip
44-
import qualified Data.DList as DL
45-
import Data.Either.Extra (mapLeft)
46-
import Data.Functor.Classes
47-
import Data.Functor.Contravariant
48-
import qualified Data.Text as T
49-
import Development.IDE.Core.RuleTypes
50-
import Development.IDE.Core.Service (runAction)
51-
import Development.IDE.Core.Shake
52-
import Development.IDE.GHC.Compat hiding (parseExpr)
53-
import Development.IDE.Types.Location
54-
import Development.Shake (RuleResult, Rules)
55-
import Development.Shake.Classes
56-
import qualified GHC.Generics as GHC
57-
import Generics.SYB
58-
import Ide.PluginUtils
59-
import Language.Haskell.GHC.ExactPrint
60-
import Language.Haskell.GHC.ExactPrint.Parsers
61-
import Language.LSP.Types
62-
import Language.LSP.Types.Capabilities (ClientCapabilities)
63-
import Outputable (Outputable, ppr,
64-
showSDoc)
65-
-- import Retrie.ExactPrint hiding (parseDecl, parseExpr, parsePattern, parseType)
66-
import Data.Bool (bool)
67-
import Data.Foldable (Foldable (fold))
68-
import Data.Functor.Compose (Compose (Compose))
69-
import Data.Monoid (All (All), Any (Any))
70-
import Data.Traversable (for)
71-
import Language.Haskell.GHC.ExactPrint.Annotate (Annotate)
72-
import Parser (parseIdentifier)
36+
import BasicTypes (appPrec)
37+
import Control.Applicative (Alternative)
38+
import Control.Monad
39+
import qualified Control.Monad.Fail as Fail
40+
import Control.Monad.IO.Class (MonadIO)
41+
import Control.Monad.Trans.Class
42+
import Control.Monad.Trans.Except
43+
import Control.Monad.Zip
44+
import qualified Data.DList as DL
45+
import Data.Either.Extra (mapLeft)
46+
import Data.Functor.Classes
47+
import Data.Functor.Contravariant
48+
import qualified Data.Text as T
49+
import Development.IDE.Core.RuleTypes
50+
import Development.IDE.Core.Service (runAction)
51+
import Development.IDE.Core.Shake
52+
import Development.IDE.GHC.Compat hiding (parseExpr)
53+
import Development.IDE.Types.Location
54+
import Development.Shake (RuleResult, Rules)
55+
import Development.Shake.Classes
56+
import qualified GHC.Generics as GHC
57+
import Generics.SYB
58+
import Ide.PluginUtils
59+
import Language.Haskell.GHC.ExactPrint
60+
import Language.Haskell.GHC.ExactPrint.Parsers
61+
import Language.LSP.Types
62+
import Language.LSP.Types.Capabilities (ClientCapabilities)
63+
import Outputable (Outputable, ppr, showSDoc)
64+
import Retrie.ExactPrint hiding (parseDecl, parseExpr, parsePattern, parseType)
65+
import Parser (parseIdentifier)
66+
import Data.Traversable (for)
67+
import Data.Foldable (Foldable(fold))
68+
import Data.Bool (bool)
69+
import Data.Monoid (All(All), Any(Any))
70+
import Data.Functor.Compose (Compose(Compose))
7371
#if __GLASGOW_HASKELL__ == 808
74-
import Control.Arrow
72+
import Control.Arrow
7573
#endif
7674

77-
import Control.DeepSeq (rwhnf)
78-
79-
-- Start stolen from retrie and not compatible with retrie
80-
81-
-- | 'Annotated' packages an AST fragment with the annotations necessary to
82-
-- 'exactPrint' or 'transform' that AST.
83-
data Annotated ast = Annotated
84-
{ astA :: ast
85-
-- ^ Examine the actual AST.
86-
, annsA :: Anns
87-
-- ^ Annotations generated/consumed by ghc-exactprint
88-
, seedA :: Int
89-
-- ^ Name supply used by ghc-exactprint to generate unique locations.
90-
}
91-
deriving (Show)
92-
93-
-- | Construct an 'Annotated'.
94-
-- This should really only be used in the parsing functions, hence the scary name.
95-
-- Don't use this unless you know what you are doing.
96-
unsafeMkA :: ast -> Anns -> Int -> Annotated ast
97-
unsafeMkA = Annotated
98-
99-
-- | Exactprint an 'Annotated' thing.
100-
printA :: Annotate ast => Annotated (Located ast) -> String
101-
printA (Annotated ast anns _) = exactPrint ast anns
102-
103-
-- | Transform an 'Annotated' thing.
104-
transformA
105-
:: Monad m => Annotated ast1 -> (ast1 -> TransformT m ast2) -> m (Annotated ast2)
106-
transformA (Annotated ast anns seed) f = do
107-
(ast',(anns',seed'),_) <- runTransformFromT seed anns (f ast)
108-
return $ Annotated ast' anns' seed'
109-
110-
instance NFData (Annotated a) where
111-
rnf = rwhnf
112-
113-
-- End stolen from retrie and not compatible with retrie
11475

11576
------------------------------------------------------------------------------
11677

@@ -272,7 +233,7 @@ graft' needs_space dst val = Graft $ \dflags a -> do
272233
( mkT $
273234
\case
274235
(L src _ :: Located ast) | src == dst -> val'
275-
l -> l
236+
l -> l
276237
)
277238
a
278239

@@ -578,7 +539,7 @@ smallestM q f = fmap snd . go
578539
Just True -> do
579540
it@(r, x') <- gmapMQ go x
580541
case r of
581-
Any True -> pure it
542+
Any True -> pure it
582543
Any False -> fmap (Any True,) $ f x'
583544
Just False -> pure (mempty, x)
584545

@@ -598,9 +559,9 @@ largestM q f = go
598559
go :: GenericM m
599560
go x = do
600561
case q x of
601-
Just True -> f x
562+
Just True -> f x
602563
Just False -> pure x
603-
Nothing -> gmapM go x
564+
Nothing -> gmapM go x
604565

605566
newtype MonadicQuery r m a = MonadicQuery
606567
{ runMonadicQuery :: m (r, a)

ghcide/src/Development/IDE/Plugin/CodeAction/Args.hs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ import Development.IDE.Types.Exports (ExportsMap)
2222
import Development.IDE.Types.Options (IdeOptions)
2323
import Language.LSP.Types (CodeActionKind (CodeActionQuickFix),
2424
TextEdit)
25-
-- import Retrie (Annotated (astA))
26-
-- import Retrie.ExactPrint (annsA)
27-
import Development.IDE.GHC.ExactPrint (Annotated (annsA, astA))
25+
import Retrie (Annotated (astA))
26+
import Retrie.ExactPrint (annsA)
2827

2928
type CodeActionTitle = T.Text
3029

ghcide/src/Development/IDE/Plugin/CodeAction/ExactPrint.hs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ import Language.Haskell.GHC.ExactPrint.Types (DeltaPos (DP),
4242
import Language.LSP.Types
4343
import OccName
4444
import Outputable (ppr, showSDocUnsafe)
45-
-- import Retrie.GHC (rdrNameOcc, unpackFS)
46-
import FastString (unpackFS)
47-
import GhcPlugins (rdrNameOcc)
45+
import Retrie.GHC (rdrNameOcc, unpackFS)
4846

4947
------------------------------------------------------------------------------
5048

0 commit comments

Comments
 (0)