1- {-# LANGUAGE CPP #-}
21{-# LANGUAGE DataKinds #-}
32{-# LANGUAGE OverloadedStrings #-}
43
54import Control.Lens ((^?) )
65import Control.Monad.IO.Class (liftIO )
7- import Data.Aeson (KeyValue (.. ), Value ( .. ),
8- object )
6+ import Data.Aeson (KeyValue (.. ), Object )
7+ import qualified Data.Aeson.KeyMap as KV
98import Data.Default
109import Data.Functor (void )
1110import Data.Map.Strict as Map hiding (map )
@@ -14,6 +13,9 @@ import Data.Text hiding (length, map,
1413 unlines )
1514import qualified Data.Text as Text
1615import qualified Data.Text.Utf16.Rope as Rope
16+ import Development.IDE (Pretty )
17+ import Development.IDE.GHC.Compat (GhcVersion (.. ),
18+ ghcVersion )
1719import Development.IDE.Plugin.Test (WaitForIdeRuleResult (.. ))
1820import Development.IDE.Test (waitForBuildQueue )
1921import Ide.Plugin.SemanticTokens
@@ -22,13 +24,12 @@ import Ide.Plugin.SemanticTokens.Types
2224import Ide.Types
2325import Language.LSP.Protocol.Types (SemanticTokenTypes (.. ),
2426 _L )
25- import Language.LSP.Test (Session ( .. ) ,
27+ import Language.LSP.Test (Session ,
2628 SessionConfig (ignoreConfigurationRequests ),
2729 openDoc )
2830import qualified Language.LSP.Test as Test
2931import Language.LSP.VFS (VirtualFile (.. ))
3032import System.FilePath
31- import qualified Test.Hls as Test
3233import Test.Hls (PluginTestDescriptor ,
3334 TestName , TestTree ,
3435 TextDocumentIdentifier ,
@@ -65,6 +66,7 @@ semanticTokensPlugin = Test.Hls.mkPluginTestDescriptor enabledSemanticDescriptor
6566 }
6667 }
6768
69+ goldenWithHaskellAndCapsOutPut :: Pretty b => Config -> PluginTestDescriptor b -> TestName -> FS. VirtualFileTree -> FilePath -> String -> (TextDocumentIdentifier -> Session String ) -> TestTree
6870goldenWithHaskellAndCapsOutPut config plugin title tree path desc act =
6971 goldenGitDiff title (FS. vftOriginalRoot tree </> path <.> desc) $
7072 runSessionWithServerInTmpDir config plugin tree $
@@ -118,13 +120,11 @@ semanticTokensValuePatternTests =
118120 goldenWithSemanticTokensWithDefaultConfig " pattern bind" " TPatternbind"
119121 ]
120122
121- mkSemanticConfig :: Value -> Config
123+ mkSemanticConfig :: Object -> Config
122124mkSemanticConfig setting = def{plugins = Map. insert " SemanticTokens" conf (plugins def)}
123125 where
124- conf = def{plcConfig = ( \ ( Object obj) -> obj) setting }
126+ conf = def{plcConfig = setting }
125127
126- modifySemantic :: Value -> Session ()
127- modifySemantic setting = Test. setHlsConfig $ mkSemanticConfig setting
128128
129129
130130directFile :: FilePath -> Text -> [FS. FileTree ]
@@ -138,7 +138,7 @@ semanticTokensConfigTest = testGroup "semantic token config test" [
138138 testCase " function to variable" $ do
139139 let content = Text. unlines [" module Hello where" , " go _ = 1" ]
140140 let fs = mkFs $ directFile " Hello.hs" content
141- let funcVar = object [" functionToken" .= var]
141+ let funcVar = KV. fromList [" functionToken" .= var]
142142 var :: String
143143 var = " variable"
144144 do
@@ -158,8 +158,7 @@ semanticTokensConfigTest = testGroup "semantic token config test" [
158158
159159semanticTokensTests :: TestTree
160160semanticTokensTests =
161- testGroup
162- " other semantic Token test"
161+ testGroup " other semantic Token test" $
163162 [ testCase " module import test" $ do
164163 let file1 = " TModula𐐀bA.hs"
165164 let file2 = " TModuleB.hs"
@@ -194,11 +193,9 @@ semanticTokensTests =
194193 goldenWithSemanticTokensWithDefaultConfig " type family" " TTypefamily" ,
195194 goldenWithSemanticTokensWithDefaultConfig " TUnicodeSyntax" " TUnicodeSyntax" ,
196195 goldenWithSemanticTokensWithDefaultConfig " TQualifiedName" " TQualifiedName"
197- -- it is not supported in ghc92
198- #if MIN_VERSION_ghc(9,4,0)
199- , goldenWithSemanticTokensWithDefaultConfig " TDoc" " TDoc"
200- #endif
201196 ]
197+ -- not supported in ghc92
198+ ++ [goldenWithSemanticTokensWithDefaultConfig " TDoc" " TDoc" | ghcVersion > GHC92 ]
202199
203200semanticTokensDataTypeTests :: TestTree
204201semanticTokensDataTypeTests =
0 commit comments