Skip to content

Commit 5493fbb

Browse files
committed
Test qualified completion
- add test for post-qualified completion - add failing test for pre-qualified completion
1 parent 1a0d4a7 commit 5493fbb

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

ghcide/test/exe/Main.hs

+16-6
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ import Language.LSP.Types hiding
7474
SemanticTokensEdit (_start),
7575
mkRange)
7676
import Language.LSP.Types.Capabilities
77-
import qualified Language.LSP.Types.Lens as Lens (label)
77+
import qualified Language.LSP.Types.Lens as Lens (label, insertText)
7878
import qualified Language.LSP.Types.Lens as Lsp (diagnostics,
7979
message,
8080
params)
@@ -4782,11 +4782,8 @@ completionNoCommandTest name src pos wanted = testSession name $ do
47824782
docId <- createDoc "A.hs" "haskell" (T.unlines src)
47834783
_ <- waitForDiagnostics
47844784
compls <- getCompletions docId pos
4785-
let wantedC = find ( \case
4786-
CompletionItem {_insertText = Just x} -> wanted `T.isPrefixOf` x
4787-
_ -> False
4788-
) compls
4789-
case wantedC of
4785+
let isPrefixOfInsertOrLabel ci = any (wanted `T.isPrefixOf`) [fromMaybe "" (ci ^. Lens.insertText), ci ^. Lens.label]
4786+
case find isPrefixOfInsertOrLabel compls of
47904787
Nothing ->
47914788
liftIO $ assertFailure $ "Cannot find expected completion in: " <> show [_label | CompletionItem {_label} <- compls]
47924789
Just CompletionItem{..} -> liftIO . assertBool ("Expected no command but got: " <> show _command) $ null _command
@@ -5043,6 +5040,19 @@ nonLocalCompletionTests =
50435040
"join"
50445041
["{-# LANGUAGE NoImplicitPrelude #-}",
50455042
"module A where", "import Control.Monad as M ()", "import Control.Monad as N (join)", "f = N.joi"]
5043+
-- Failing test for https://github.com/haskell/haskell-language-server/issues/2824
5044+
, expectFailBecause "known broken #2824" $ completionNoCommandTest
5045+
"explicit qualified"
5046+
["{-# LANGUAGE NoImplicitPrelude #-}",
5047+
"module A where", "import qualified Control.Monad as M (j)"]
5048+
(Position 2 38)
5049+
"join"
5050+
, completionNoCommandTest
5051+
"explicit qualified post"
5052+
["{-# LANGUAGE NoImplicitPrelude, ImportQualifiedPost #-}",
5053+
"module A where", "import Control.Monad qualified as M (j)"]
5054+
(Position 2 38)
5055+
"join"
50465056
]
50475057
, testGroup "Data constructor"
50485058
[ completionCommandTest

0 commit comments

Comments
 (0)