@@ -20,10 +20,10 @@ module Language.PureScript.Ide.Util
2020 , unwrapPositioned
2121 , unwrapPositionedRef
2222 , completionFromMatch
23− , infoFromMatch
2423 , encodeT
2524 , decodeT
2625 , discardAnn
26+ , withEmptyAnn
2727 , module Language.PureScript.Ide.Conversions
2828 ) where
2929
@@ -48,25 +48,35 @@ identifierFromIdeDeclaration d = case d of
4848discardAnn :: IdeDeclarationAnn -> IdeDeclaration
4949discardAnn (IdeDeclarationAnn _ d) = d
5050
51+withEmptyAnn :: IdeDeclaration -> IdeDeclarationAnn
52+withEmptyAnn = IdeDeclarationAnn emptyAnn
53+
5154unwrapMatch :: Match a -> a
5255unwrapMatch (Match (_, ed)) = ed
5356
54−completionFromMatch :: Match IdeDeclaration -> Completion
55−completionFromMatch = Completion . completionFromMatch'
56−
57−completionFromMatch' :: Match IdeDeclaration -> (Text, Text, Text)
58−completionFromMatch' (Match (m', d)) = case d of
59− IdeValue name type' -> (m, runIdentT name, prettyTypeT type')
60− IdeType name kind -> (m, runProperNameT name, toS (P.prettyPrintKind kind))
61− IdeTypeSynonym name kind -> (m, runProperNameT name, prettyTypeT kind)
62− IdeDataConstructor name _ type' -> (m, runProperNameT name, prettyTypeT type')
63− IdeTypeClass name -> (m, runProperNameT name, "class")
64− IdeValueOperator op ref precedence associativity ->
65− (m, runOpNameT op, showFixity precedence associativity ref op)
66− IdeTypeOperator op ref precedence associativity ->
67− (m, runOpNameT op, showFixity precedence associativity ref op)
57+completionFromMatch :: Match IdeDeclarationAnn -> Completion
58+completionFromMatch (Match (m, IdeDeclarationAnn ann decl)) =
59+ Completion {..}
6860 where
69− m = runModuleNameT m'
61+ (complIdentifier, complExpandedType) = case decl of
62+ IdeValue name type' -> (runIdentT name, prettyTypeT type')
63+ IdeType name kind -> (runProperNameT name, toS (P.prettyPrintKind kind))
64+ IdeTypeSynonym name kind -> (runProperNameT name, prettyTypeT kind)
65+ IdeDataConstructor name _ type' -> (runProperNameT name, prettyTypeT type')
66+ IdeTypeClass name -> (runProperNameT name, "class")
67+ IdeValueOperator op ref precedence associativity ->
68+ (runOpNameT op, showFixity precedence associativity ref op)
69+ IdeTypeOperator op ref precedence associativity ->
70+ (runOpNameT op, showFixity precedence associativity ref op)
71+
72+ complModule = runModuleNameT m
73+
74+ complType = maybe complExpandedType prettyTypeT (annTypeAnnotation ann)
75+
76+ complLocation = annLocation ann
77+
78+ complDocumentation = Nothing
79+
7080 showFixity p a r o =
7181 let asso = case a of
7282 P.Infix -> "infix"
@@ -74,12 +84,6 @@ completionFromMatch' (Match (m', d)) = case d of
7484 P.Infixr -> "infixr"
7585 in T.unwords [asso, show p, r, "as", runOpNameT o]
7686
77−infoFromMatch :: Match IdeDeclarationAnn -> Info
78−infoFromMatch (Match (m, IdeDeclarationAnn ann d)) =
79− Info (a, b, maybe c prettyTypeT (annTypeAnnotation ann), annLocation ann)
80− where
81− (a, b, c) = completionFromMatch' (Match (m, d))
82−
8387encodeT :: (ToJSON a) => a -> Text
8488encodeT = toS . decodeUtf8 . encode
8589
@@ -87,9 +91,9 @@ decodeT :: (FromJSON a) => Text -> Maybe a
8791decodeT = decode . encodeUtf8 . toS
8892
8993unwrapPositioned :: P.Declaration -> P.Declaration
90−unwrapPositioned (P.PositionedDeclaration _ _ x) = x
94+unwrapPositioned (P.PositionedDeclaration _ _ x) = unwrapPositioned x
9195unwrapPositioned x = x
9296
9397unwrapPositionedRef :: P.DeclarationRef -> P.DeclarationRef
94−unwrapPositionedRef (P.PositionedDeclarationRef _ _ x) = x
98+unwrapPositionedRef (P.PositionedDeclarationRef _ _ x) = unwrapPositionedRef x
9599unwrapPositionedRef x = x