summaryrefslogtreecommitdiff
path: root/src/Language/GraphQL/Error.hs
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2020-07-08 08:16:14 +0200
committerEugen Wissner <belka@caraus.de>2020-07-08 08:17:55 +0200
commitc9e265f72c301a543091d58ec10863c66b279fd0 (patch)
treeffe05b502fc20ce163130b7e3d383da19d76af6d /src/Language/GraphQL/Error.hs
parentb2d473de8dac0f85f11a8f9985d1a9a4dfee03ab (diff)
downloadgraphql-c9e265f72c301a543091d58ec10863c66b279fd0.tar.gz
Return parser error location in a list
An error can have multiple locations which are returned in a listt with key "locations".
Diffstat (limited to 'src/Language/GraphQL/Error.hs')
-rw-r--r--src/Language/GraphQL/Error.hs13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/Language/GraphQL/Error.hs b/src/Language/GraphQL/Error.hs
index b36be9c..3dbc696 100644
--- a/src/Language/GraphQL/Error.hs
+++ b/src/Language/GraphQL/Error.hs
@@ -22,7 +22,7 @@ import qualified Data.Sequence as Seq
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Void (Void)
-import Language.GraphQL.AST.Document (Name)
+import Language.GraphQL.AST (Location(..), Name)
import Language.GraphQL.Execute.Coerce
import Language.GraphQL.Type.Schema
import Prelude hiding (null)
@@ -51,9 +51,9 @@ parseError ParseErrorBundle{..} =
$ foldl go (Seq.empty, bundlePosState) bundleErrors
where
errorObject s SourcePos{..} = Error
- (Text.pack $ init $ parseErrorTextPretty s)
- (unPos' sourceLine)
- (unPos' sourceColumn)
+ { message = Text.pack $ init $ parseErrorTextPretty s
+ , locations = [Location (unPos' sourceLine) (unPos' sourceColumn)]
+ }
unPos' = fromIntegral . unPos
go (result, state) x =
let (_, newState) = reachOffset (errorOffset x) state
@@ -71,7 +71,7 @@ addErr v = modify appender
appender resolution@Resolution{..} = resolution{ errors = errors |> v }
makeErrorMessage :: Text -> Error
-makeErrorMessage s = Error s 0 0
+makeErrorMessage s = Error s []
-- | Constructs a response object containing only the error with the given
-- message.
@@ -85,8 +85,7 @@ addErrMsg errorMessage = (addErr . makeErrorMessage) errorMessage >> pure null
-- | @GraphQL@ error.
data Error = Error
{ message :: Text
- , line :: Word
- , column :: Word
+ , locations :: [Location]
} deriving (Eq, Show)
-- | The server\'s response describes the result of executing the requested