Validate variable names are unique

This commit is contained in:
2020-09-19 18:18:26 +02:00
parent 9a08aa5de7
commit 21a7d9cce4
9 changed files with 59 additions and 17 deletions

View File

@ -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

View File

@ -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

View File

@ -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"