@@ -28,6 +28,7 @@ tests = testGroup "code actions" [
28
28
#if hls_refactor
29
29
importTests
30
30
, 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
31
32
, packageTests
32
33
, redundantImportTests
33
34
, renameTests
@@ -105,7 +106,7 @@ importTests = testGroup "import suggestions" [
105
106
]
106
107
107
108
importQualifiedTests :: TestTree
108
- importQualifiedTests = testGroup " import qualified suggestions" [
109
+ importQualifiedTests = testGroup " import qualified prefix suggestions" [
109
110
testCase " qualified import works with 3.8 code action kinds" $ runSession hlsCommand fullCaps " test/testdata" $ do
110
111
doc <- openDoc " CodeActionImportQualified.hs" " haskell"
111
112
-- No Formatting:
@@ -118,7 +119,7 @@ importQualifiedTests = testGroup "import qualified suggestions" [
118
119
actionsOrCommands <- getAllCodeActions doc
119
120
let actns = map fromAction actionsOrCommands
120
121
121
- let importQualifiedSuggestion = " import qualified Control.Monad "
122
+ let importQualifiedSuggestion = " import qualified Control.Monad as Control "
122
123
importControlMonadQualified <- liftIO $ inspectCodeAction actionsOrCommands [importQualifiedSuggestion]
123
124
liftIO $ do
124
125
dontExpectCodeAction actionsOrCommands [" import Control.Monad (when)" ]
@@ -130,6 +131,32 @@ importQualifiedTests = testGroup "import qualified suggestions" [
130
131
liftIO $ contents @?= " import qualified Control.Monad as Control\n main :: IO ()\n main = Control.when True $ putStrLn \" hello\"\n "
131
132
]
132
133
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’\n No 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
+
133
160
packageTests :: TestTree
134
161
packageTests = testGroup " add package suggestions" [
135
162
ignoreTestBecause " no support for adding dependent packages via code action" $ testCase " adds to .cabal files" $ do
0 commit comments