Skip to content

Commit 9014b04

Browse files
authored
Merge pull request #455 from codedownio/custom-error-codes
Handle custom error codes in ResponseError + support spec 3.17
2 parents 6fbe066 + fc46e26 commit 9014b04

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

lsp-types/src/Language/LSP/Types/Message.hs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ import Data.Kind
6060
import Data.Aeson
6161
import Data.Aeson.TH
6262
import Data.Text (Text)
63+
import Data.Scientific
6364
import Data.String
6465
import GHC.Generics
6566

@@ -318,6 +319,9 @@ data ErrorCode = ParseError
318319
| UnknownErrorCode
319320
| RequestCancelled
320321
| ContentModified
322+
| ServerCancelled
323+
| RequestFailed
324+
| ErrorCodeCustom Int32
321325
-- ^ Note: server error codes are reserved from -32099 to -32000
322326
deriving (Read,Show,Eq)
323327

@@ -333,6 +337,9 @@ instance ToJSON ErrorCode where
333337
toJSON UnknownErrorCode = Number (-32001)
334338
toJSON RequestCancelled = Number (-32800)
335339
toJSON ContentModified = Number (-32801)
340+
toJSON ServerCancelled = Number (-32802)
341+
toJSON RequestFailed = Number (-32803)
342+
toJSON (ErrorCodeCustom n) = Number (fromIntegral n)
336343

337344
instance FromJSON ErrorCode where
338345
parseJSON (Number (-32700)) = pure ParseError
@@ -346,7 +353,12 @@ instance FromJSON ErrorCode where
346353
parseJSON (Number (-32001)) = pure UnknownErrorCode
347354
parseJSON (Number (-32800)) = pure RequestCancelled
348355
parseJSON (Number (-32801)) = pure ContentModified
349-
parseJSON _ = fail "ErrorCode"
356+
parseJSON (Number (-32802)) = pure ServerCancelled
357+
parseJSON (Number (-32803)) = pure RequestFailed
358+
parseJSON (Number n ) = case toBoundedInteger n of
359+
Just i -> pure (ErrorCodeCustom i)
360+
Nothing -> fail "Couldn't convert ErrorCode to bounded integer."
361+
parseJSON _ = fail "Couldn't parse ErrorCode"
350362

351363
-- -------------------------------------
352364

0 commit comments

Comments
 (0)