git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
[psc-ide] Return qualifier from explicit/hiding imports (#2317)
a84f7f3Nicholas Wolverson
psc-ide-server/PROTOCOL.md+33−8
@@ -68,7 +68,7 @@ The `complete` command looks up possible completions/corrections.
68
68
69 If no matcher is given every candidate, that passes the filters, is returned
69 If no matcher is given every candidate, that passes the filters, is returned
70 in no particular order.
70 in no particular order.
71−
71+
72```json
72```json
73{
73{
74 "command": "complete",
74 "command": "complete",
@@ -106,7 +106,7 @@ couldn't be extracted from a source file.
106```
106```
107
107
108
108
109−### CaseSplit
109+### CaseSplit
110
110
111The CaseSplit command takes a line of source code, an area in that line of code
111The CaseSplit command takes a line of source code, an area in that line of code
112and replaces it with all patterns for a given type. The parameter `annotations`
112and replaces it with all patterns for a given type. The parameter `annotations`
@@ -250,9 +250,9 @@ Example:
250 "importCommand": {
250 "importCommand": {
251 "importCommand": "addImport",
251 "importCommand": "addImport",
252 "identifier": "bind"
252 "identifier": "bind"
253− }
253+ }
254 }
254 }
255−}
255+}
256```
256```
257
257
258### Rebuild
258### Rebuild
@@ -381,7 +381,7 @@ The list commmand can also list the imports for a given file.
381
381
382The list import command returns a list of imports where imports are of the following form:
382The list import command returns a list of imports where imports are of the following form:
383
383
384−Implicit Import(`import Data.Array`):
384+Implicit Import (`import Data.Array`):
385```json
385```json
386[
386[
387 {
387 {
@@ -391,7 +391,7 @@ Implicit Import(`import Data.Array`):
391]
391]
392```
392```
393
393
394−Implicit qualified Import(`import qualified Data.Array as A`):
394+Implicit qualified Import (`import Data.Array as A`):
395```json
395```json
396[
396[
397 {
397 {
@@ -402,7 +402,7 @@ Implicit qualified Import(`import qualified Data.Array as A`):
402]
402]
403```
403```
404
404
405−Explicit Import(`import Data.Array (filter, filterM, join)`):
405+Explicit Import (`import Data.Array (filter, filterM, join)`):
406```json
406```json
407[
407[
408 {
408 {
@@ -413,7 +413,19 @@ Explicit Import(`import Data.Array (filter, filterM, join)`):
413]
413]
414```
414```
415
415
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+
416−Hiding Import(`import Data.Array hiding (filter, filterM, join)`):
428+Hiding Import (`import Data.Array hiding (filter, filterM, join)`):
417```json
429```json
418[
430[
419 {
431 {
@@ -423,6 +435,19 @@ Hiding Import(`import Data.Array hiding (filter, filterM, join)`):
423 }
435 }
424]
436]
425```
437```
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+
426### Cwd/Quit/Reset
451### Cwd/Quit/Reset
427`cwd` returns the working directory of the server(should be your project root).
452`cwd` returns the working directory of the server(should be your project root).
428
453
src/Language/PureScript/Ide/Types.hs+12−12
@@ -21,7 +21,7 @@ import Protolude
21
21
22import Control.Concurrent.STM
22import Control.Concurrent.STM
23import Data.Aeson
23import Data.Aeson
24−import Data.Map.Lazy as M
24+import qualified Data.Map.Lazy as M
25import qualified Language.PureScript.Errors.JSON as P
25import qualified Language.PureScript.Errors.JSON as P
26import qualified Language.PureScript as P
26import qualified Language.PureScript as P
27import Language.PureScript.Ide.Conversions
27import Language.PureScript.Ide.Conversions
@@ -146,17 +146,17 @@ instance ToJSON ModuleImport where
146 toJSON (ModuleImport mn P.Implicit qualifier) =
146 toJSON (ModuleImport mn P.Implicit qualifier) =
147 object $ [ "module" .= mn
147 object $ [ "module" .= mn
148 , "importType" .= ("implicit" :: Text)
148 , "importType" .= ("implicit" :: Text)
149− ] ++ fmap (\x -> "qualifier" .= x) (maybeToList qualifier)
149+ ] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
150− toJSON (ModuleImport mn (P.Explicit refs) _) =
150+ toJSON (ModuleImport mn (P.Explicit refs) qualifier) =
151− object [ "module" .= mn
151+ object $ [ "module" .= mn
152− , "importType" .= ("explicit" :: Text)
152+ , "importType" .= ("explicit" :: Text)
153− , "identifiers" .= (identifierFromDeclarationRef <$> refs)
153+ , "identifiers" .= (identifierFromDeclarationRef <$> refs)
154− ]
154+ ] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
155− toJSON (ModuleImport mn (P.Hiding refs) _) =
155+ toJSON (ModuleImport mn (P.Hiding refs) qualifier) =
156− object [ "module" .= mn
156+ object $ [ "module" .= mn
157− , "importType" .= ("hiding" :: Text)
157+ , "importType" .= ("hiding" :: Text)
158− , "identifiers" .= (identifierFromDeclarationRef <$> refs)
158+ , "identifiers" .= (identifierFromDeclarationRef <$> refs)
159− ]
159+ ] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
160
160
161identifierFromDeclarationRef :: P.DeclarationRef -> Text
161identifierFromDeclarationRef :: P.DeclarationRef -> Text
162identifierFromDeclarationRef (P.TypeRef name _) = runProperNameT name
162identifierFromDeclarationRef (P.TypeRef name _) = runProperNameT name