Fix broken behavior for several options on the same node (#105)
## Summary: Previously, we actually allowed you to put several genqlient directives on the same node, but the semantics were undocumented (and somewhat confusing, when it comes to `typename`). In order to support directives on input options, we're actually going to be encouraging this usage (see notes in #14), so it's time to fix it. To avoid confusion, I just had conflicting directives be an error, rather than defining which one "wins". The same applies to specifying the same option several times in one directive. I also fixed two small bugs: - `typename` on an operation would incorrectly cascade down to all input types in a query (causing conflicts). - directive parse errors had useless positions, now they're correct ## Test plan: make check Author: benjaminjkraft Reviewers: StevenACoffman, dnerdy, aberkan, jvoll, mahtabsabet, MiguelCastillo Required Reviewers: Approved By: StevenACoffman, dnerdy Checks: ⌛ Test (1.17), ⌛ Test (1.16), ⌛ Test (1.15), ⌛ Test (1.14), ⌛ Lint, ⌛ Test (1.17), ⌛ Test (1.16), ⌛ Test (1.15), ⌛ Test (1.14), ⌛ Lint Pull Request URL: https://github.com/Khan/genqlient/pull/105
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# @genqlient(typename: "MyMultipleDirectivesResponse")
|
||||
# @genqlient(omitempty: true)
|
||||
# @genqlient(pointer: true)
|
||||
query MultipleDirectives(
|
||||
# @genqlient(pointer: false)
|
||||
# @genqlient(typename: "MyInput")
|
||||
$query: UserQueryInput,
|
||||
$queries: [UserQueryInput],
|
||||
) {
|
||||
user(query: $query) { id }
|
||||
users(query: $queries) { id }
|
||||
}
|
||||
Reference in New Issue
Block a user