diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-09-24 05:47:31 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-09-24 05:47:31 +0200 |
| commit | 9bfa2aa7e8a72c9cc08743152a96d18312625712 (patch) | |
| tree | 83455a5432e0430fa6048b13ca2e740cd5017ec4 /src/Language/GraphQL/AST | |
| parent | e9a94147fb5cf6b871268a373fc211cfa50da2fc (diff) | |
| download | graphql-9bfa2aa7e8a72c9cc08743152a96d18312625712.tar.gz | |
Validate input fields have unique names
Diffstat (limited to 'src/Language/GraphQL/AST')
| -rw-r--r-- | src/Language/GraphQL/AST/Document.hs | 2 | ||||
| -rw-r--r-- | src/Language/GraphQL/AST/Encoder.hs | 6 | ||||
| -rw-r--r-- | src/Language/GraphQL/AST/Parser.hs | 11 |
3 files changed, 10 insertions, 9 deletions
diff --git a/src/Language/GraphQL/AST/Document.hs b/src/Language/GraphQL/AST/Document.hs index 1875e49..c870580 100644 --- a/src/Language/GraphQL/AST/Document.hs +++ b/src/Language/GraphQL/AST/Document.hs @@ -236,7 +236,7 @@ data ConstValue -- | Key-value pair. -- -- A list of 'ObjectField's represents a GraphQL object type. -data ObjectField a = ObjectField Name a +data ObjectField a = ObjectField Name a Location deriving (Eq, Show) -- ** Variables diff --git a/src/Language/GraphQL/AST/Encoder.hs b/src/Language/GraphQL/AST/Encoder.hs index 176a897..011527a 100644 --- a/src/Language/GraphQL/AST/Encoder.hs +++ b/src/Language/GraphQL/AST/Encoder.hs @@ -220,8 +220,8 @@ fromConstValue (ConstEnum x) = Enum x fromConstValue (ConstList x) = List $ fromConstValue <$> x fromConstValue (ConstObject x) = Object $ fromConstObjectField <$> x where - fromConstObjectField (ObjectField key value') = - ObjectField key $ fromConstValue value' + fromConstObjectField (ObjectField key value' location) = + ObjectField key (fromConstValue value') location booleanValue :: Bool -> Lazy.Text booleanValue True = "true" @@ -290,7 +290,7 @@ objectValue formatter = intercalate $ objectField formatter . fmap f objectField :: Formatter -> ObjectField Value -> Lazy.Text -objectField formatter (ObjectField name value') = +objectField formatter (ObjectField name value' _) = Lazy.Text.fromStrict name <> colon formatter <> value formatter value' -- | Converts a 'Type' a type into a string. diff --git a/src/Language/GraphQL/AST/Parser.hs b/src/Language/GraphQL/AST/Parser.hs index 29eee79..eb82f38 100644 --- a/src/Language/GraphQL/AST/Parser.hs +++ b/src/Language/GraphQL/AST/Parser.hs @@ -487,11 +487,12 @@ nullValue :: Parser Text nullValue = symbol "null" <?> "NullValue" objectField :: Parser a -> Parser (ObjectField a) -objectField valueParser = ObjectField - <$> name - <* colon - <*> valueParser - <?> "ObjectField" +objectField valueParser = label "ObjectField" $ do + location <- getLocation + fieldName <- name + colon + fieldValue <- valueParser + pure $ ObjectField fieldName fieldValue location variableDefinitions :: Parser [VariableDefinition] variableDefinitions = listOptIn parens variableDefinition |
