summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2019-11-22 08:00:50 +0100
committerEugen Wissner <belka@caraus.de>2019-11-22 08:00:50 +0100
commit625d7100ca123e5aff265fb843ec4979d76a9f7d (patch)
tree22cb595ea2dd944789a5144eb373fe7be8190f11 /src
parent73e21661b413192c26a539141a44b0c25e8c2aa9 (diff)
downloadgraphql-625d7100ca123e5aff265fb843ec4979d76a9f7d.tar.gz
Try type parsers in a different order
Diffstat (limited to 'src')
-rw-r--r--src/Language/GraphQL/AST/Lexer.hs2
-rw-r--r--src/Language/GraphQL/AST/Parser.hs6
-rw-r--r--src/Language/GraphQL/AST/Transform.hs7
3 files changed, 6 insertions, 9 deletions
diff --git a/src/Language/GraphQL/AST/Lexer.hs b/src/Language/GraphQL/AST/Lexer.hs
index f4111a9..e4d64ca 100644
--- a/src/Language/GraphQL/AST/Lexer.hs
+++ b/src/Language/GraphQL/AST/Lexer.hs
@@ -3,7 +3,7 @@
-- | This module defines a bunch of small parsers used to parse individual
-- lexemes.
-module Language.GraphQL.AST.Lexer
+module Language.GraphQL.AST.Lexer
( Parser
, amp
, at
diff --git a/src/Language/GraphQL/AST/Parser.hs b/src/Language/GraphQL/AST/Parser.hs
index a5b6681..1505615 100644
--- a/src/Language/GraphQL/AST/Parser.hs
+++ b/src/Language/GraphQL/AST/Parser.hs
@@ -152,9 +152,9 @@ defaultValue = equals *> value
-- * Input Types
type_ :: Parser Type
-type_ = try (TypeNamed <$> name <* but "!")
- <|> TypeList <$> brackets type_
- <|> TypeNonNull <$> nonNullType
+type_ = try (TypeNonNull <$> nonNullType)
+ <|> TypeList <$> brackets type_
+ <|> TypeNamed <$> name
<?> "type_ error!"
nonNullType :: Parser NonNullType
diff --git a/src/Language/GraphQL/AST/Transform.hs b/src/Language/GraphQL/AST/Transform.hs
index 0dfc5e5..95cdfbb 100644
--- a/src/Language/GraphQL/AST/Transform.hs
+++ b/src/Language/GraphQL/AST/Transform.hs
@@ -13,12 +13,10 @@ import Control.Monad (foldM, unless)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Reader (ReaderT, ask, runReaderT)
import Control.Monad.Trans.State (StateT, evalStateT, gets, modify)
-import Data.Foldable (toList)
import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as HashMap
import qualified Data.List.NonEmpty as NonEmpty
import Data.Sequence (Seq, (<|), (><))
-import qualified Data.Sequence as Sequence
import qualified Language.GraphQL.AST as Full
import qualified Language.GraphQL.AST.Core as Core
import qualified Language.GraphQL.Schema as Schema
@@ -99,10 +97,9 @@ collectFragments = do
fragmentDefinition ::
Full.FragmentDefinition ->
TransformT (Seq Core.Selection)
-fragmentDefinition (Full.FragmentDefinition name _tc _dirs sels) = do
+fragmentDefinition (Full.FragmentDefinition name _tc _dirs selections) = do
modify deleteFragmentDefinition
- selections <- traverse selection sels
- let newValue = either id pure =<< Sequence.fromList (toList selections)
+ newValue <- appendSelection selections
modify $ insertFragment newValue
liftJust newValue
where