Skip to content

Commit a84f7f3

Browse files
nwolversonpaf31
authored andcommitted
[psc-ide] Return qualifier from explicit/hiding imports (purescript#2317)
1 parent d41994a commit a84f7f3

File tree

2 files changed

+45
-20
lines changed

2 files changed

+45
-20
lines changed

psc-ide-server/PROTOCOL.md

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ The `complete` command looks up possible completions/corrections.
6868

6969
If no matcher is given every candidate, that passes the filters, is returned
7070
in no particular order.
71-
71+
7272
```json
7373
{
7474
"command": "complete",
@@ -106,7 +106,7 @@ couldn't be extracted from a source file.
106106
```
107107

108108

109-
### CaseSplit
109+
### CaseSplit
110110

111111
The CaseSplit command takes a line of source code, an area in that line of code
112112
and replaces it with all patterns for a given type. The parameter `annotations`
@@ -250,9 +250,9 @@ Example:
250250
"importCommand": {
251251
"importCommand": "addImport",
252252
"identifier": "bind"
253-
}
253+
}
254254
}
255-
}
255+
}
256256
```
257257

258258
### Rebuild
@@ -381,7 +381,7 @@ The list commmand can also list the imports for a given file.
381381

382382
The list import command returns a list of imports where imports are of the following form:
383383

384-
Implicit Import(`import Data.Array`):
384+
Implicit Import (`import Data.Array`):
385385
```json
386386
[
387387
{
@@ -391,7 +391,7 @@ Implicit Import(`import Data.Array`):
391391
]
392392
```
393393

394-
Implicit qualified Import(`import qualified Data.Array as A`):
394+
Implicit qualified Import (`import Data.Array as A`):
395395
```json
396396
[
397397
{
@@ -402,7 +402,7 @@ Implicit qualified Import(`import qualified Data.Array as A`):
402402
]
403403
```
404404

405-
Explicit Import(`import Data.Array (filter, filterM, join)`):
405+
Explicit Import (`import Data.Array (filter, filterM, join)`):
406406
```json
407407
[
408408
{
@@ -413,7 +413,19 @@ Explicit Import(`import Data.Array (filter, filterM, join)`):
413413
]
414414
```
415415

416-
Hiding Import(`import Data.Array hiding (filter, filterM, join)`):
416+
Explicit qualified Import (`import Data.Array (filter, filterM, join) as A`):
417+
```json
418+
[
419+
{
420+
"module": "Data.Array",
421+
"importType": "explicit",
422+
"identifiers": ["filter", "filterM", "join"],
423+
"qualifier": "A"
424+
}
425+
]
426+
```
427+
428+
Hiding Import (`import Data.Array hiding (filter, filterM, join)`):
417429
```json
418430
[
419431
{
@@ -423,6 +435,19 @@ Hiding Import(`import Data.Array hiding (filter, filterM, join)`):
423435
}
424436
]
425437
```
438+
439+
Qualified Hiding Import (`import Data.Array hiding (filter, filterM, join) as A`):
440+
```json
441+
[
442+
{
443+
"module": "Data.Array",
444+
"importType": "hiding",
445+
"identifiers": ["filter", "filterM", "join"],
446+
"qualifier": "A"
447+
}
448+
]
449+
```
450+
426451
### Cwd/Quit/Reset
427452
`cwd` returns the working directory of the server(should be your project root).
428453

src/Language/PureScript/Ide/Types.hs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import Protolude
2121

2222
import Control.Concurrent.STM
2323
import Data.Aeson
24-
import Data.Map.Lazy as M
24+
import qualified Data.Map.Lazy as M
2525
import qualified Language.PureScript.Errors.JSON as P
2626
import qualified Language.PureScript as P
2727
import Language.PureScript.Ide.Conversions
@@ -146,17 +146,17 @@ instance ToJSON ModuleImport where
146146
toJSON (ModuleImport mn P.Implicit qualifier) =
147147
object $ [ "module" .= mn
148148
, "importType" .= ("implicit" :: Text)
149-
] ++ fmap (\x -> "qualifier" .= x) (maybeToList qualifier)
150-
toJSON (ModuleImport mn (P.Explicit refs) _) =
151-
object [ "module" .= mn
152-
, "importType" .= ("explicit" :: Text)
153-
, "identifiers" .= (identifierFromDeclarationRef <$> refs)
154-
]
155-
toJSON (ModuleImport mn (P.Hiding refs) _) =
156-
object [ "module" .= mn
157-
, "importType" .= ("hiding" :: Text)
158-
, "identifiers" .= (identifierFromDeclarationRef <$> refs)
159-
]
149+
] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
150+
toJSON (ModuleImport mn (P.Explicit refs) qualifier) =
151+
object $ [ "module" .= mn
152+
, "importType" .= ("explicit" :: Text)
153+
, "identifiers" .= (identifierFromDeclarationRef <$> refs)
154+
] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
155+
toJSON (ModuleImport mn (P.Hiding refs) qualifier) =
156+
object $ [ "module" .= mn
157+
, "importType" .= ("hiding" :: Text)
158+
, "identifiers" .= (identifierFromDeclarationRef <$> refs)
159+
] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
160160

161161
identifierFromDeclarationRef :: P.DeclarationRef -> Text
162162
identifierFromDeclarationRef (P.TypeRef name _) = runProperNameT name

0 commit comments

Comments
 (0)