Skip to content

Commit 841265d

Browse files
committed
Add importQualifiedPostTests
1 parent e1f7507 commit 841265d

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

test/functional/FunctionalCodeAction.hs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ tests = testGroup "code actions" [
2828
#if hls_refactor
2929
importTests
3030
, ignoreInEnv [HostOS Windows, GhcVer GHC94] "Diagnostic failure for Windows-ghc9.4.2" importQualifiedTests
31+
, ignoreInEnv [HostOS Windows, GhcVer GHC94] "Diagnostic failure for Windows-ghc9.4.2" importQualifiedPostTests
3132
, packageTests
3233
, redundantImportTests
3334
, renameTests
@@ -105,7 +106,7 @@ importTests = testGroup "import suggestions" [
105106
]
106107

107108
importQualifiedTests :: TestTree
108-
importQualifiedTests = testGroup "import qualified suggestions" [
109+
importQualifiedTests = testGroup "import qualified prefix suggestions" [
109110
testCase "qualified import works with 3.8 code action kinds" $ runSession hlsCommand fullCaps "test/testdata" $ do
110111
doc <- openDoc "CodeActionImportQualified.hs" "haskell"
111112
-- No Formatting:
@@ -118,7 +119,7 @@ importQualifiedTests = testGroup "import qualified suggestions" [
118119
actionsOrCommands <- getAllCodeActions doc
119120
let actns = map fromAction actionsOrCommands
120121

121-
let importQualifiedSuggestion = "import qualified Control.Monad "
122+
let importQualifiedSuggestion = "import qualified Control.Monad as Control"
122123
importControlMonadQualified <- liftIO $ inspectCodeAction actionsOrCommands [importQualifiedSuggestion]
123124
liftIO $ do
124125
dontExpectCodeAction actionsOrCommands ["import Control.Monad (when)"]
@@ -130,6 +131,32 @@ importQualifiedTests = testGroup "import qualified suggestions" [
130131
liftIO $ contents @?= "import qualified Control.Monad as Control\nmain :: IO ()\nmain = Control.when True $ putStrLn \"hello\"\n"
131132
]
132133

134+
importQualifiedPostTests :: TestTree
135+
importQualifiedPostTests = testGroup "import qualified postfix suggestions" [
136+
testCase "qualified import in postfix position works with 3.8 code action kinds" $ runSession hlsCommand fullCaps "test/testdata" $ do
137+
doc <- openDoc "CodeActionImportPostQualified.hs" "haskell"
138+
-- No Formatting:
139+
let config = def { formattingProvider = "none" }
140+
sendConfigurationChanged (toJSON config)
141+
142+
(diag:_) <- waitForDiagnosticsFrom doc
143+
liftIO $ diag ^. L.message @?= "Not in scope: ‘Control.when’\nNo module named ‘Control’ is imported."
144+
145+
actionsOrCommands <- getAllCodeActions doc
146+
let actns = map fromAction actionsOrCommands
147+
148+
let importQualifiedPostSuggestion = "import Control.Monad qualified as Control"
149+
importControlMonadQualified <- liftIO $ inspectCodeAction actionsOrCommands [importQualifiedPostSuggestion]
150+
liftIO $ do
151+
dontExpectCodeAction actionsOrCommands ["import qualified Control.Monad as Control", "import Control.Monad (when)"]
152+
length actns >= 10 @? "There are some actions"
153+
154+
executeCodeAction importControlMonadQualified
155+
156+
contents <- documentContents doc
157+
liftIO $ T.lines contents !! 2 @?= "import Control.Monad qualified as Control"
158+
]
159+
133160
packageTests :: TestTree
134161
packageTests = testGroup "add package suggestions" [
135162
ignoreTestBecause "no support for adding dependent packages via code action" $ testCase "adds to .cabal files" $ do
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{-# LANGUAGE ImportQualifiedPost #-}
2+
{-# OPTIONS_GHC -Wprepositive-qualified-module #-}
3+
main :: IO ()
4+
main = Control.when True $ putStrLn "hello"

0 commit comments

Comments
 (0)