Fix some issues with directive definitions

I found some issues with directive definitions:

- I couldn't use `on FIELD_DEFINITION`, I believe because `FIELD` was parsed
  first in `executableDirectiveLocation`. I've combined both
  `executableDirectiveLocation` and `typetypeSystemDirectiveLocation` into one
  function which can reorder them to ensure every directive location gets a fair
  chance at parsing.

Not actually to do with directives, some literals weren't being parsed
correctly.

- The GraphQL spec defines list to be `[]` or `[Value]`, but empty literal lists
  weren't being parsed correctly because of using `some` instead of `many`.

- The GraphQL spec defines objects to be `{}` or `{Name: Value}`, but empty
  literal objects had the same issue.
This commit is contained in:
Ben Sinclair
2021-02-21 02:06:27 +11:00
parent 10e4d64052
commit ca0f0bd32d
3 changed files with 80 additions and 35 deletions

View File

@ -11,6 +11,10 @@ and this project adheres to
- `Language.GraphQL.Execute.OrderedMap` is a map data structure, that preserves
insertion order.
### Fixed
- Parser now accepts empty lists and objects.
- Parser now accepts all directive locations.
## [0.11.1.0] - 2021-02-07
### Added
- `Validate.Rules`:
@ -109,7 +113,7 @@ and this project adheres to
`locations`.
- Parsing comments in the front of definitions.
- Some missing labels were added to the parsers, some labels were fixed to
refer to the AST nodes being parsed.
refer to the AST nodes being parsed.
### Added
- `AST` reexports `AST.Parser`.