diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-09-19 18:18:26 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-09-19 18:18:26 +0200 |
| commit | 21a7d9cce421352e837945a2334e7ccf10160d8c (patch) | |
| tree | 5fa09a68cd7e5f7ab9aa1db082f74093bcbeb52c /src/Language/GraphQL/AST | |
| parent | 9a08aa5de73e225a9a76017aee4886ce7f6eccec (diff) | |
| download | graphql-21a7d9cce421352e837945a2334e7ccf10160d8c.tar.gz | |
Validate variable names are unique
Diffstat (limited to 'src/Language/GraphQL/AST')
| -rw-r--r-- | src/Language/GraphQL/AST/Document.hs | 3 | ||||
| -rw-r--r-- | src/Language/GraphQL/AST/Encoder.hs | 2 | ||||
| -rw-r--r-- | src/Language/GraphQL/AST/Parser.hs | 13 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/Language/GraphQL/AST/Document.hs b/src/Language/GraphQL/AST/Document.hs index 5d21ca0..b03b905 100644 --- a/src/Language/GraphQL/AST/Document.hs +++ b/src/Language/GraphQL/AST/Document.hs @@ -253,7 +253,8 @@ data ObjectField a = ObjectField Name a -- -- Variables are usually passed along with the query, but not in the query -- itself. They make queries reusable. -data VariableDefinition = VariableDefinition Name Type (Maybe ConstValue) +data VariableDefinition = + VariableDefinition Name Type (Maybe ConstValue) Location deriving (Eq, Show) -- ** Type References diff --git a/src/Language/GraphQL/AST/Encoder.hs b/src/Language/GraphQL/AST/Encoder.hs index fcd415e..e88dcd9 100644 --- a/src/Language/GraphQL/AST/Encoder.hs +++ b/src/Language/GraphQL/AST/Encoder.hs @@ -95,7 +95,7 @@ variableDefinitions formatter = parensCommas formatter $ variableDefinition formatter variableDefinition :: Formatter -> VariableDefinition -> Lazy.Text -variableDefinition formatter (VariableDefinition var ty defaultValue') +variableDefinition formatter (VariableDefinition var ty defaultValue' _) = variable var <> eitherFormat formatter ": " ":" <> type' ty diff --git a/src/Language/GraphQL/AST/Parser.hs b/src/Language/GraphQL/AST/Parser.hs index 62a247d..18ffd2a 100644 --- a/src/Language/GraphQL/AST/Parser.hs +++ b/src/Language/GraphQL/AST/Parser.hs @@ -492,12 +492,13 @@ variableDefinitions = listOptIn parens variableDefinition <?> "VariableDefinitions" variableDefinition :: Parser VariableDefinition -variableDefinition = VariableDefinition - <$> variable - <* colon - <*> type' - <*> defaultValue - <?> "VariableDefinition" +variableDefinition = label "VariableDefinition" $ do + location <- getLocation + variableName <- variable + colon + variableType <- type' + variableValue <- defaultValue + pure $ VariableDefinition variableName variableType variableValue location variable :: Parser Name variable = dollar *> name <?> "Variable" |
