diff options
| author | Eugen Wissner <belka@caraus.de> | 2019-11-22 08:00:50 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2019-11-22 08:00:50 +0100 |
| commit | 625d7100ca123e5aff265fb843ec4979d76a9f7d (patch) | |
| tree | 22cb595ea2dd944789a5144eb373fe7be8190f11 /src/Language/GraphQL/AST | |
| parent | 73e21661b413192c26a539141a44b0c25e8c2aa9 (diff) | |
| download | graphql-625d7100ca123e5aff265fb843ec4979d76a9f7d.tar.gz | |
Try type parsers in a different order
Diffstat (limited to 'src/Language/GraphQL/AST')
| -rw-r--r-- | src/Language/GraphQL/AST/Lexer.hs | 2 | ||||
| -rw-r--r-- | src/Language/GraphQL/AST/Parser.hs | 6 | ||||
| -rw-r--r-- | src/Language/GraphQL/AST/Transform.hs | 7 |
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 |
